From 877b451f4bbeddc7260518b127ec595a9ac30c8d Mon Sep 17 00:00:00 2001 From: Mrking <782276617@qq.com> Date: Sun, 11 Aug 2024 09:31:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AE=A2=E6=88=B7=E8=B5=84?= =?UTF-8?q?=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../mybatis/core/dataobject/BaseDO.java | 2 +- .../spring-configuration-metadata.json | 30 -- .../codegen/java/controller/controller.vm | 233 ----------- .../codegen/java/controller/vo/listReqVO.vm | 45 --- .../codegen/java/controller/vo/pageReqVO.vm | 47 --- .../codegen/java/controller/vo/respVO.vm | 53 --- .../codegen/java/controller/vo/saveReqVO.vm | 64 --- .../target/classes/codegen/java/dal/do.vm | 52 --- .../target/classes/codegen/java/dal/do_sub.vm | 49 --- .../target/classes/codegen/java/dal/mapper.vm | 82 ---- .../classes/codegen/java/dal/mapper.xml.vm | 12 - .../classes/codegen/java/dal/mapper_sub.vm | 51 --- .../classes/codegen/java/enums/errorcode.vm | 22 -- .../classes/codegen/java/service/service.vm | 147 ------- .../codegen/java/service/serviceImpl.vm | 350 ---------------- .../classes/codegen/java/test/serviceTest.vm | 168 -------- .../target/classes/codegen/sql/h2.vm | 37 -- .../target/classes/codegen/sql/sql.vm | 28 -- .../target/classes/codegen/vue/api/api.js.vm | 141 ------- .../vue/views/components/form_sub_erp.vue.vm | 205 ---------- .../views/components/form_sub_inner.vue.vm | 2 - .../views/components/form_sub_normal.vue.vm | 347 ---------------- .../vue/views/components/list_sub_erp.vue.vm | 165 -------- .../views/components/list_sub_inner.vue.vm | 4 - .../classes/codegen/vue/views/form.vue.vm | 320 --------------- .../classes/codegen/vue/views/index.vue.vm | 340 ---------------- .../target/classes/codegen/vue3/api/api.ts.vm | 115 ------ .../vue3/views/components/form_sub_erp.vue.vm | 205 ---------- .../views/components/form_sub_inner.vue.vm | 2 - .../views/components/form_sub_normal.vue.vm | 362 ----------------- .../vue3/views/components/list_sub_erp.vue.vm | 184 --------- .../views/components/list_sub_inner.vue.vm | 4 - .../classes/codegen/vue3/views/form.vue.vm | 301 -------------- .../classes/codegen/vue3/views/index.vue.vm | 374 ------------------ .../classes/codegen/vue3_schema/api/api.ts.vm | 46 --- .../codegen/vue3_schema/views/data.ts.vm | 124 ------ .../codegen/vue3_schema/views/form.vue.vm | 65 --- .../codegen/vue3_schema/views/index.vue.vm | 85 ---- .../classes/codegen/vue3_vben/api/api.ts.vm | 32 -- .../codegen/vue3_vben/views/data.ts.vm | 236 ----------- .../codegen/vue3_vben/views/form.vue.vm | 58 --- .../codegen/vue3_vben/views/index.vue.vm | 91 ----- .../target/classes/file/erweima.jpg | Bin 18385 -> 0 bytes .../convert/codegen/CodegenConvertImpl.java | 108 ----- .../convert/config/ConfigConvertImpl.java | 85 ---- .../convert/file/FileConfigConvertImpl.java | 29 -- .../infra/convert/redis/RedisConvertImpl.java | 11 - .../test-classes/application-unit-test.yaml | 48 --- .../test-classes/codegen/table/category.json | 52 --- .../test-classes/codegen/table/contact.json | 143 ------- .../test-classes/codegen/table/student.json | 134 ------- .../test-classes/codegen/table/teacher.json | 143 ------- .../windows10/vue2_master_erp/assert.json | 73 ---- .../java/ErrorCodeConstants_手动操作 | 6 - .../java/InfraStudentContactDO | 71 ---- .../java/InfraStudentContactMapper | 30 -- .../java/InfraStudentController | 183 --------- .../vue2_master_erp/java/InfraStudentDO | 67 ---- .../vue2_master_erp/java/InfraStudentMapper | 30 -- .../java/InfraStudentPageReqVO | 34 -- .../vue2_master_erp/java/InfraStudentRespVO | 60 --- .../java/InfraStudentSaveReqVO | 52 --- .../vue2_master_erp/java/InfraStudentService | 139 ------- .../java/InfraStudentServiceImpl | 180 --------- .../java/InfraStudentServiceImplTest | 146 ------- .../java/InfraStudentTeacherDO | 71 ---- .../java/InfraStudentTeacherMapper | 30 -- .../windows10/vue2_master_erp/js/index | 141 ------- .../codegen/windows10/vue2_master_erp/sql/h2 | 17 - .../codegen/windows10/vue2_master_erp/sql/sql | 55 --- .../vue2_master_erp/vue/StudentContactForm | 151 ------- .../vue2_master_erp/vue/StudentContactList | 129 ------ .../windows10/vue2_master_erp/vue/StudentForm | 149 ------- .../vue2_master_erp/vue/StudentTeacherForm | 151 ------- .../vue2_master_erp/vue/StudentTeacherList | 129 ------ .../windows10/vue2_master_erp/vue/index | 233 ----------- .../vue2_master_erp/xml/InfraStudentMapper | 12 - .../windows10/vue2_master_inner/assert.json | 73 ---- .../java/ErrorCodeConstants_手动操作 | 3 - .../java/InfraStudentContactDO | 71 ---- .../java/InfraStudentContactMapper | 28 -- .../java/InfraStudentController | 117 ------ .../vue2_master_inner/java/InfraStudentDO | 67 ---- .../vue2_master_inner/java/InfraStudentMapper | 30 -- .../java/InfraStudentPageReqVO | 34 -- .../vue2_master_inner/java/InfraStudentRespVO | 60 --- .../java/InfraStudentSaveReqVO | 58 --- .../java/InfraStudentService | 77 ---- .../java/InfraStudentServiceImpl | 147 ------- .../java/InfraStudentServiceImplTest | 146 ------- .../java/InfraStudentTeacherDO | 71 ---- .../java/InfraStudentTeacherMapper | 28 -- .../windows10/vue2_master_inner/js/index | 74 ---- .../windows10/vue2_master_inner/sql/h2 | 17 - .../windows10/vue2_master_inner/sql/sql | 55 --- .../vue2_master_inner/vue/StudentContactForm | 177 --------- .../vue2_master_inner/vue/StudentContactList | 89 ----- .../vue2_master_inner/vue/StudentForm | 180 --------- .../vue2_master_inner/vue/StudentTeacherForm | 127 ------ .../vue2_master_inner/vue/StudentTeacherList | 93 ----- .../windows10/vue2_master_inner/vue/index | 222 ----------- .../vue2_master_inner/xml/InfraStudentMapper | 12 - .../windows10/vue2_master_normal/assert.json | 67 ---- .../java/ErrorCodeConstants_手动操作 | 3 - .../java/InfraStudentContactDO | 71 ---- .../java/InfraStudentContactMapper | 28 -- .../java/InfraStudentController | 117 ------ .../vue2_master_normal/java/InfraStudentDO | 67 ---- .../java/InfraStudentMapper | 30 -- .../java/InfraStudentPageReqVO | 34 -- .../java/InfraStudentRespVO | 60 --- .../java/InfraStudentSaveReqVO | 58 --- .../java/InfraStudentService | 77 ---- .../java/InfraStudentServiceImpl | 147 ------- .../java/InfraStudentServiceImplTest | 146 ------- .../java/InfraStudentTeacherDO | 71 ---- .../java/InfraStudentTeacherMapper | 28 -- .../windows10/vue2_master_normal/js/index | 74 ---- .../windows10/vue2_master_normal/sql/h2 | 17 - .../windows10/vue2_master_normal/sql/sql | 55 --- .../vue2_master_normal/vue/StudentContactForm | 177 --------- .../vue2_master_normal/vue/StudentForm | 180 --------- .../vue2_master_normal/vue/StudentTeacherForm | 127 ------ .../windows10/vue2_master_normal/vue/index | 205 ---------- .../vue2_master_normal/xml/InfraStudentMapper | 12 - .../codegen/windows10/vue2_one/assert.json | 49 --- .../vue2_one/java/ErrorCodeConstants_手动操作 | 3 - .../vue2_one/java/InfraStudentController | 95 ----- .../windows10/vue2_one/java/InfraStudentDO | 67 ---- .../vue2_one/java/InfraStudentMapper | 30 -- .../vue2_one/java/InfraStudentPageReqVO | 34 -- .../vue2_one/java/InfraStudentRespVO | 60 --- .../vue2_one/java/InfraStudentSaveReqVO | 50 --- .../vue2_one/java/InfraStudentService | 55 --- .../vue2_one/java/InfraStudentServiceImpl | 74 ---- .../vue2_one/java/InfraStudentServiceImplTest | 146 ------- .../codegen/windows10/vue2_one/js/index | 53 --- .../codegen/windows10/vue2_one/sql/h2 | 17 - .../codegen/windows10/vue2_one/sql/sql | 55 --- .../windows10/vue2_one/vue/StudentForm | 149 ------- .../codegen/windows10/vue2_one/vue/index | 205 ---------- .../codegen/windows10/vue2_tree/assert.json | 49 --- .../java/ErrorCodeConstants_手动操作 | 8 - .../vue2_tree/java/InfraCategoryController | 94 ----- .../windows10/vue2_tree/java/InfraCategoryDO | 39 -- .../vue2_tree/java/InfraCategoryListReqVO | 15 - .../vue2_tree/java/InfraCategoryMapper | 34 -- .../vue2_tree/java/InfraCategoryRespVO | 26 -- .../vue2_tree/java/InfraCategorySaveReqVO | 24 -- .../vue2_tree/java/InfraCategoryService | 55 --- .../vue2_tree/java/InfraCategoryServiceImpl | 136 ------- .../java/InfraCategoryServiceImplTest | 129 ------ .../codegen/windows10/vue2_tree/js/index | 53 --- .../codegen/windows10/vue2_tree/sql/h2 | 10 - .../codegen/windows10/vue2_tree/sql/sql | 55 --- .../windows10/vue2_tree/vue/CategoryForm | 130 ------ .../codegen/windows10/vue2_tree/vue/index | 161 -------- .../vue2_tree/xml/InfraCategoryMapper | 12 - .../windows10/vue3_master_erp/assert.json | 73 ---- .../java/ErrorCodeConstants_手动操作 | 6 - .../java/InfraStudentContactDO | 71 ---- .../java/InfraStudentContactMapper | 30 -- .../java/InfraStudentController | 183 --------- .../vue3_master_erp/java/InfraStudentDO | 67 ---- .../vue3_master_erp/java/InfraStudentMapper | 30 -- .../java/InfraStudentPageReqVO | 34 -- .../vue3_master_erp/java/InfraStudentRespVO | 60 --- .../java/InfraStudentSaveReqVO | 52 --- .../vue3_master_erp/java/InfraStudentService | 139 ------- .../java/InfraStudentServiceImpl | 180 --------- .../java/InfraStudentServiceImplTest | 146 ------- .../java/InfraStudentTeacherDO | 71 ---- .../java/InfraStudentTeacherMapper | 30 -- .../codegen/windows10/vue3_master_erp/sql/h2 | 17 - .../codegen/windows10/vue3_master_erp/sql/sql | 55 --- .../windows10/vue3_master_erp/ts/index | 95 ----- .../vue3_master_erp/vue/StudentContactForm | 155 -------- .../vue3_master_erp/vue/StudentContactList | 146 ------- .../windows10/vue3_master_erp/vue/StudentForm | 152 ------- .../vue3_master_erp/vue/StudentTeacherForm | 155 -------- .../vue3_master_erp/vue/StudentTeacherList | 146 ------- .../windows10/vue3_master_erp/vue/index | 278 ------------- .../vue3_master_erp/xml/InfraStudentMapper | 12 - .../windows10/vue3_master_inner/assert.json | 73 ---- .../java/ErrorCodeConstants_手动操作 | 3 - .../java/InfraStudentContactDO | 71 ---- .../java/InfraStudentContactMapper | 28 -- .../java/InfraStudentController | 117 ------ .../vue3_master_inner/java/InfraStudentDO | 67 ---- .../vue3_master_inner/java/InfraStudentMapper | 30 -- .../java/InfraStudentPageReqVO | 34 -- .../vue3_master_inner/java/InfraStudentRespVO | 60 --- .../java/InfraStudentSaveReqVO | 58 --- .../java/InfraStudentService | 77 ---- .../java/InfraStudentServiceImpl | 147 ------- .../java/InfraStudentServiceImplTest | 146 ------- .../java/InfraStudentTeacherDO | 71 ---- .../java/InfraStudentTeacherMapper | 28 -- .../windows10/vue3_master_inner/sql/h2 | 17 - .../windows10/vue3_master_inner/sql/sql | 55 --- .../windows10/vue3_master_inner/ts/index | 57 --- .../vue3_master_inner/vue/StudentContactForm | 174 -------- .../vue3_master_inner/vue/StudentContactList | 72 ---- .../vue3_master_inner/vue/StudentForm | 184 --------- .../vue3_master_inner/vue/StudentTeacherForm | 122 ------ .../vue3_master_inner/vue/StudentTeacherList | 76 ---- .../windows10/vue3_master_inner/vue/index | 267 ------------- .../vue3_master_inner/xml/InfraStudentMapper | 12 - .../windows10/vue3_master_normal/assert.json | 67 ---- .../java/ErrorCodeConstants_手动操作 | 3 - .../java/InfraStudentContactDO | 71 ---- .../java/InfraStudentContactMapper | 28 -- .../java/InfraStudentController | 117 ------ .../vue3_master_normal/java/InfraStudentDO | 67 ---- .../java/InfraStudentMapper | 30 -- .../java/InfraStudentPageReqVO | 34 -- .../java/InfraStudentRespVO | 60 --- .../java/InfraStudentSaveReqVO | 58 --- .../java/InfraStudentService | 77 ---- .../java/InfraStudentServiceImpl | 147 ------- .../java/InfraStudentServiceImplTest | 146 ------- .../java/InfraStudentTeacherDO | 71 ---- .../java/InfraStudentTeacherMapper | 28 -- .../windows10/vue3_master_normal/sql/h2 | 17 - .../windows10/vue3_master_normal/sql/sql | 55 --- .../windows10/vue3_master_normal/ts/index | 57 --- .../vue3_master_normal/vue/StudentContactForm | 174 -------- .../vue3_master_normal/vue/StudentForm | 184 --------- .../vue3_master_normal/vue/StudentTeacherForm | 122 ------ .../vue3_master_normal/xml/InfraStudentMapper | 12 - .../codegen/windows10/vue3_one/assert.json | 49 --- .../vue3_one/java/ErrorCodeConstants_手动操作 | 3 - .../vue3_one/java/InfraStudentController | 95 ----- .../windows10/vue3_one/java/InfraStudentDO | 67 ---- .../vue3_one/java/InfraStudentMapper | 30 -- .../vue3_one/java/InfraStudentPageReqVO | 34 -- .../vue3_one/java/InfraStudentRespVO | 60 --- .../vue3_one/java/InfraStudentSaveReqVO | 50 --- .../vue3_one/java/InfraStudentService | 55 --- .../vue3_one/java/InfraStudentServiceImpl | 74 ---- .../vue3_one/java/InfraStudentServiceImplTest | 146 ------- .../codegen/windows10/vue3_one/sql/h2 | 17 - .../codegen/windows10/vue3_one/sql/sql | 55 --- .../codegen/windows10/vue3_one/ts/index | 43 -- .../windows10/vue3_one/vue/StudentForm | 152 ------- .../codegen/windows10/vue3_one/vue/index | 252 ------------ .../windows10/vue3_one/xml/InfraStudentMapper | 12 - .../codegen/windows10/vue3_tree/assert.json | 49 --- .../java/ErrorCodeConstants_手动操作 | 8 - .../vue3_tree/java/InfraCategoryController | 94 ----- .../windows10/vue3_tree/java/InfraCategoryDO | 39 -- .../vue3_tree/java/InfraCategoryListReqVO | 15 - .../vue3_tree/java/InfraCategoryMapper | 34 -- .../vue3_tree/java/InfraCategoryRespVO | 26 -- .../vue3_tree/java/InfraCategorySaveReqVO | 24 -- .../vue3_tree/java/InfraCategoryService | 55 --- .../vue3_tree/java/InfraCategoryServiceImpl | 136 ------- .../java/InfraCategoryServiceImplTest | 129 ------ .../codegen/windows10/vue3_tree/sql/h2 | 10 - .../codegen/windows10/vue3_tree/sql/sql | 55 --- .../codegen/windows10/vue3_tree/ts/index | 37 -- .../windows10/vue3_tree/vue/CategoryForm | 114 ------ .../codegen/windows10/vue3_tree/vue/index | 185 --------- .../vue3_tree/xml/InfraCategoryMapper | 12 - .../target/test-classes/logback.xml | 4 - .../target/test-classes/sql/clean.sql | 11 - .../target/test-classes/sql/create_tables.sql | 216 ---------- .../module/oms/enums/ErrorCodeConstants.java | 2 + .../hangtag-module-oms-biz/pom.xml | 6 + .../admin/customer/CustomerController.java | 106 +++++ .../admin/customer/vo/CustomerPageReqVO.java | 30 ++ .../admin/customer/vo/CustomerRespVO.java | 58 +++ .../admin/customer/vo/CustomerSaveReqVO.java | 45 +++ .../customer/CustomerAddressDO.java | 63 +++ .../dal/dataobject/customer/CustomerDO.java | 69 ++++ .../mysql/customer/CustomerAddressMapper.java | 28 ++ .../dal/mysql/customer/CustomerMapper.java | 29 ++ .../oms/service/customer/CustomerService.java | 66 ++++ .../service/customer/CustomerServiceImpl.java | 130 ++++++ .../mapper/customer/CustomerMapper.xml | 2 +- .../controller/admin/ip/AreaController.java | 2 +- .../dal/mysql/permission/MenuMapper.java | 8 +- .../service/dict/DictTypeServiceImpl.java | 11 +- .../service/permission/MenuServiceImpl.java | 8 +- .../system/convert/auth/AuthConvertImpl.java | 4 +- .../convert/oauth2/OAuth2OpenConvertImpl.java | 4 +- .../convert/social/SocialUserConvertImpl.java | 4 +- .../convert/tenant/TenantConvertImpl.java | 4 +- .../system/convert/user/UserConvertImpl.java | 4 +- .../src/main/resources/application.yaml | 6 +- .../target/classes/application.yaml | 6 +- hangtag-ui/src/api/oms/customer/index.ts | 52 +++ hangtag-ui/src/utils/dict.ts | 5 +- .../src/views/oms/customer/CustomerForm.vue | 181 +++++++++ .../components/CustomerAddressForm.vue | 167 ++++++++ .../src/views/oms/customer/index.vue | 172 ++++---- hangtag-ui/src/views/system/user/DeptTree.vue | 8 +- hangtag-ui/src/views/system/user/UserForm.vue | 4 +- hangtag-ui/src/views/system/user/index.vue | 2 +- 300 files changed, 1178 insertions(+), 23061 deletions(-) delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/META-INF/spring-configuration-metadata.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/controller.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/listReqVO.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/pageReqVO.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/respVO.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/saveReqVO.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/do.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/do_sub.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper.xml.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper_sub.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/enums/errorcode.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/service/service.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/service/serviceImpl.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/test/serviceTest.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/sql/h2.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/sql/sql.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/api/api.js.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_erp.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_inner.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_normal.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/list_sub_erp.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/list_sub_inner.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/form.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/index.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/api/api.ts.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_erp.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_inner.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_normal.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/list_sub_erp.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/list_sub_inner.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/form.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/index.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/api/api.ts.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/data.ts.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/form.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/index.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/api/api.ts.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/data.ts.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/form.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/index.vue.vm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/classes/file/erweima.jpg delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/codegen/CodegenConvertImpl.java delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/config/ConfigConvertImpl.java delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/file/FileConfigConvertImpl.java delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/redis/RedisConvertImpl.java delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/application-unit-test.yaml delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/category.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/contact.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/student.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/teacher.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/assert.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/ErrorCodeConstants_手动操作 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentContactDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentContactMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentController delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentPageReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentRespVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentSaveReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentService delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentServiceImpl delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentServiceImplTest delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentTeacherDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentTeacherMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/js/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/sql/h2 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/sql/sql delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentContactForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentContactList delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentTeacherForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentTeacherList delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/xml/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/assert.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/ErrorCodeConstants_手动操作 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentContactDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentContactMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentController delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentPageReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentRespVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentSaveReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentService delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentServiceImpl delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentServiceImplTest delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentTeacherDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentTeacherMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/js/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/sql/h2 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/sql/sql delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentContactForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentContactList delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentTeacherForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentTeacherList delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/xml/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/assert.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/ErrorCodeConstants_手动操作 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentContactDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentContactMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentController delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentPageReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentRespVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentSaveReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentService delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentServiceImpl delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentServiceImplTest delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentTeacherDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentTeacherMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/js/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/sql/h2 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/sql/sql delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentContactForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentTeacherForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/xml/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/assert.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/ErrorCodeConstants_手动操作 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentController delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentPageReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentRespVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentSaveReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentService delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentServiceImpl delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentServiceImplTest delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/js/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/sql/h2 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/sql/sql delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/vue/StudentForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/vue/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/assert.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/ErrorCodeConstants_手动操作 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryController delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryListReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryRespVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategorySaveReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryService delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryServiceImpl delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryServiceImplTest delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/js/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/sql/h2 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/sql/sql delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/vue/CategoryForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/vue/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/xml/InfraCategoryMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/assert.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/ErrorCodeConstants_手动操作 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentContactDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentContactMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentController delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentPageReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentRespVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentSaveReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentService delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentServiceImpl delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentServiceImplTest delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentTeacherDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentTeacherMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/sql/h2 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/sql/sql delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/ts/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentContactForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentContactList delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentTeacherForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentTeacherList delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/xml/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/assert.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/ErrorCodeConstants_手动操作 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentContactDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentContactMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentController delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentPageReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentRespVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentSaveReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentService delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentServiceImpl delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentServiceImplTest delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentTeacherDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentTeacherMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/sql/h2 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/sql/sql delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/ts/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentContactForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentContactList delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentTeacherForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentTeacherList delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/xml/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/assert.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/ErrorCodeConstants_手动操作 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentContactDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentContactMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentController delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentPageReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentRespVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentSaveReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentService delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentServiceImpl delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentServiceImplTest delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentTeacherDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentTeacherMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/sql/h2 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/sql/sql delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/ts/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentContactForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentTeacherForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/xml/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/assert.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/ErrorCodeConstants_手动操作 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentController delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentPageReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentRespVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentSaveReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentService delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentServiceImpl delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentServiceImplTest delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/sql/h2 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/sql/sql delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/ts/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/vue/StudentForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/vue/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/xml/InfraStudentMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/assert.json delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/ErrorCodeConstants_手动操作 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryController delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryDO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryListReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryRespVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategorySaveReqVO delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryService delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryServiceImpl delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryServiceImplTest delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/sql/h2 delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/sql/sql delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/ts/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/vue/CategoryForm delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/vue/index delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/xml/InfraCategoryMapper delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/logback.xml delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/sql/clean.sql delete mode 100644 hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/sql/create_tables.sql create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/CustomerController.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerPageReqVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerAddressDO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerAddressMapper.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerMapper.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerService.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java rename hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/xml/InfraStudentMapper => hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/customer/CustomerMapper.xml (85%) create mode 100644 hangtag-ui/src/api/oms/customer/index.ts create mode 100644 hangtag-ui/src/views/oms/customer/CustomerForm.vue create mode 100644 hangtag-ui/src/views/oms/customer/components/CustomerAddressForm.vue rename hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/index => hangtag-ui/src/views/oms/customer/index.vue (56%) diff --git a/.gitignore b/.gitignore index 8a73858..4b96336 100644 --- a/.gitignore +++ b/.gitignore @@ -88,3 +88,4 @@ __MACOSX # 自定义目录 /logs /.idea +target diff --git a/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/core/dataobject/BaseDO.java b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/core/dataobject/BaseDO.java index 57f5387..c1548d1 100644 --- a/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/core/dataobject/BaseDO.java +++ b/hangtag-framework/hangtag-spring-boot-starter-mybatis/src/main/java/cn/hangtag/framework/mybatis/core/dataobject/BaseDO.java @@ -50,7 +50,7 @@ public abstract class BaseDO implements Serializable, TransPojo { /** * 是否删除 */ - @TableLogic + //@TableLogic private Boolean deleted; } diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/META-INF/spring-configuration-metadata.json b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/META-INF/spring-configuration-metadata.json deleted file mode 100644 index 3ec0bd0..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/META-INF/spring-configuration-metadata.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "groups": [ - { - "name": "hangtag.codegen", - "type": "cn.hangtag.module.infra.framework.codegen.config.CodegenProperties", - "sourceType": "cn.hangtag.module.infra.framework.codegen.config.CodegenProperties" - } - ], - "properties": [ - { - "name": "hangtag.codegen.base-package", - "type": "java.lang.String", - "description": "生成的 Java 代码的基础包", - "sourceType": "cn.hangtag.module.infra.framework.codegen.config.CodegenProperties" - }, - { - "name": "hangtag.codegen.db-schemas", - "type": "java.util.Collection", - "description": "数据库名数组", - "sourceType": "cn.hangtag.module.infra.framework.codegen.config.CodegenProperties" - }, - { - "name": "hangtag.codegen.front-type", - "type": "java.lang.Integer", - "description": "代码生成的前端类型(默认) 枚举 {@link CodegenFrontTypeEnum#getType()}", - "sourceType": "cn.hangtag.module.infra.framework.codegen.config.CodegenProperties" - } - ], - "hints": [] -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/controller.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/controller.vm deleted file mode 100644 index a358d7c..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/controller.vm +++ /dev/null @@ -1,233 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}; - -import org.springframework.web.bind.annotation.*; -import ${jakartaPackage}.annotation.Resource; -import org.springframework.validation.annotation.Validated; -#if ($sceneEnum.scene == 1)import org.springframework.security.access.prepost.PreAuthorize;#end - -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import ${jakartaPackage}.validation.constraints.*; -import ${jakartaPackage}.validation.*; -import ${jakartaPackage}.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import ${PageParamClassName}; -import ${PageResultClassName}; -import ${CommonResultClassName}; -import ${BeanUtils}; -import static ${CommonResultClassName}.success; - -import ${ExcelUtilsClassName}; - -import ${ApiAccessLogClassName}; -import static ${OperateTypeEnumClassName}.*; - -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO; -#end -import ${basePackage}.module.${table.moduleName}.service.${table.businessName}.${table.className}Service; - -@Tag(name = "${sceneEnum.name} - ${table.classComment}") -@RestController -##二级的 businessName 暂时不算在 HTTP 路径上,可以根据需要写 -@RequestMapping("/${table.moduleName}/${simpleClassName_strikeCase}") -@Validated -public class ${sceneEnum.prefixClass}${table.className}Controller { - - @Resource - private ${table.className}Service ${classNameVar}Service; - - @PostMapping("/create") - @Operation(summary = "创建${table.classComment}") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')") -#end - public CommonResult<${primaryColumn.javaType}> create${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}SaveReqVO createReqVO) { - return success(${classNameVar}Service.create${simpleClassName}(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新${table.classComment}") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')") -#end - public CommonResult update${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO) { - ${classNameVar}Service.update${simpleClassName}(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除${table.classComment}") - @Parameter(name = "id", description = "编号", required = true) -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')") -#end - public CommonResult delete${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { - ${classNameVar}Service.delete${simpleClassName}(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得${table.classComment}") - @Parameter(name = "id", description = "编号", required = true, example = "1024") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult<${sceneEnum.prefixClass}${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { - ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id); - return success(BeanUtils.toBean(${classNameVar}, ${sceneEnum.prefixClass}${table.className}RespVO.class)); - } - -#if ( $table.templateType != 2 ) - @GetMapping("/page") - @Operation(summary = "获得${table.classComment}分页") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult> get${simpleClassName}Page(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO) { - PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO); - return success(BeanUtils.toBean(pageResult, ${sceneEnum.prefixClass}${table.className}RespVO.class)); - } - -## 特殊:树表专属逻辑(树不需要分页接口) -#else - @GetMapping("/list") - @Operation(summary = "获得${table.classComment}列表") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult> get${simpleClassName}List(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO) { - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO); - return success(BeanUtils.toBean(list, ${sceneEnum.prefixClass}${table.className}RespVO.class)); - } - -#end - @GetMapping("/export-excel") - @Operation(summary = "导出${table.classComment} Excel") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:export')") -#end - @ApiAccessLog(operateType = EXPORT) -#if ( $table.templateType != 2 ) - public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${table.className}RespVO.class, - BeanUtils.toBean(list, ${table.className}RespVO.class)); - } -## 特殊:树表专属逻辑(树不需要分页接口) -#else - public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO, - HttpServletResponse response) throws IOException { - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO); - // 导出 Excel - ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${table.className}RespVO.class, - BeanUtils.toBean(list, ${table.className}RespVO.class)); - } -#end - -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 -#set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) -#set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) -#set ($subClassNameVar = $subClassNameVars.get($index)) - // ==================== 子表($subTable.classComment) ==================== - -## 情况一:MASTER_ERP 时,需要分查询页子表 -#if ( $table.templateType == 11 ) - @GetMapping("/${subSimpleClassName_strikeCase}/page") - @Operation(summary = "获得${subTable.classComment}分页") - @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult> get${subSimpleClassName}Page(PageParam pageReqVO, - @RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return success(${classNameVar}Service.get${subSimpleClassName}Page(pageReqVO, ${subJoinColumn.javaField})); - } - -## 情况二:非 MASTER_ERP 时,需要列表查询子表 -#else - #if ( $subTable.subJoinMany ) - @GetMapping("/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}") - @Operation(summary = "获得${subTable.classComment}列表") - @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult> get${subSimpleClassName}ListBy${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return success(${classNameVar}Service.get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField})); - } - - #else - @GetMapping("/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}") - @Operation(summary = "获得${subTable.classComment}") - @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult<${subTable.className}DO> get${subSimpleClassName}By${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return success(${classNameVar}Service.get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField})); - } - - #end -#end -## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 -#if ( $table.templateType == 11 ) - @PostMapping("/${subSimpleClassName_strikeCase}/create") - @Operation(summary = "创建${subTable.classComment}") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')") -#end - public CommonResult<${subPrimaryColumn.javaType}> create${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) { - return success(${classNameVar}Service.create${subSimpleClassName}(${subClassNameVar})); - } - - @PutMapping("/${subSimpleClassName_strikeCase}/update") - @Operation(summary = "更新${subTable.classComment}") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')") -#end - public CommonResult update${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) { - ${classNameVar}Service.update${subSimpleClassName}(${subClassNameVar}); - return success(true); - } - - @DeleteMapping("/${subSimpleClassName_strikeCase}/delete") - @Parameter(name = "id", description = "编号", required = true) - @Operation(summary = "删除${subTable.classComment}") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')") -#end - public CommonResult delete${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) { - ${classNameVar}Service.delete${subSimpleClassName}(id); - return success(true); - } - - @GetMapping("/${subSimpleClassName_strikeCase}/get") - @Operation(summary = "获得${subTable.classComment}") - @Parameter(name = "id", description = "编号", required = true) -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult<${subTable.className}DO> get${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) { - return success(${classNameVar}Service.get${subSimpleClassName}(id)); - } - -#end -#end -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/listReqVO.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/listReqVO.vm deleted file mode 100644 index 46b6a25..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/listReqVO.vm +++ /dev/null @@ -1,45 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import ${PageParamClassName}; -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#break -#end -#end -## 处理 LocalDateTime 字段的引入 -#foreach ($column in $columns) -#if (${column.listOperation} && ${column.javaType} == "LocalDateTime") -import java.time.LocalDateTime; -import org.springframework.format.annotation.DateTimeFormat; - -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end -## 字段模板 -#macro(columnTpl $prefix $prefixStr) - @Schema(description = "${prefixStr}${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) - private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; -#end - -@Schema(description = "${sceneEnum.name} - ${table.classComment}列表 Request VO") -@Data -public class ${sceneEnum.prefixClass}${table.className}ListReqVO { - -#foreach ($column in $columns) -#if (${column.listOperation})##查询操作 -#if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 - @Schema(description = "${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private ${column.javaType}[] ${column.javaField}; -#else##情况二,非 Between 的时间 - #columnTpl('', '') -#end - -#end -#end -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/pageReqVO.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/pageReqVO.vm deleted file mode 100644 index 003bac9..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/pageReqVO.vm +++ /dev/null @@ -1,47 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import ${PageParamClassName}; -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#break -#end -#end -## 处理 LocalDateTime 字段的引入 -#foreach ($column in $columns) -#if (${column.listOperationCondition} && ${column.javaType} == "LocalDateTime") -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end -## 字段模板 -#macro(columnTpl $prefix $prefixStr) - @Schema(description = "${prefixStr}${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) - private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; -#end - -@Schema(description = "${sceneEnum.name} - ${table.classComment}分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ${sceneEnum.prefixClass}${table.className}PageReqVO extends PageParam { - -#foreach ($column in $columns) -#if (${column.listOperation})##查询操作 -#if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 - @Schema(description = "${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private ${column.javaType}[] ${column.javaField}; -#else##情况二,非 Between 的时间 - #columnTpl('', '') -#end - -#end -#end -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/respVO.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/respVO.vm deleted file mode 100644 index 24c3519..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/respVO.vm +++ /dev/null @@ -1,53 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -## 处理 BigDecimal 字段的引入 -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#break -#end -#end -## 处理 LocalDateTime 字段的引入 -#foreach ($column in $columns) -#if (${column.listOperationResult} && ${column.javaType} == "LocalDateTime") -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -#break -#end -#end -## 处理 Excel 导出 -import com.alibaba.excel.annotation.*; -#foreach ($column in $columns) -#if ("$!column.dictType" != "")## 有设置数据字典 -import ${DictFormatClassName}; -import ${DictConvertClassName}; -#break -#end -#end - -@Schema(description = "${sceneEnum.name} - ${table.classComment} Response VO") -@Data -@ExcelIgnoreUnannotated -public class ${sceneEnum.prefixClass}${table.className}RespVO { - -## 逐个处理字段 -#foreach ($column in $columns) -#if (${column.listOperationResult}) -## 1. 处理 Swagger 注解 - @Schema(description = "${column.columnComment}"#if (!${column.nullable}), requiredMode = Schema.RequiredMode.REQUIRED#end#if ("$!column.example" != ""), example = "${column.example}"#end) -## 2. 处理 Excel 导出 -#if ("$!column.dictType" != "")##处理枚举值 - @ExcelProperty(value = "${column.columnComment}", converter = DictConvert.class) - @DictFormat("${column.dictType}") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 -#else - @ExcelProperty("${column.columnComment}") -#end -## 3. 处理字段定义 - private ${column.javaType} ${column.javaField}; - -#end -#end -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/saveReqVO.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/saveReqVO.vm deleted file mode 100644 index b432c75..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/controller/vo/saveReqVO.vm +++ /dev/null @@ -1,64 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import ${jakartaPackage}.validation.constraints.*; -## 处理 BigDecimal 字段的引入 -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#break -#end -#end -## 处理 LocalDateTime 字段的引入 -#foreach ($column in $columns) -#if ((${column.createOperation} || ${column.updateOperation}) && ${column.javaType} == "LocalDateTime") -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -#break -#end -#end -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO; -#end - -@Schema(description = "${sceneEnum.name} - ${table.classComment}新增/修改 Request VO") -@Data -public class ${sceneEnum.prefixClass}${table.className}SaveReqVO { - -## 逐个处理字段 -#foreach ($column in $columns) -#if (${column.createOperation} || ${column.updateOperation}) -## 1. 处理 Swagger 注解 - @Schema(description = "${column.columnComment}"#if (!${column.nullable}), requiredMode = Schema.RequiredMode.REQUIRED#end#if ("$!column.example" != ""), example = "${column.example}"#end) -## 2. 处理 Validator 参数校验 -#if (!${column.nullable} && !${column.primaryKey}) -#if (${column.javaType} == 'String') - @NotEmpty(message = "${column.columnComment}不能为空") -#else - @NotNull(message = "${column.columnComment}不能为空") -#end -#end -## 3. 处理字段定义 - private ${column.javaType} ${column.javaField}; - -#end -#end -## 特殊:主子表专属逻辑(非 ERP 模式) -#if ( $subTables && $subTables.size() > 0 && $table.templateType != 11 ) -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) - #if ( $subTable.subJoinMany) - @Schema(description = "${subTable.classComment}列表") - private List<${subTable.className}DO> ${subClassNameVars.get($index)}s; - - #else - @Schema(description = "${subTable.classComment}") - private ${subTable.className}DO ${subClassNameVars.get($index)}; - - #end -#end -#end -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/do.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/do.vm deleted file mode 100644 index b019d6e..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/do.vm +++ /dev/null @@ -1,52 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}; - -import lombok.*; -import java.util.*; -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#end -#if (${column.javaType} == "LocalDateTime") -import java.time.LocalDateTime; -#end -#end -import com.baomidou.mybatisplus.annotation.*; -import ${BaseDOClassName}; - -/** - * ${table.classComment} DO - * - * @author ${table.author} - */ -@TableName("${table.tableName.toLowerCase()}") -@KeySequence("${table.tableName.toLowerCase()}_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ${table.className}DO extends BaseDO { - -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) - public static final Long ${treeParentColumn_javaField_underlineCase.toUpperCase()}_ROOT = 0L; - -#end -#foreach ($column in $columns) -#if (!${baseDOFields.contains(${column.javaField})})##排除 BaseDO 的字段 - /** - * ${column.columnComment} - #if ("$!column.dictType" != "")##处理枚举值 - * - * 枚举 {@link TODO ${column.dictType} 对应的类} - #end - */ - #if (${column.primaryKey})##处理主键 - @TableId#if (${column.javaType} == 'String')(type = IdType.INPUT)#end - #end - private ${column.javaType} ${column.javaField}; -#end -#end - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/do_sub.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/do_sub.vm deleted file mode 100644 index 16be55e..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/do_sub.vm +++ /dev/null @@ -1,49 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -package ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}; - -import lombok.*; -import java.util.*; -#foreach ($column in $subColumns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#end -#if (${column.javaType} == "LocalDateTime") -import java.time.LocalDateTime; -#end -#end -import com.baomidou.mybatisplus.annotation.*; -import ${BaseDOClassName}; - -/** - * ${subTable.classComment} DO - * - * @author ${subTable.author} - */ -@TableName("${subTable.tableName.toLowerCase()}") -@KeySequence("${subTable.tableName.toLowerCase()}_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ${subTable.className}DO extends BaseDO { - -#foreach ($column in $subColumns) -#if (!${baseDOFields.contains(${column.javaField})})##排除 BaseDO 的字段 - /** - * ${column.columnComment} - #if ("$!column.dictType" != "")##处理枚举值 - * - * 枚举 {@link TODO ${column.dictType} 对应的类} - #end - */ - #if (${column.primaryKey})##处理主键 - @TableId#if (${column.javaType} == 'String')(type = IdType.INPUT)#end - #end - private ${column.javaType} ${column.javaField}; -#end -#end - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper.vm deleted file mode 100644 index b98b471..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper.vm +++ /dev/null @@ -1,82 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}; - -import java.util.*; - -import ${PageResultClassName}; -import ${QueryWrapperClassName}; -import ${BaseMapperClassName}; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -import org.apache.ibatis.annotations.Mapper; -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; - -## 字段模板 -#macro(listCondition) -#foreach ($column in $columns) -#if (${column.listOperation}) -#set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 -#if (${column.listOperationCondition} == "=")##情况一,= 的时候 - .eqIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "!=")##情况二,!= 的时候 - .neIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == ">")##情况三,> 的时候 - .gtIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 - .geIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "<")##情况五,< 的时候 - .ltIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "<=")##情况五,<= 的时候 - .leIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "LIKE")##情况七,Like 的时候 - .likeIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 - .betweenIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#end -#end -#end -/** - * ${table.classComment} Mapper - * - * @author ${table.author} - */ -@Mapper -public interface ${table.className}Mapper extends BaseMapperX<${table.className}DO> { - -## 特殊:树表专属逻辑(树不需要分页接口) -#if ( $table.templateType != 2 ) - default PageResult<${table.className}DO> selectPage(${sceneEnum.prefixClass}${table.className}PageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX<${table.className}DO>() - #listCondition() - .orderByDesc(${table.className}DO::getId));## 大多数情况下,id 倒序 - - } -#else - default List<${table.className}DO> selectList(${sceneEnum.prefixClass}${table.className}ListReqVO reqVO) { - return selectList(new LambdaQueryWrapperX<${table.className}DO>() - #listCondition() - .orderByDesc(${table.className}DO::getId));## 大多数情况下,id 倒序 - - } -#end - -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -#set ($TreeParentJavaField = $treeParentColumn.javaField.substring(0,1).toUpperCase() + ${treeParentColumn.javaField.substring(1)})##首字母大写 -#set ($TreeNameJavaField = $treeNameColumn.javaField.substring(0,1).toUpperCase() + ${treeNameColumn.javaField.substring(1)})##首字母大写 - default ${table.className}DO selectBy${TreeParentJavaField}And${TreeNameJavaField}(Long ${treeParentColumn.javaField}, String ${treeNameColumn.javaField}) { - return selectOne(${table.className}DO::get${TreeParentJavaField}, ${treeParentColumn.javaField}, ${table.className}DO::get${TreeNameJavaField}, ${treeNameColumn.javaField}); - } - - default Long selectCountBy${TreeParentJavaField}(${treeParentColumn.javaType} ${treeParentColumn.javaField}) { - return selectCount(${table.className}DO::get${TreeParentJavaField}, ${treeParentColumn.javaField}); - } - -#end -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper.xml.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper.xml.vm deleted file mode 100644 index 290378d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper.xml.vm +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper_sub.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper_sub.vm deleted file mode 100644 index e5589e9..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/dal/mapper_sub.vm +++ /dev/null @@ -1,51 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subJoinColumnsList.get($subIndex))##当前字段数组 -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 -package ${basePackage}.module.${subTable.moduleName}.dal.mysql.${subTable.businessName}; - -import java.util.*; - -import ${PageResultClassName}; -import ${PageParamClassName}; -import ${QueryWrapperClassName}; -import ${BaseMapperClassName}; -import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO; -import org.apache.ibatis.annotations.Mapper; - -/** - * ${subTable.classComment} Mapper - * - * @author ${subTable.author} - */ -@Mapper -public interface ${subTable.className}Mapper extends BaseMapperX<${subTable.className}DO> { - -## 情况一:MASTER_ERP 时,需要分查询页子表 -#if ( $table.templateType == 11 ) - default PageResult<${subTable.className}DO> selectPage(PageParam reqVO, ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return selectPage(reqVO, new LambdaQueryWrapperX<${subTable.className}DO>() - .eq(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField}) - .orderByDesc(${subTable.className}DO::getId));## 大多数情况下,id 倒序 - - } - -## 情况二:非 MASTER_ERP 时,需要列表查询子表 -#else - #if ( $subTable.subJoinMany) - default List<${subTable.className}DO> selectListBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return selectList(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField}); - } - - #else - default ${subTable.className}DO selectBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return selectOne(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField}); - } - - #end - #end - default int deleteBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return delete(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField}); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/enums/errorcode.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/enums/errorcode.vm deleted file mode 100644 index 3ca1b96..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/enums/errorcode.vm +++ /dev/null @@ -1,22 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 hangtag-module-${table.moduleName}-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== ${table.classComment} TODO 补充编号 ========== -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS = new ErrorCode(TODO 补充编号, "${table.classComment}不存在"); -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_EXITS_CHILDREN = new ErrorCode(TODO 补充编号, "存在存在子${table.classComment},无法删除"); -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_PARENT_NOT_EXITS = new ErrorCode(TODO 补充编号,"父级${table.classComment}不存在"); -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_PARENT_ERROR = new ErrorCode(TODO 补充编号, "不能设置自己为父${table.classComment}"); -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_${treeNameColumn_javaField_underlineCase.toUpperCase()}_DUPLICATE = new ErrorCode(TODO 补充编号, "已经存在该${treeNameColumn.columnComment}的${table.classComment}"); -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_PARENT_IS_CHILD = new ErrorCode(TODO 补充编号, "不能设置自己的子${table.className}为父${table.className}"); -#end -## 特殊:主子表专属逻辑 -#if ( $table.templateType == 11 )## 特殊:ERP 情况 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($simpleClassNameUnderlineCase = $simpleClassNameUnderlineCases.get($index)) -ErrorCode ${simpleClassNameUnderlineCase.toUpperCase()}_NOT_EXISTS = new ErrorCode(TODO 补充编号, "${subTable.classComment}不存在"); -#if ( !$subTable.subJoinMany ) -ErrorCode ${simpleClassNameUnderlineCase.toUpperCase()}_EXISTS = new ErrorCode(TODO 补充编号, "${subTable.classComment}已存在"); -#end -#end -#end \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/service/service.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/service/service.vm deleted file mode 100644 index c4ee4f0..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/service/service.vm +++ /dev/null @@ -1,147 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.service.${table.businessName}; - -import java.util.*; -import ${jakartaPackage}.validation.*; -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO; -#end -import ${PageResultClassName}; -import ${PageParamClassName}; - -/** - * ${table.classComment} Service 接口 - * - * @author ${table.author} - */ -public interface ${table.className}Service { - - /** - * 创建${table.classComment} - * - * @param createReqVO 创建信息 - * @return 编号 - */ - ${primaryColumn.javaType} create${simpleClassName}(@Valid ${sceneEnum.prefixClass}${table.className}SaveReqVO createReqVO); - - /** - * 更新${table.classComment} - * - * @param updateReqVO 更新信息 - */ - void update${simpleClassName}(@Valid ${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO); - - /** - * 删除${table.classComment} - * - * @param id 编号 - */ - void delete${simpleClassName}(${primaryColumn.javaType} id); - - /** - * 获得${table.classComment} - * - * @param id 编号 - * @return ${table.classComment} - */ - ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id); - -## 特殊:树表专属逻辑(树不需要分页接口) -#if ( $table.templateType != 2 ) - /** - * 获得${table.classComment}分页 - * - * @param pageReqVO 分页查询 - * @return ${table.classComment}分页 - */ - PageResult<${table.className}DO> get${simpleClassName}Page(${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO); -#else - /** - * 获得${table.classComment}列表 - * - * @param listReqVO 查询条件 - * @return ${table.classComment}列表 - */ - List<${table.className}DO> get${simpleClassName}List(${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO); -#end - -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 -#set ($subClassNameVar = $subClassNameVars.get($index)) - // ==================== 子表($subTable.classComment) ==================== - -## 情况一:MASTER_ERP 时,需要分查询页子表 -#if ( $table.templateType == 11 ) - /** - * 获得${subTable.classComment}分页 - * - * @param pageReqVO 分页查询 - * @param ${subJoinColumn.javaField} ${subJoinColumn.columnComment} - * @return ${subTable.classComment}分页 - */ - PageResult<${subTable.className}DO> get${subSimpleClassName}Page(PageParam pageReqVO, ${subJoinColumn.javaType} ${subJoinColumn.javaField}); - -## 情况二:非 MASTER_ERP 时,需要列表查询子表 -#else - #if ( $subTable.subJoinMany ) - /** - * 获得${subTable.classComment}列表 - * - * @param ${subJoinColumn.javaField} ${subJoinColumn.columnComment} - * @return ${subTable.classComment}列表 - */ - List<${subTable.className}DO> get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}); - - #else - /** - * 获得${subTable.classComment} - * - * @param ${subJoinColumn.javaField} ${subJoinColumn.columnComment} - * @return ${subTable.classComment} - */ - ${subTable.className}DO get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}); - - #end -#end -## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 -#if ( $table.templateType == 11 ) - /** - * 创建${subTable.classComment} - * - * @param ${subClassNameVar} 创建信息 - * @return 编号 - */ - ${subPrimaryColumn.javaType} create${subSimpleClassName}(@Valid ${subTable.className}DO ${subClassNameVar}); - - /** - * 更新${subTable.classComment} - * - * @param ${subClassNameVar} 更新信息 - */ - void update${subSimpleClassName}(@Valid ${subTable.className}DO ${subClassNameVar}); - - /** - * 删除${subTable.classComment} - * - * @param id 编号 - */ - void delete${subSimpleClassName}(${subPrimaryColumn.javaType} id); - - /** - * 获得${subTable.classComment} - * - * @param id 编号 - * @return ${subTable.classComment} - */ - ${subTable.className}DO get${subSimpleClassName}(${subPrimaryColumn.javaType} id); - -#end -#end -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/service/serviceImpl.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/service/serviceImpl.vm deleted file mode 100644 index a8184e4..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/service/serviceImpl.vm +++ /dev/null @@ -1,350 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.service.${table.businessName}; - -import org.springframework.stereotype.Service; -import ${jakartaPackage}.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO; -#end -import ${PageResultClassName}; -import ${PageParamClassName}; -import ${BeanUtils}; - -import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -import ${basePackage}.module.${subTable.moduleName}.dal.mysql.${subTable.businessName}.${subTable.className}Mapper; -#end - -import static ${ServiceExceptionUtilClassName}.exception; -import static ${basePackage}.module.${table.moduleName}.enums.ErrorCodeConstants.*; - -/** - * ${table.classComment} Service 实现类 - * - * @author ${table.author} - */ -@Service -@Validated -public class ${table.className}ServiceImpl implements ${table.className}Service { - - @Resource - private ${table.className}Mapper ${classNameVar}Mapper; -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) - @Resource - private ${subTable.className}Mapper ${subClassNameVars.get($index)}Mapper; -#end - - @Override -## 特殊:主子表专属逻辑(非 ERP 模式) -#if ( $subTables && $subTables.size() > 0 && $table.templateType != 11 ) - @Transactional(rollbackFor = Exception.class) -#end - public ${primaryColumn.javaType} create${simpleClassName}(${sceneEnum.prefixClass}${table.className}SaveReqVO createReqVO) { -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -#set ($TreeParentJavaField = $treeParentColumn.javaField.substring(0,1).toUpperCase() + ${treeParentColumn.javaField.substring(1)})##首字母大写 -#set ($TreeNameJavaField = $treeNameColumn.javaField.substring(0,1).toUpperCase() + ${treeNameColumn.javaField.substring(1)})##首字母大写 - // 校验${treeParentColumn.columnComment}的有效性 - validateParent${simpleClassName}(null, createReqVO.get${TreeParentJavaField}()); - // 校验${treeNameColumn.columnComment}的唯一性 - validate${simpleClassName}${TreeNameJavaField}Unique(null, createReqVO.get${TreeParentJavaField}(), createReqVO.get${TreeNameJavaField}()); - -#end - // 插入 - ${table.className}DO ${classNameVar} = BeanUtils.toBean(createReqVO, ${table.className}DO.class); - ${classNameVar}Mapper.insert(${classNameVar}); -## 特殊:主子表专属逻辑(非 ERP 模式) -#if ( $subTables && $subTables.size() > 0 && $table.templateType != 11 ) - - // 插入子表 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - #if ( $subTable.subJoinMany) - create${subSimpleClassName}List(${classNameVar}.getId(), createReqVO.get${subSimpleClassNames.get($index)}s()); - #else - create${subSimpleClassName}(${classNameVar}.getId(), createReqVO.get${subSimpleClassNames.get($index)}()); - #end -#end -#end - // 返回 - return ${classNameVar}.getId(); - } - - @Override -## 特殊:主子表专属逻辑(非 ERP 模式) -#if ( $subTables && $subTables.size() > 0 && $table.templateType != 11 ) - @Transactional(rollbackFor = Exception.class) -#end - public void update${simpleClassName}(${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO) { - // 校验存在 - validate${simpleClassName}Exists(updateReqVO.getId()); -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -#set ($TreeParentJavaField = $treeParentColumn.javaField.substring(0,1).toUpperCase() + ${treeParentColumn.javaField.substring(1)})##首字母大写 -#set ($TreeNameJavaField = $treeNameColumn.javaField.substring(0,1).toUpperCase() + ${treeNameColumn.javaField.substring(1)})##首字母大写 - // 校验${treeParentColumn.columnComment}的有效性 - validateParent${simpleClassName}(updateReqVO.getId(), updateReqVO.get${TreeParentJavaField}()); - // 校验${treeNameColumn.columnComment}的唯一性 - validate${simpleClassName}${TreeNameJavaField}Unique(updateReqVO.getId(), updateReqVO.get${TreeParentJavaField}(), updateReqVO.get${TreeNameJavaField}()); - -#end - // 更新 - ${table.className}DO updateObj = BeanUtils.toBean(updateReqVO, ${table.className}DO.class); - ${classNameVar}Mapper.updateById(updateObj); -## 特殊:主子表专属逻辑(非 ERP 模式) -#if ( $subTables && $subTables.size() > 0 && $table.templateType != 11) - - // 更新子表 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - #if ( $subTable.subJoinMany) - update${subSimpleClassName}List(updateReqVO.getId(), updateReqVO.get${subSimpleClassNames.get($index)}s()); - #else - update${subSimpleClassName}(updateReqVO.getId(), updateReqVO.get${subSimpleClassNames.get($index)}()); - #end -#end -#end - } - - @Override -## 特殊:主子表专属逻辑 -#if ( $subTables && $subTables.size() > 0) - @Transactional(rollbackFor = Exception.class) -#end - public void delete${simpleClassName}(${primaryColumn.javaType} id) { - // 校验存在 - validate${simpleClassName}Exists(id); -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -#set ($ParentJavaField = $treeParentColumn.javaField.substring(0,1).toUpperCase() + ${treeParentColumn.javaField.substring(1)})##首字母大写 - // 校验是否有子${table.classComment} - if (${classNameVar}Mapper.selectCountBy${ParentJavaField}(id) > 0) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_EXITS_CHILDREN); - } -#end - // 删除 - ${classNameVar}Mapper.deleteById(id); -## 特殊:主子表专属逻辑 -#if ( $subTables && $subTables.size() > 0) - - // 删除子表 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - delete${subSimpleClassName}By${SubJoinColumnName}(id); -#end -#end - } - - private void validate${simpleClassName}Exists(${primaryColumn.javaType} id) { - if (${classNameVar}Mapper.selectById(id) == null) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); - } - } - -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -#set ($TreeParentJavaField = $treeParentColumn.javaField.substring(0,1).toUpperCase() + ${treeParentColumn.javaField.substring(1)})##首字母大写 -#set ($TreeNameJavaField = $treeNameColumn.javaField.substring(0,1).toUpperCase() + ${treeNameColumn.javaField.substring(1)})##首字母大写 - private void validateParent${simpleClassName}(Long id, Long ${treeParentColumn.javaField}) { - if (${treeParentColumn.javaField} == null || ${simpleClassName}DO.${treeParentColumn_javaField_underlineCase.toUpperCase()}_ROOT.equals(${treeParentColumn.javaField})) { - return; - } - // 1. 不能设置自己为父${table.classComment} - if (Objects.equals(id, ${treeParentColumn.javaField})) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_PARENT_ERROR); - } - // 2. 父${table.classComment}不存在 - ${simpleClassName}DO parent${simpleClassName} = ${classNameVar}Mapper.selectById(${treeParentColumn.javaField}); - if (parent${simpleClassName} == null) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_PARENT_NOT_EXITS); - } - // 3. 递归校验父${table.classComment},如果父${table.classComment}是自己的子${table.classComment},则报错,避免形成环路 - if (id == null) { // id 为空,说明新增,不需要考虑环路 - return; - } - for (int i = 0; i < Short.MAX_VALUE; i++) { - // 3.1 校验环路 - ${treeParentColumn.javaField} = parent${simpleClassName}.get${TreeParentJavaField}(); - if (Objects.equals(id, ${treeParentColumn.javaField})) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_PARENT_IS_CHILD); - } - // 3.2 继续递归下一级父${table.classComment} - if (${treeParentColumn.javaField} == null || ${simpleClassName}DO.${treeParentColumn_javaField_underlineCase.toUpperCase()}_ROOT.equals(${treeParentColumn.javaField})) { - break; - } - parent${simpleClassName} = ${classNameVar}Mapper.selectById(${treeParentColumn.javaField}); - if (parent${simpleClassName} == null) { - break; - } - } - } - - private void validate${simpleClassName}${TreeNameJavaField}Unique(Long id, Long ${treeParentColumn.javaField}, String ${treeNameColumn.javaField}) { - ${simpleClassName}DO ${classNameVar} = ${classNameVar}Mapper.selectBy${TreeParentJavaField}And${TreeNameJavaField}(${treeParentColumn.javaField}, ${treeNameColumn.javaField}); - if (${classNameVar} == null) { - return; - } - // 如果 id 为空,说明不用比较是否为相同 id 的${table.classComment} - if (id == null) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_${treeNameColumn_javaField_underlineCase.toUpperCase()}_DUPLICATE); - } - if (!Objects.equals(${classNameVar}.getId(), id)) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_${treeNameColumn_javaField_underlineCase.toUpperCase()}_DUPLICATE); - } - } - -#end - @Override - public ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id) { - return ${classNameVar}Mapper.selectById(id); - } - -## 特殊:树表专属逻辑(树不需要分页接口) -#if ( $table.templateType != 2 ) - @Override - public PageResult<${table.className}DO> get${simpleClassName}Page(${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO) { - return ${classNameVar}Mapper.selectPage(pageReqVO); - } -#else - @Override - public List<${table.className}DO> get${simpleClassName}List(${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO) { - return ${classNameVar}Mapper.selectList(listReqVO); - } -#end - -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($simpleClassNameUnderlineCase = $simpleClassNameUnderlineCases.get($index)) -#set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 -#set ($subClassNameVar = $subClassNameVars.get($index)) - // ==================== 子表($subTable.classComment) ==================== - -## 情况一:MASTER_ERP 时,需要分查询页子表 -#if ( $table.templateType == 11 ) - @Override - public PageResult<${subTable.className}DO> get${subSimpleClassName}Page(PageParam pageReqVO, ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return ${subClassNameVars.get($index)}Mapper.selectPage(pageReqVO, ${subJoinColumn.javaField}); - } - -## 情况二:非 MASTER_ERP 时,需要列表查询子表 -#else - #if ( $subTable.subJoinMany ) - @Override - public List<${subTable.className}DO> get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return ${subClassNameVars.get($index)}Mapper.selectListBy${SubJoinColumnName}(${subJoinColumn.javaField}); - } - - #else - @Override - public ${subTable.className}DO get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return ${subClassNameVars.get($index)}Mapper.selectBy${SubJoinColumnName}(${subJoinColumn.javaField}); - } - - #end -#end -## 情况一:MASTER_ERP 时,支持单个的新增、修改、删除操作 -#if ( $table.templateType == 11 ) - @Override - public ${subPrimaryColumn.javaType} create${subSimpleClassName}(${subTable.className}DO ${subClassNameVar}) { -## 特殊:一对一时,需要保证只有一条,不能重复插入 -#if ( !$subTable.subJoinMany) - // 校验是否已经存在 - if (${subClassNameVars.get($index)}Mapper.selectBy${SubJoinColumnName}(${subClassNameVar}.get${SubJoinColumnName}()) != null) { - throw exception(${simpleClassNameUnderlineCase.toUpperCase()}_EXISTS); - } - // 插入 -#end - ${subClassNameVars.get($index)}Mapper.insert(${subClassNameVar}); - return ${subClassNameVar}.getId(); - } - - @Override - public void update${subSimpleClassName}(${subTable.className}DO ${subClassNameVar}) { - // 校验存在 - validate${subSimpleClassName}Exists(${subClassNameVar}.getId()); - // 更新 - ${subClassNameVars.get($index)}Mapper.updateById(${subClassNameVar}); - } - - @Override - public void delete${subSimpleClassName}(${subPrimaryColumn.javaType} id) { - // 校验存在 - validate${subSimpleClassName}Exists(id); - // 删除 - ${subClassNameVars.get($index)}Mapper.deleteById(id); - } - - @Override - public ${subTable.className}DO get${subSimpleClassName}(${subPrimaryColumn.javaType} id) { - return ${subClassNameVars.get($index)}Mapper.selectById(id); - } - - private void validate${subSimpleClassName}Exists(${subPrimaryColumn.javaType} id) { - if (${subClassNameVar}Mapper.selectById(id) == null) { - throw exception(${simpleClassNameUnderlineCase.toUpperCase()}_NOT_EXISTS); - } - } - -## 情况二:非 MASTER_ERP 时,支持批量的新增、修改操作 -#else - #if ( $subTable.subJoinMany) - private void create${subSimpleClassName}List(${primaryColumn.javaType} ${subJoinColumn.javaField}, List<${subTable.className}DO> list) { - list.forEach(o -> o.set$SubJoinColumnName(${subJoinColumn.javaField})); - ${subClassNameVars.get($index)}Mapper.insertBatch(list); - } - - private void update${subSimpleClassName}List(${primaryColumn.javaType} ${subJoinColumn.javaField}, List<${subTable.className}DO> list) { - delete${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}); - list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 - create${subSimpleClassName}List(${subJoinColumn.javaField}, list); - } - - #else - private void create${subSimpleClassName}(${primaryColumn.javaType} ${subJoinColumn.javaField}, ${subTable.className}DO ${subClassNameVar}) { - if (${subClassNameVar} == null) { - return; - } - ${subClassNameVar}.set$SubJoinColumnName(${subJoinColumn.javaField}); - ${subClassNameVars.get($index)}Mapper.insert(${subClassNameVar}); - } - - private void update${subSimpleClassName}(${primaryColumn.javaType} ${subJoinColumn.javaField}, ${subTable.className}DO ${subClassNameVar}) { - if (${subClassNameVar} == null) { - return; - } - ${subClassNameVar}.set$SubJoinColumnName(${subJoinColumn.javaField}); - ${subClassNameVar}.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 - ${subClassNameVars.get($index)}Mapper.insertOrUpdate(${subClassNameVar}); - } - - #end -#end - private void delete${subSimpleClassName}By${SubJoinColumnName}(${primaryColumn.javaType} ${subJoinColumn.javaField}) { - ${subClassNameVars.get($index)}Mapper.deleteBy${SubJoinColumnName}(${subJoinColumn.javaField}); - } - -#end -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/test/serviceTest.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/test/serviceTest.vm deleted file mode 100644 index bfd4600..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/java/test/serviceTest.vm +++ /dev/null @@ -1,168 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.service.${table.businessName}; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import ${jakartaPackage}.annotation.Resource; - -import ${baseFrameworkPackage}.test.core.ut.BaseDbUnitTest; - -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; -import ${PageResultClassName}; - -import ${jakartaPackage}.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static ${basePackage}.module.${table.moduleName}.enums.ErrorCodeConstants.*; -import static ${baseFrameworkPackage}.test.core.util.AssertUtils.*; -import static ${baseFrameworkPackage}.test.core.util.RandomUtils.*; -import static ${LocalDateTimeUtilsClassName}.*; -import static ${ObjectUtilsClassName}.*; -import static ${DateUtilsClassName}.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -## 字段模板 -#macro(getPageCondition $VO) - // mock 数据 - ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class, o -> { // 等会查询到 - #foreach ($column in $columns) - #if (${column.listOperation}) - #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 - o.set$JavaField(null); - #end - #end - }); - ${classNameVar}Mapper.insert(db${simpleClassName}); - #foreach ($column in $columns) - #if (${column.listOperation}) - #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 - // 测试 ${column.javaField} 不匹配 - ${classNameVar}Mapper.insert(cloneIgnoreId(db${simpleClassName}, o -> o.set$JavaField(null))); - #end - #end - // 准备参数 - ${sceneEnum.prefixClass}${table.className}${VO} reqVO = new ${sceneEnum.prefixClass}${table.className}${VO}(); - #foreach ($column in $columns) - #if (${column.listOperation}) - #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 - #if (${column.listOperationCondition} == "BETWEEN")## BETWEEN 的情况 - reqVO.set${JavaField}(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); - #else - reqVO.set$JavaField(null); - #end - #end - #end -#end -/** - * {@link ${table.className}ServiceImpl} 的单元测试类 - * - * @author ${table.author} - */ -@Import(${table.className}ServiceImpl.class) -public class ${table.className}ServiceImplTest extends BaseDbUnitTest { - - @Resource - private ${table.className}ServiceImpl ${classNameVar}Service; - - @Resource - private ${table.className}Mapper ${classNameVar}Mapper; - - @Test - public void testCreate${simpleClassName}_success() { - // 准备参数 - ${sceneEnum.prefixClass}${table.className}SaveReqVO createReqVO = randomPojo(${sceneEnum.prefixClass}${table.className}SaveReqVO.class).setId(null); - - // 调用 - ${primaryColumn.javaType} ${classNameVar}Id = ${classNameVar}Service.create${simpleClassName}(createReqVO); - // 断言 - assertNotNull(${classNameVar}Id); - // 校验记录的属性是否正确 - ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(${classNameVar}Id); - assertPojoEquals(createReqVO, ${classNameVar}, "id"); - } - - @Test - public void testUpdate${simpleClassName}_success() { - // mock 数据 - ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class); - ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据 - // 准备参数 - ${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO = randomPojo(${sceneEnum.prefixClass}${table.className}SaveReqVO.class, o -> { - o.setId(db${simpleClassName}.getId()); // 设置更新的 ID - }); - - // 调用 - ${classNameVar}Service.update${simpleClassName}(updateReqVO); - // 校验是否更新正确 - ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, ${classNameVar}); - } - - @Test - public void testUpdate${simpleClassName}_notExists() { - // 准备参数 - ${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO = randomPojo(${sceneEnum.prefixClass}${table.className}SaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> ${classNameVar}Service.update${simpleClassName}(updateReqVO), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); - } - - @Test - public void testDelete${simpleClassName}_success() { - // mock 数据 - ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class); - ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据 - // 准备参数 - ${primaryColumn.javaType} id = db${simpleClassName}.getId(); - - // 调用 - ${classNameVar}Service.delete${simpleClassName}(id); - // 校验数据不存在了 - assertNull(${classNameVar}Mapper.selectById(id)); - } - - @Test - public void testDelete${simpleClassName}_notExists() { - // 准备参数 - ${primaryColumn.javaType} id = random${primaryColumn.javaType}Id(); - - // 调用, 并断言异常 - assertServiceException(() -> ${classNameVar}Service.delete${simpleClassName}(id), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); - } - -## 特殊:树表专属逻辑(树不需要分页接口) -#if ( $table.templateType != 2 ) - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGet${simpleClassName}Page() { - #getPageCondition("PageReqVO") - - // 调用 - PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(db${simpleClassName}, pageResult.getList().get(0)); - } -#else - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGet${simpleClassName}List() { - #getPageCondition("ListReqVO") - - // 调用 - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(db${simpleClassName}, list.get(0)); - } -#end - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/sql/h2.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/sql/h2.vm deleted file mode 100644 index 44de21e..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/sql/h2.vm +++ /dev/null @@ -1,37 +0,0 @@ --- 将该建表 SQL 语句,添加到 hangtag-module-${table.moduleName}-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "${table.tableName.toLowerCase()}" ( -#foreach ($column in $columns) -#if (${column.javaType} == 'Long') - #set ($dataType='bigint') -#elseif (${column.javaType} == 'Integer') - #set ($dataType='int') -#elseif (${column.javaType} == 'Boolean') - #set ($dataType='bit') -#elseif (${column.javaType} == 'Date') - #set ($dataType='datetime') -#else - #set ($dataType='varchar') -#end - #if (${column.primaryKey})##处理主键 - "${column.javaField}"#if (${column.javaType} == 'String') ${dataType} NOT NULL#else ${dataType} NOT NULL GENERATED BY DEFAULT AS IDENTITY#end, - #else - #if (${column.columnName} == 'create_time') - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - #elseif (${column.columnName} == 'update_time') - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - #elseif (${column.columnName} == 'creator' || ${column.columnName} == 'updater') - "${column.columnName}" ${dataType} DEFAULT '', - #elseif (${column.columnName} == 'deleted') - "deleted" bit NOT NULL DEFAULT FALSE, - #elseif (${column.columnName} == 'tenantId') - "tenant_id" bigint NOT NULL DEFAULT 0, - #else - "${column.columnName.toLowerCase()}" ${dataType}#if (${column.nullable} == false) NOT NULL#end, - #end - #end -#end - PRIMARY KEY ("${primaryColumn.columnName.toLowerCase()}") -) COMMENT '${table.tableComment}'; - --- 将该删表 SQL 语句,添加到 hangtag-module-${table.moduleName}-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "${table.tableName}"; \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/sql/sql.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/sql/sql.vm deleted file mode 100644 index 41b107d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/sql/sql.vm +++ /dev/null @@ -1,28 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '${table.classComment}管理', '', 2, 0, ${table.parentMenuId}, - '${simpleClassName_strikeCase}', '', '${table.moduleName}/${table.businessName}/index', 0, '${table.className}' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -#set ($functionNames = ['查询', '创建', '更新', '删除', '导出']) -#set ($functionOps = ['query', 'create', 'update', 'delete', 'export']) -#foreach ($functionName in $functionNames) -#set ($index = $foreach.count - 1) -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '${table.classComment}${functionName}', '${permissionPrefix}:${functionOps.get($index)}', 3, $foreach.count, @parentId, - '', '', '', 0 -); -#end \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/api/api.js.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/api/api.js.vm deleted file mode 100644 index 835c019..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/api/api.js.vm +++ /dev/null @@ -1,141 +0,0 @@ -import request from '@/utils/request' -#set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") - -// 创建${table.classComment} -export function create${simpleClassName}(data) { - return request({ - url: '${baseURL}/create', - method: 'post', - data: data - }) -} - -// 更新${table.classComment} -export function update${simpleClassName}(data) { - return request({ - url: '${baseURL}/update', - method: 'put', - data: data - }) -} - -// 删除${table.classComment} -export function delete${simpleClassName}(id) { - return request({ - url: '${baseURL}/delete?id=' + id, - method: 'delete' - }) -} - -// 获得${table.classComment} -export function get${simpleClassName}(id) { - return request({ - url: '${baseURL}/get?id=' + id, - method: 'get' - }) -} - -#if ( $table.templateType != 2 ) -// 获得${table.classComment}分页 -export function get${simpleClassName}Page(params) { - return request({ - url: '${baseURL}/page', - method: 'get', - params - }) -} -#else -// 获得${table.classComment}列表 -export function get${simpleClassName}List(params) { - return request({ - url: '${baseURL}/list', - method: 'get', - params - }) -} -#end -// 导出${table.classComment} Excel -export function export${simpleClassName}Excel(params) { - return request({ - url: '${baseURL}/export-excel', - method: 'get', - params, - responseType: 'blob' - }) -} -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) - #set ($index = $foreach.count - 1) - #set ($subSimpleClassName = $subSimpleClassNames.get($index)) - #set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 - #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 - #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) - #set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) - #set ($subClassNameVar = $subClassNameVars.get($index)) - -// ==================== 子表($subTable.classComment) ==================== - ## 情况一:MASTER_ERP 时,需要分查询页子表 - #if ($table.templateType == 11) - // 获得${subTable.classComment}分页 - export function get${subSimpleClassName}Page(params) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/page', - method: 'get', - params - }) - } - ## 情况二:非 MASTER_ERP 时,需要列表查询子表 - #else - #if ($subTable.subJoinMany) - // 获得${subTable.classComment}列表 - export function get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=' + ${subJoinColumn.javaField}, - method: 'get' - }) - } - #else - // 获得${subTable.classComment} - export function get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=' + ${subJoinColumn.javaField}, - method: 'get' - }) - } - #end - #end - ## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 - #if ($table.templateType == 11) - // 新增${subTable.classComment} - export function create${subSimpleClassName}(data) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/create', - method: 'post', - data - }) - } - // 修改${subTable.classComment} - export function update${subSimpleClassName}(data) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/update', - method: 'post', - data - }) - } - // 删除${subTable.classComment} - export function delete${subSimpleClassName}(id) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/delete?id=' + id, - method: 'delete' - }) - } - // 获得${subTable.classComment} - export function get${subSimpleClassName}(id) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/get?id=' + id, - method: 'get' - }) - } - #end -#end \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_erp.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_erp.vue.vm deleted file mode 100644 index 99aa91a..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_erp.vue.vm +++ /dev/null @@ -1,205 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_inner.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_inner.vue.vm deleted file mode 100644 index ca266be..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_inner.vue.vm +++ /dev/null @@ -1,2 +0,0 @@ -## 主表的 normal 和 inner 使用相同的 form 表单 -#parse("codegen/vue/views/components/form_sub_normal.vue.vm") \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_normal.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_normal.vue.vm deleted file mode 100644 index 48a404a..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/form_sub_normal.vue.vm +++ /dev/null @@ -1,347 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/list_sub_erp.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/list_sub_erp.vue.vm deleted file mode 100644 index 589736b..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/list_sub_erp.vue.vm +++ /dev/null @@ -1,165 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/list_sub_inner.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/list_sub_inner.vue.vm deleted file mode 100644 index 90b8e41..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/components/list_sub_inner.vue.vm +++ /dev/null @@ -1,4 +0,0 @@ -## 子表的 erp 和 inner 使用相似的 list 列表,差异主要两点: -## 1)inner 使用 list 不分页,erp 使用 page 分页 -## 2)erp 支持单个子表的新增、修改、删除,inner 不支持 -#parse("codegen/vue/views/components/list_sub_erp.vue.vm") \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/form.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/form.vue.vm deleted file mode 100644 index 634d05d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/form.vue.vm +++ /dev/null @@ -1,320 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/index.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/index.vue.vm deleted file mode 100644 index e2cf95b..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue/views/index.vue.vm +++ /dev/null @@ -1,340 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/api/api.ts.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/api/api.ts.vm deleted file mode 100644 index c3044fb..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/api/api.ts.vm +++ /dev/null @@ -1,115 +0,0 @@ -import request from '@/config/axios' -#set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") - -// ${table.classComment} VO -export interface ${simpleClassName}VO { -#foreach ($column in $columns) -#if ($column.createOperation || $column.updateOperation) -#if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "short" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal") - ${column.javaField}: number // ${column.columnComment} -#elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdate" || ${column.javaType.toLowerCase()} == "localdatetime") - ${column.javaField}: Date // ${column.columnComment} -#else - ${column.javaField}: ${column.javaType.toLowerCase()} // ${column.columnComment} -#end -#end -#end -} - -// ${table.classComment} API -export const ${simpleClassName}Api = { -#if ( $table.templateType != 2 ) - // 查询${table.classComment}分页 - get${simpleClassName}Page: async (params: any) => { - return await request.get({ url: `${baseURL}/page`, params }) - }, -#else - // 查询${table.classComment}列表 - get${simpleClassName}List: async (params) => { - return await request.get({ url: `${baseURL}/list`, params }) - }, -#end - - // 查询${table.classComment}详情 - get${simpleClassName}: async (id: number) => { - return await request.get({ url: `${baseURL}/get?id=` + id }) - }, - - // 新增${table.classComment} - create${simpleClassName}: async (data: ${simpleClassName}VO) => { - return await request.post({ url: `${baseURL}/create`, data }) - }, - - // 修改${table.classComment} - update${simpleClassName}: async (data: ${simpleClassName}VO) => { - return await request.put({ url: `${baseURL}/update`, data }) - }, - - // 删除${table.classComment} - delete${simpleClassName}: async (id: number) => { - return await request.delete({ url: `${baseURL}/delete?id=` + id }) - }, - - // 导出${table.classComment} Excel - export${simpleClassName}: async (params) => { - return await request.download({ url: `${baseURL}/export-excel`, params }) - }, -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 -#set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) -#set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) -#set ($subClassNameVar = $subClassNameVars.get($index)) - -// ==================== 子表($subTable.classComment) ==================== -## 情况一:MASTER_ERP 时,需要分查询页子表 -#if ( $table.templateType == 11 ) - - // 获得${subTable.classComment}分页 - get${subSimpleClassName}Page: async (params) => { - return await request.get({ url: `${baseURL}/${subSimpleClassName_strikeCase}/page`, params }) - }, -## 情况二:非 MASTER_ERP 时,需要列表查询子表 -#else - #if ( $subTable.subJoinMany ) - - // 获得${subTable.classComment}列表 - get${subSimpleClassName}ListBy${SubJoinColumnName}: async (${subJoinColumn.javaField}) => { - return await request.get({ url: `${baseURL}/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=` + ${subJoinColumn.javaField} }) - }, - #else - - // 获得${subTable.classComment} - get${subSimpleClassName}By${SubJoinColumnName}: async (${subJoinColumn.javaField}) => { - return await request.get({ url: `${baseURL}/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=` + ${subJoinColumn.javaField} }) - }, - #end -#end -## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 -#if ( $table.templateType == 11 ) - // 新增${subTable.classComment} - create${subSimpleClassName}: async (data) => { - return await request.post({ url: `${baseURL}/${subSimpleClassName_strikeCase}/create`, data }) - }, - - // 修改${subTable.classComment} - update${subSimpleClassName}: async (data) => { - return await request.put({ url: `${baseURL}/${subSimpleClassName_strikeCase}/update`, data }) - }, - - // 删除${subTable.classComment} - delete${subSimpleClassName}: async (id: number) => { - return await request.delete({ url: `${baseURL}/${subSimpleClassName_strikeCase}/delete?id=` + id }) - }, - - // 获得${subTable.classComment} - get${subSimpleClassName}: async (id: number) => { - return await request.get({ url: `${baseURL}/${subSimpleClassName_strikeCase}/get?id=` + id }) - }, -#end -#end -} diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_erp.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_erp.vue.vm deleted file mode 100644 index 3996a9c..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_erp.vue.vm +++ /dev/null @@ -1,205 +0,0 @@ -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_inner.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_inner.vue.vm deleted file mode 100644 index d8542c3..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_inner.vue.vm +++ /dev/null @@ -1,2 +0,0 @@ -## 主表的 normal 和 inner 使用相同的 form 表单 -#parse("codegen/vue3/views/components/form_sub_normal.vue.vm") \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_normal.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_normal.vue.vm deleted file mode 100644 index dbd0356..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/form_sub_normal.vue.vm +++ /dev/null @@ -1,362 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/list_sub_erp.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/list_sub_erp.vue.vm deleted file mode 100644 index 3f0710e..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/list_sub_erp.vue.vm +++ /dev/null @@ -1,184 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/list_sub_inner.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/list_sub_inner.vue.vm deleted file mode 100644 index 3fe6488..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/components/list_sub_inner.vue.vm +++ /dev/null @@ -1,4 +0,0 @@ -## 子表的 erp 和 inner 使用相似的 list 列表,差异主要两点: -## 1)inner 使用 list 不分页,erp 使用 page 分页 -## 2)erp 支持单个子表的新增、修改、删除,inner 不支持 -#parse("codegen/vue3/views/components/list_sub_erp.vue.vm") \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/form.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/form.vue.vm deleted file mode 100644 index 8e3596b..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/form.vue.vm +++ /dev/null @@ -1,301 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/index.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/index.vue.vm deleted file mode 100644 index 361d379..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3/views/index.vue.vm +++ /dev/null @@ -1,374 +0,0 @@ - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/api/api.ts.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/api/api.ts.vm deleted file mode 100644 index 48cd542..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/api/api.ts.vm +++ /dev/null @@ -1,46 +0,0 @@ -import request from '@/config/axios' -#set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") - -export interface ${simpleClassName}VO { - #foreach ($column in $columns) - #if ($column.createOperation || $column.updateOperation) - #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal") - ${column.javaField}: number - #elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdatetime") - ${column.javaField}: Date - #else - ${column.javaField}: ${column.javaType.toLowerCase()} - #end - #end - #end -} - -// 查询${table.classComment}列表 -export const get${simpleClassName}Page = async (params) => { - return await request.get({ url: '${baseURL}/page', params }) -} - -// 查询${table.classComment}详情 -export const get${simpleClassName} = async (id: number) => { - return await request.get({ url: '${baseURL}/get?id=' + id }) -} - -// 新增${table.classComment} -export const create${simpleClassName} = async (data: ${simpleClassName}VO) => { - return await request.post({ url: '${baseURL}/create', data }) -} - -// 修改${table.classComment} -export const update${simpleClassName} = async (data: ${simpleClassName}VO) => { - return await request.put({ url: '${baseURL}/update', data }) -} - -// 删除${table.classComment} -export const delete${simpleClassName} = async (id: number) => { - return await request.delete({ url: '${baseURL}/delete?id=' + id }) -} - -// 导出${table.classComment} Excel -export const export${simpleClassName}Api = async (params) => { - return await request.download({ url: '${baseURL}/export-excel', params }) -} diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/data.ts.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/data.ts.vm deleted file mode 100644 index ff4fa81..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/data.ts.vm +++ /dev/null @@ -1,124 +0,0 @@ -import type { CrudSchema } from '@/hooks/web/useCrudSchemas' -import { dateFormatter } from '@/utils/formatTime' - -// 表单校验 -export const rules = reactive({ -#foreach ($column in $columns) -#if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键 -#set($comment=$column.columnComment) - $column.javaField: [required], -#end -#end -}) - -// CrudSchema https://doc.iocoder.cn/vue3/crud-schema/ -const crudSchemas = reactive([ -#foreach($column in $columns) -#if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation) -#set ($dictType = $column.dictType) -#set ($javaField = $column.javaField) -#set ($javaType = $column.javaType) - { - label: '${column.columnComment}', - field: '${column.javaField}', -## ========= 字典部分 ========= - #if ("" != $dictType)## 有数据字典 - dictType: DICT_TYPE.$dictType.toUpperCase(), - #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short") - dictClass: 'number', - #elseif ($javaType == "String") - dictClass: 'string', - #elseif ($javaType == "Boolean") - dictClass: 'boolean', - #end - #end -## ========= Table 表格部分 ========= - #if (!$column.listOperationResult) - isTable: false, - #else - #if ($column.htmlType == "datetime") - formatter: dateFormatter, - #end - #end -## ========= Search 表格部分 ========= - #if ($column.listOperation) - isSearch: true, - #if ($column.htmlType == "datetime") - search: { - component: 'DatePicker', - componentProps: { - valueFormat: 'YYYY-MM-DD HH:mm:ss', - type: 'daterange', - defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] - } - }, - #end - #end -## ========= Form 表单部分 ========= - #if ((!$column.createOperation && !$column.updateOperation) || $column.primaryKey) - isForm: false, - #else - #if($column.htmlType == "imageUpload")## 图片上传 - form: { - component: 'UploadImg' - }, - #elseif($column.htmlType == "fileUpload")## 文件上传 - form: { - component: 'UploadFile' - }, - #elseif($column.htmlType == "editor")## 文本编辑器 - form: { - component: 'Editor', - componentProps: { - valueHtml: '', - height: 200 - } - }, - #elseif($column.htmlType == "select")## 下拉框 - form: { - component: 'SelectV2' - }, - #elseif($column.htmlType == "checkbox")## 多选框 - form: { - component: 'Checkbox' - }, - #elseif($column.htmlType == "radio")## 单选框 - form: { - component: 'Radio' - }, - #elseif($column.htmlType == "datetime")## 时间框 - form: { - component: 'DatePicker', - componentProps: { - type: 'datetime', - valueFormat: 'x' - } - }, - #elseif($column.htmlType == "textarea")## 文本框 - form: { - component: 'Input', - componentProps: { - type: 'textarea', - rows: 4 - }, - colProps: { - span: 24 - } - }, - #elseif(${javaType.toLowerCase()} == "long" || ${javaType.toLowerCase()} == "integer")## 文本框 - form: { - component: 'InputNumber', - value: 0 - }, - #end - #end - }, -#end -#end - { - label: '操作', - field: 'action', - isForm: false - } -]) -export const { allSchemas } = useCrudSchemas(crudSchemas) diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/form.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/form.vue.vm deleted file mode 100644 index 52f20a2..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/form.vue.vm +++ /dev/null @@ -1,65 +0,0 @@ - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/index.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/index.vue.vm deleted file mode 100644 index 6e8f140..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_schema/views/index.vue.vm +++ /dev/null @@ -1,85 +0,0 @@ - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/api/api.ts.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/api/api.ts.vm deleted file mode 100644 index b7f2651..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/api/api.ts.vm +++ /dev/null @@ -1,32 +0,0 @@ -import { defHttp } from '@/utils/http/axios' -#set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") - -// 查询${table.classComment}列表 -export function get${simpleClassName}Page(params) { - return defHttp.get({ url: '${baseURL}/page', params }) -} - -// 查询${table.classComment}详情 -export function get${simpleClassName}(id: number) { - return defHttp.get({ url: `${baseURL}/get?id=${id}` }) -} - -// 新增${table.classComment} -export function create${simpleClassName}(data) { - return defHttp.post({ url: '${baseURL}/create', data }) -} - -// 修改${table.classComment} -export function update${simpleClassName}(data) { - return defHttp.put({ url: '${baseURL}/update', data }) -} - -// 删除${table.classComment} -export function delete${simpleClassName}(id: number) { - return defHttp.delete({ url: `${baseURL}/delete?id=${id}` }) -} - -// 导出${table.classComment} Excel -export function export${simpleClassName}(params) { - return defHttp.download({ url: '${baseURL}/export-excel', params }, '${table.classComment}.xls') -} diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/data.ts.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/data.ts.vm deleted file mode 100644 index 92d3b2d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/data.ts.vm +++ /dev/null @@ -1,236 +0,0 @@ -import type {BasicColumn, FormSchema} from '@/components/Table' -import {useRender} from '@/components/Table' -import {DICT_TYPE, getDictOptions} from '@/utils/dict' - -export const columns: BasicColumn[] = [ -#foreach($column in $columns) -#if ($column.listOperationResult) - #set ($dictType=$column.dictType) - #set ($javaField = $column.javaField) - #set ($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - #set ($comment=$column.columnComment) -#if ($column.javaType == "LocalDateTime")## 时间类型 - { - title: '${comment}', - dataIndex: '${javaField}', - width: 180, - customRender: ({ text }) => { - return useRender.renderDate(text) - }, - }, -#elseif("" != $column.dictType)## 数据字典 - { - title: '${comment}', - dataIndex: '${javaField}', - width: 180, - customRender: ({ text }) => { - return useRender.renderDict(text, DICT_TYPE.$dictType.toUpperCase()) - }, - }, -#else - { - title: '${comment}', - dataIndex: '${javaField}', - width: 160, - }, -#end -#end -#end -] - -export const searchFormSchema: FormSchema[] = [ -#foreach($column in $columns) -#if ($column.listOperation) - #set ($dictType=$column.dictType) - #set ($javaField = $column.javaField) - #set ($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - #set ($comment=$column.columnComment) - { - label: '${comment}', - field: '${javaField}', - #if ($column.htmlType == "input") - component: 'Input', - #elseif ($column.htmlType == "select") - component: 'Select', - componentProps: { - #if ("" != $dictType)## 设置了 dictType 数据字典的情况 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase()), - #else## 未设置 dictType 数据字典的情况 - options: [], - #end - }, - #elseif ($column.htmlType == "radio") - component: 'Radio', - componentProps: { - #if ("" != $dictType)## 设置了 dictType 数据字典的情况 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase()), - #else## 未设置 dictType 数据字典的情况 - options: [], - #end - }, - #elseif($column.htmlType == "datetime") - component: 'RangePicker', - #end - colProps: { span: 8 }, - }, -#end -#end -] - -export const createFormSchema: FormSchema[] = [ - { - label: '编号', - field: 'id', - show: false, - component: 'Input', - }, -#foreach($column in $columns) -#if ($column.createOperation) - #set ($dictType = $column.dictType) - #set ($javaField = $column.javaField) - #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - #set ($comment = $column.columnComment) -#if (!$column.primaryKey)## 忽略主键,不用在表单里 - { - label: '${comment}', - field: '${javaField}', - #if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键 - required: true, - #end - #if ($column.htmlType == "input") - component: 'Input', - #elseif($column.htmlType == "imageUpload")## 图片上传 - component: 'FileUpload', - componentProps: { - fileType: 'image', - maxCount: 1, - }, - #elseif($column.htmlType == "fileUpload")## 文件上传 - component: 'FileUpload', - componentProps: { - fileType: 'file', - maxCount: 1, - }, - #elseif($column.htmlType == "editor")## 文本编辑器 - component: 'Editor', - #elseif($column.htmlType == "select")## 下拉框 - component: 'Select', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), 'number'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "checkbox")## 多选框 - component: 'Checkbox', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), 'number'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "radio")## 单选框 - component: 'RadioButtonGroup', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), 'number'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "datetime")## 时间框 - component: 'DatePicker', - componentProps: { - showTime: true, - format: 'YYYY-MM-DD HH:mm:ss', - valueFormat: 'x', - }, - #elseif($column.htmlType == "textarea")## 文本域 - component: 'InputTextArea', - #end - }, -#end -#end -#end -] - -export const updateFormSchema: FormSchema[] = [ - { - label: '编号', - field: 'id', - show: false, - component: 'Input', - }, -#foreach($column in $columns) -#if ($column.updateOperation) -#set ($dictType = $column.dictType) -#set ($javaField = $column.javaField) -#set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#set ($comment = $column.columnComment) - #if (!$column.primaryKey)## 忽略主键,不用在表单里 - { - label: '${comment}', - field: '${javaField}', - #if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键 - required: true, - #end - #if ($column.htmlType == "input") - component: 'Input', - #elseif($column.htmlType == "imageUpload")## 图片上传 - component: 'FileUpload', - componentProps: { - fileType: 'image', - maxCount: 1, - }, - #elseif($column.htmlType == "fileUpload")## 文件上传 - component: 'FileUpload', - componentProps: { - fileType: 'file', - maxCount: 1, - }, - #elseif($column.htmlType == "editor")## 文本编辑器 - component: 'Editor', - #elseif($column.htmlType == "select")## 下拉框 - component: 'Select', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), 'number'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "checkbox")## 多选框 - component: 'Checkbox', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), 'number'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "radio")## 单选框 - component: 'RadioButtonGroup', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), 'number'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "datetime")## 时间框 - component: 'DatePicker', - componentProps: { - showTime: true, - format: 'YYYY-MM-DD HH:mm:ss', - valueFormat: 'x', - }, - #elseif($column.htmlType == "textarea")## 文本域 - component: 'InputTextArea', - #end - }, - #end -#end -#end -] \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/form.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/form.vue.vm deleted file mode 100644 index 1804365..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/form.vue.vm +++ /dev/null @@ -1,58 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/index.vue.vm b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/index.vue.vm deleted file mode 100644 index 84ec4bf..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/codegen/vue3_vben/views/index.vue.vm +++ /dev/null @@ -1,91 +0,0 @@ - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/classes/file/erweima.jpg b/hangtag-module-infra/hangtag-module-infra-biz/target/classes/file/erweima.jpg deleted file mode 100644 index 1447283cdf1b49b51c1204a160e01cb789e957a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18385 zcmb7s2Rzm9+yCL%A+xNq$sv0yBYV$7${yL72_=by>^(#Fv7$0Ev!kp?5wb^FWrg_P zpQHMH%lG#@|3|%E9nLwQao^YbdXMYm@crQ@7>SC4vH}bP0|vtYe_)5BFj*KJ6BGIi zzOcYwY&>jiEG%pSTwEMHLIOg<69gwt5D}A+5D}9SpEyBsiiDJ$f|8Pw@Z@Q#QxsHW z6qFRuK``LpJy_WI*x2|KL??(S{?A{B%`j3t3``76I0h*UlN19^igDNqI}3xsF@Ao* zj=u2laWQZRFtM=V;CVW5C*U2>{rvjEz{bSF!G+@;j=%`v;8_wl33v)+_Urjy|Kg$_ zEYOL&EWqgCnJzFG_?HFa?p@d+?8NuGcTew3GT`ns5n#fwFfbc17@A-w_F=eqSjKR; zC??8VnnQ-OJ&kBTmB9>~jf6qSOyt`gO6|87%2A|djZH9@yYjjWB&Ro!>ROqY1@<|Y zc|P4G(mthFSx+S#-!Mn8dyS3^ETUjdRAj&UIql~S&E5+R@66)&C29)F?Sy-m-fmrFjj`}75A z#U0`pyj^w}Jn#_4-||4(p0Hr(zTObg<@h{(A+|jGdrzzt^sksBg=A19CU2m;|q@V?(-Q-TUlUHCcE>k7!N!Q88=Kd@gvmHAV_*V?R zN)s3OQ!d<})?>Y&3!RfW5R+#OM#n&EN(jqjk3PEK0z7ZcUYu)B7S=2Vo-*QoNoCHn zw@GBdFntXheD%!tA`GJ$<5XH#(337KtVKju9-?hsD(4U;Fr8o=__^`&>jU+xHuPUx z)gHq2tu1#E?ICdG819;K7EXX(_bCpU`;0zj6^>9*kVL8@Z05s-n{0 z5%j%t)VuM_a-GwVRAceS^+OoF%pr_@=(cg-7kl#MVz(AuXj4h}TM+zD7v*5YWUw1@ zcugl%%y3{*?J(R2vfk|@2Y%eU_?uy-#btxv!)J9j8cAhuA=GGOPN}P*tT5q=3#n{* zS|l)0X{JLMwak(dp}5=#{o}@TlJ)l74~H__P1{z|61w{qU&{J% z?lfX7g*|Cfh8cW~y9<{3s{WQ)XGGX-5ek{~>uZz2sO?l>3nSq-^WKlL{%$~b=IpI+b3}vH?rA4U|84`l&A1d141Arr=m8v&nim7z^G_L#>Re*LqX;SlZY5E-z6<=Gjq!T(CYC3 z1z?bY*4?>XxivmIddt~qxxT9M5EgL=3knw(+^-$owB0!^5zRp&v3 zOMEV?+A*vsQ4cBh@!e8rzC_BHw%)w^RTLs^#lc*oKy8*iMJ$Z1y5Lz2j>(DE4c2(C z1sY;HZCRHO)CSxIDEFF@Axe##LN6W{_RQ@Y+*`khZ*3xu6YzjS>!Yv&@|8FBl$$ks zgo5-=I+Y?}bewNN$A);cz*AH4G+8(m0(6x}deZ z44=nrlCxEMavdMr+i2e>r%uztdFmgLCf*~yNE~k>P7S}infXyg0lA6GFx{7c{A3>0 zdQzUK#U?L9lTzVw-V(PZe#yx2S($hOV*!2F1vb%FO>aIK;j`Ll=Uys!$eJdPAJXii z?nRBMd`0gxL13K?+w1<CvsnKCQ)ZGB}`NLRl94D ztUvT$l%qFotTR|7%YHf-nc+8dHO2NjC|5E6a z6*#SyNur8-rPIKohUc4@C1U~YkOgYd9^N;PjBw^q<;BP$e2bi~jofm>l&1g)8U0|mE{Q4mqt~RertE&QOi!2o9(B~{F!a02`znU zM%Fhv-El$K6zpC`4-~CE;!Bdm``@Id1dtX&9(qL@UcYI$Ko-wcMMZ&+Z+3_5|!PQ8QI%Oh7#>n;oaizjrJ(G_ET9ua(s8Z2v-oc z{pewsq1IpP?n|vrTK9_7!eZ|E^>?|x>TX#LYFz2l4(+q)I~L(z)ZVOz`)7>z;=O;o zwUMIF+8E>oejL7iPS46{={XApISL{t%+GSzV#Zxh7) ztoBDKKfm5!gGKeZ2)Zf|%X(Fms&@90$8ub7l;#{++ zGl5-augrriUaXKX1!*5%H`?YDUuK;TX*mwwZq(HUb@*GVsNf0(7A@N}(bjj~Q8X#2 zmueeSKIAZ^q*g23Y+S}Vj{E^JZtAW}Rf&wLK@VSMSW1_Ylf$c%M6C(4@g~93TVUnuX#LAFYJR~59Ig~d7oXzcM6{x~h^X#KbW;?Gz#rnRFGqAO3g^ie6_UIzJ zDV!}p^*V9@RHO~eDK2@ z`>Qy08dCeZzgc<+?7tr)Y!nue<#`hpq&3WTx@z@m`)rK0%zZ_Eo6My4H?(fgITx!R z-=a8zMiqcYb4D_ApPJ>h@R}bMQr^b`~M6~TKSj}8@@ zs_BUqyR*rMJWMNv&YJI^KR$ui6+jSS)hojno+3PJfAuXA2eJPu+QMRu9sm&WfRh4^$3@mkm*J=oraIo z=Kt2&;nF39X`ht9ex4}CWisN(XYJ0<8;bAFUmu&lXnY-_j$&KNtk^Vs&>*vJ+?`Rq zFE~4}%(vD5!Z=Uz!#>`S+_k)saib8>eldNc%pb9f#dy(K@rJyUa}`^xde@xHa|)p; z=uRa75eZ>k=-NyEq7H_>+x%g4K}ua>pu25|HAVBfbh;W6%T?=Y$k}HL#NKe`mV3AC z5FmMsZ9ZE(DF~bS5dYnct;zwZy!Br&82TbhAoiNUY-h??36gyj;z{T3M$d3@k3(4Y zv5u;yko#6h>D|{EaFJf*Uu-FxEzE90_Zx>MgxMidzHPqXA*IWOG~iB45j>c_VViUE zvG9T=-o4}*tS{|Sovp2PXX6yuplTWD;KQ@~To(f|I zoR^kL>G8sbgR87N>P?$GO0&XPPde>Zr5eA^=yr2=0yk3)CI;$=1_yDq6T@MIcgZ_cvl=!*%6# z>7qWOEmQ7u4ZC3zRIgmZ=ae>xP74)zJ{MXtRil#PyQYd@?nXmU+i7I5EN=r8`oxCm zep@nEK_s_TB*2w?l>>i6QewHmoEmtqnDKS}JYP-E$N@C)pcfngkCJq@+wK$_UqKb+ zDTBA-vv~Q^h!{# zjb)X~Z@;tg`o(n?)%{R&HEX4%fQrh{;BA|BGD_iLQZwl89Z^lJD=`3av^M3bM=F@mdIJbt*}Jv?UJBIl_rUjQhAM22Gr zyKHppGf)baiCda)%1!EeFPY&J;ldRu%w|L$B4+Bs*2VZ^JD3@6Yk*5v>XMw)C?FjA zEp3T#d=*kZFh5eL)cC@ z`W$8Sps7z#mZgb|jgMOX++-)<$8CstucDcEhcv{aM+aF~P54pI1Z$6VNY0R%?3|zm zorS}NP9k-r*^}E`6h-^$AKqTa^1SaTJOVn2@g^bDw%qk8uE9E?w#X@Jj&|+$W;hhy zJ5EO z)FssO1~au>nB$aq0$!$@R?Mj=GCW*ta~Q2Pg7ac>mdMXw>!tiVz_dd!e;m z*mg7?5d3ZhjZs?C_~=W6@NSl_;IE)vky8y`^#Qse9dr=>8PGvKnASVfCftbGqS${$ zYMzbmAj5eGCXr+&E;XZfB};(z4`KZezMZnFVm4OxD;OQ+Ue#PLi}n0L<6&oc5r@=9 zbcv0R${(1hL;}0b<7hN$9JTM7?cG`0cvQwuD9}33uL%zeA{Fn9V81B5`)^QDn`KQA zi})`tkcG+sl25oeVT|!nGe8=2hO6erI6y*^7`k&f%V@cx_t%S^NJW6^pN-L&K`KS+`uiaTN|OhWd-%y!Gx_jp6_Jc(OG;( z`a#NfSp?~b?)SGujdK+xzWT3huf*F+NRFt39PGl&POFX4MH*lcnXh(73$@9A(yTlZ z=C6){VHmQfm7L)uuX?b8!eq)-n%r31;(eEbllGFjQ#Ex|ITNL3RJna#9HYL=9KHnK zBz`Qu%v20sV6k&#P@s64T|54EWAOuaAT7CGhqs^4U8!($(g*XW=kqNOXy)YQ9&tH6 z$`R0EpbKtvV)Sp$p{4hwl=f`8SjS_1^1XyZZTO_6Xq{*SQ3`P+?Q~Rl!h@t#!nn)l zu+}j>L+cwI>e|!hKUPYYZ{WQlw#Spz96Bd4p11t4Ygr~gYoO=>Gh|(9LzKE2D*s_h z!qI;9Nj~VAj=)i&du9L+79C`gJos@jJ_C~!R`l6itw5FH0~9z^Ip~4FLBY#x4mlki zCCLsXT#hyU9V8^SA;AoZ?emKn`m(Btu_q?B)TiBEi2yW6{X|19Xb((4N&jjOjj4v* zq;-|i=8xx|yJ}ynR|em`I_nREh-7{&Stf3o27^WpamZSZvicH{C3m;3HwBn1*)+QWUg;QnFR(^aWhTodzth2yBp6z6AGVw zwm}Xw6L`atAL5vkMdQa2Ik0Y#%HPN>E4*x9DB0%o?IJ!J6Li`E5GG=dB{lcOvjpN2 zfc66^!oUo*7Y{iISEe&tXSmbcld{}udQzmVYghYRTdj)9BDOurAD2C=DMGwC&FZ zJ!V2(O8pSFk8x6D3?p2zKZj%0ysV^hcyQ47L?~l66trQamw5|94wo_Y;$dicnvtY=Z7!!XT**3G)920ZUw%&)#9;0thF<^ z&SeLG$)mLF$Y$=OVB1>FW6Hg3IcIDpMmDJ~#%+92_)96sek011m%gzMzA)sPIw$Cw zW}e#ANv4jp1j-fi>eOo&kfc_r1vO!;RSrhpILA7HOpupZGV+saR5Lrs4cPN040yJg zD{9;ixz%3D?!thh0)k}^{&i8D>Bi=ex zjx0F|ufBNkVnpcKlKq#>8>tjhzBr~~KyyZ3GBogqG$(}!5zw3y*&D0JbA~eD{CmWM z0{mM-J0n0_bi06Lw1CzM^a!w4M@{mjSG0|a))}}=OK4vND>GuYCdzG{>6KL`4o;XN zg*KhAk6rg{+vy4I)M;uSi?Y|r3pCvPFFuy2`y2%`tY7p2v|8kQ42(Ps%XC!(ok5qe z1^W7VVVUl(SGr$REkav9yR}rc4S5Y!2j}!Bv{yAsU-lZ< z6)*2rr`qI7LESJZ4(f(aITs6WQQooYmF{x)0z--sur?Y3KB<909r#%6Gr`i|rEpo~=7ti-wA#DA9*+b1G@ ztutaR+qh35R30Wxra~41O|gyzI*V3eN?CmE8aR&M7=$=g!p|b2dUOPhpb*XELcp;A zOdZO!ggeD>Nx}ZX34<7X!2Vqn+^r*V1ridYuagcJNXQEQvc@7+hK*ASXO!iL1*q;h zU@C!7ZAxFO9kWfc1skK5{zZ2=-H^`7P?RxOtO>B^_WoB;nw3;hxTj~tuR2wZp4r{q zWE&)ueJ;4#x0-#+;&C2fPIvt732oLY@WP`wxp{iR&}L?o@`fBpamxT}*Mg@ijDecz zVG2;BZl|sz^k*5;7y2U}>>xMt0P!I80`Ehy4sE{R)|0>>RO@OM{T=PCP%H)Z=on@v zO##oP8U^w=O;G<4P#y>BALMc0MOOOrH8M7iVc?eqB5c_5()7=?g#?M31%IeE5F`|D zmuCA1V}PFfeySVjx#M2{eKG5_n6h<{QP6e7c^%(lVmtL8*=V~SBDlh^RVyit9c$P> ziX}c*Mr(L$q`oHXK)i0o_B=YTIGz>ecK>+g2=%#Wu9~H9G}talNoQI?8?>fUBm!-a z1}E4m2~)0}`CKlY82Eu?G%C1UN2ngV6UvxverC+p$Mf{uuC(RU<9?};5FPdl%t65x z%dePjJgI;WnD~d}r>TL7&-GO%;?_`I_4@#{Hq)59AAZ$^bY-c0PIm4x&9A0;gi=XQ zS%JSm$Iu0poAw58MXLIbTywh~mG0N~@*yDpt6r#RND4}1XWef2g#0Noeo5|}`ukGn z^D}J${30F-EGEtR#(r~5d{O|efe2772omb~KuX;S;<~x#&ftpBI>XrsN~vQUfx`jw zig+AOx_{((pKP|PntukkuUr6^ZxErmTxc;J;&NtRpm4g;dcS13QDOOfC{IJSNc-*X zmtKzoE6ULQ@7#4-X2eVY!P?8$MNOaj1Np%qp;x`eqBOCaVicrX)aZ0erc)GhZB$mk z@B-Jim_KwWQI*9)9zTNLMZhK*qwtEJ9g&~g)zPHhnXCK?_r|#2(mQ^@1vI{h{A6a^ z>UxE!H9s${+yG?cj$QlJwIn+`f*>JM~z1rnx$ zQ1_ZJFi)|18l2e=<|)o_24yf$LCX~jA?{Ngl~sutsh-c9GL8~%fyr#m#oYyqdhbVp zO=L90I1%Swb~>LzcB3aN!Qilr(d1WUGlxrEpiZX@G#YBxU;Nx3epo62T!^2M<`kD zIgQt~9m39xy9u%#6Az0X`4ZRO>*h|2315q_#BmxK;+8o+{_>`ra!+QDkjdP!wo)XI zj&ob|%$Kk|W;hi5AA=AlnlHGE0}63;HFNAAbLoXU%b@R>daI3g!Z3B3>R1{=dH>So zLarxhCxp`6-$9RM{+T<2P`!Y+;2$bg1U;v#0;*m_q@a74&#`g6w8k%RwA6W$P4&H= z+j}1zG(Ml2r2bqT^r*;}+KsW){Yy!UgXG8~t7?U>Bl1DO2DHhiY;xB$g14Ja3V%-B zQU14Rq2KDm)?lo~!`0%R^{_uu@|>WkVK$Mf)!)b+=PQ@nItM0VvbGLsd!t?>J(W4B zfHNn44wt}8A>>uuBWR}JVNS;nW(p{#G%$&Q>I@Vl7(5*fHYD+HXj2!7ZV<*kph{We zhJ-FRV$rKyy~Y&GMWEz;=l^$>Wc;7OE&4P^rgvbO-?Kk4+JuS?=`}-hG6)EE03VhY z1z|&JJ~+xPVd`F|p;D&^Q_T(i+q9!o`V#ci6%1C@+#{x-!D6O2O8P;~S{F|~aK$k7?tj~-yGhM`tvrA zMzH@F^@AY?n2a--O-4-tLUYMWL(c^z#RU&CN`pATljt1Bb_z@qK#mhSEe8_C$p8{Z zoujDQ=P^gm9RD#XCwPn}0fD4HI})>hPp4)SS)1EL^ub16e^*WZrS5bHa9Qhpf^?$5 zWmWK({*0i{a(Gne=oz&`Y43#q(5-pZQ0Q(Ark*kU5l1j3xN*sb<3j&ybC3+>cJd#y z-IPF1vf*m=2aBGBh8z`T)kP?BF=6XFM))ONLpr|bl{tj1_<;|QNRq%XFtIUk;J9!s z7#8%wK1?_{3 zxfJ;DNVH%I_Nbdbwr08>-cEA6f5i_$TUwsC3cnve5R=W1O z7DM4Tls`SWs5$GXTRm1}v^GO}Q;(4XFNdAst@Az2GPjE${;B;^FXF4{j|M6gaJAObxyr^<2Gs=yH#l0p;^=?mp zrjsUk)!;_|TwL__dXW~xv zQfpor6aOP2dsDV#LM<&*{1v@BLC}vDld}2AxYR>6eMVfj{V&TG^qsySH z4l_e)%}fum>Q%L)lvyryW)^-+bJ*hq=uT^u%_&;b2~!Hf{4>(o0;nNH1P~Q74%8B`iqt#nsee1vbuJB%;yb z_Oi`QpZv3i29ufA{BICSH{I@S+yCGTiR%_p<{6ndF;+5OFyP`^{(iS>bye!DjR6e~ zXRi+G!Oe5aHqLLS|I6zp(fctQ*Ff)g)>^YLW;z2ETUXNq z!Cf*dXBtlkGWi3h`PO$sVI@0 zwiEYXi$@)kSVa0oR!=_g{n6<*Lt3I6$L8dtydGOw7nChUq~OW5>t@gZ_GR+I<#=wsZEAq zM%hj5<7?I?iyIryitDC*H!p45X{5F+a*u`(Wc5UoXnZo4#FkKm)~-F;r1m-+!2@xn zqo1C&QzkF_eHImuae8IXk4i{lk6?6daEyR^=0%_$*_gE01T{+p}GF9B*-aFaMH1*HMv?N~1w6DXBPY;OD*5$De#H zo<*WY=GOB&N#DdT@BRG~r6Eu)UnTF=?)A2t939ey$Fu5%HO+x8*APpi0|k#~$q>CC z%|Flg$8$85#KMw_ebCvuyR1|6qE=S0SKe)_WxrmuT%DFa`q3=*%FwPQIY)whjOp`+ z)3y3basRmBpV!~`or(gWIC#RB`FXmiISbwOhAf5|B{^0zSRzIc8NgPb(sxQS0P5LR zOU#7$#EOq!SWef#eGZYrH-@5e~QBwe3XW z(&~Zj57y8Z1lw;A?q~0lG`y8xxYm@5@=l~(&GCGi|CW#?Abfa`g)Rgyuoy=6Ns@X~ zued&8-dwAG1kV?F)P8lC(_i=8RuK%vqI1%Mpsk_L3!wc!9p>o1hSB%cCv2J*&gPFx zn`sPM6ow=YslTe;H_`Cz0SUvm(4{)xQUZO199uS>1&`f@Hv@C+kJ|KQ9d%^{r)5Gn zw|q1v{>MtESH`6+lhK{m3uHBeXOID)Eo@B4+e~@$S7sgnT`PF z8Ggmz^JAtl1Q|&-SAV45xATCVmThEFea!`;W0?5#Opih52Q3%fUwzN(zMidpueWS- z>F=)j7xq9|{o4wCQP^9$ztaCV7H^Fks!}DZJyk*dC|Ro?snW~dx+tN!muS>`2vZfJ z_6E@eC^WoKMr!Grl)&ZfAtU zITGx2WNYJ2*BUH_)fqfOfwN4md>C6vZZAoXjq2!Eb-xh|p|?=)Cwhm!0w^Q*E@$0( ze!XDmiR=3NT>{YKY4i&pg#5sL-S9AVr_^)SX-|Re2)MT);DS~Fz=>`JU%O1{xzJ=o z1@)Z)NqITYcf?$&M}&^WyPr_{hcPpokf@my)&UN7b{R|P&jV|(NCi)vPg+Up4W4DlRAiIn@2 ztP%>b(x9DjgTlL;0Y6E^1{DgZP$VWO6u?D@UBHmt?oSF#ma+bRt7806$9sinpcbG5 z7LfML*+{YyveaHT$OPSyg}j=&JGdP!g=*1KNXTb{&WRW5^Oy8t_%8JHM}+&Ypm2vk z@gV5G$(C^l9(B{kpy%7}I#W?1-+!P~8Dd^9)IpNJ;LN%Gfby27f1K3Ek;^>;hcLLP zihtl@MEU_)dHTw}u44x|j$N!Q%CmkXoQ_!$uOK(Y{@kWYQO`8T75$XTdrGq$s{1|t z87cwJ7D6`hC&sb?r~#wp+DGpU79v8%C2qVb1B+Z}yRU zH=mgy4J@sYoO+S%xypJP3#HLt>Fk6SM8|vxz(V19VC>ileXgAKS%MhJgG#~oyr-}{ z;#t8y4H9{IrD746L2=p3+tKp&XKv@IveEh~#*IX$*85uXO2OzhlwQBemHWF^M|xI0 zdW0OmgoQ+P3p!pco{H-5f4NiE;b zZ$OJYS&5YcKVPCZY=zyf_x?O*m;QZrbBwq$u^#sW)^o+meIC4j4w6-*guf#?9p{GZvQ=yMF28O5M%(C z4IzGV=RdA{Y$?8szI<`S@8gTPo4bYu1JBhiXf8-v&lpX#xmOBLRMi&^XHMJQlj)3^ zB6|W;y$kB>?{e>0Nlps0y#4LXignrO^Xv*wNtiD&YJagofWTv*ihaFPw|;)NJFrCJ%UH$ZG6vQUaOJ5m*0cJ^0lEk7~JG5Th`P? zKY%no{qxD$#@Mf1VvV5>+_pZ3-8XP*QwP)%JnycR-wKhDX&yui6R*CXqMK-wt+{nw z;Sz8GdBAVTxz`lvPU%+F=NOcZhTH>E4~x8-O4DDKpma2j67m;7A_i6yLW=quphEzG z#X6ux|3!4$((1ld5HAoN$vaX+c{)@4XkB;&h)3pVKvd31#w=Gyq39M#(e$QUbVJy_jF32h^zgECx7T?77EvL$0 zOo6)CM}<|2P@T9Oed->>9UEINl$8RCQXn zLH8zK29N_{*F7mE4Eq3u0-XTr1?ehwxupdYRXFDcG!L*v|Dzt9EHZ;|KnW2Ir(R3z zLBO1e{F{9P3Cq9e0TNyo7Im9CMO#(9o;{-|SKtr?QDsL?qEI0=ATly~b7*4x&V`D^ zCaKUIf=A`_2LYild{P#>d|_oFtk#wU-EtN8xScMS>bqQevDA5SEy;ou_1iP}gt?5| z4)H7L7HXLSOk+w3BtGU&A6}oSqK;I<@*9IJhow_!MAgj5+yIoh2 zAhZu;B=XL?b0*7IQIgF<`#|r3Z#hN);`ktkhTOY43CX%2ks5CgW`_kD2i_>eqs*uL zWWMn*%^h&2*Id0b4jC;8dKu#%^V1`Z&7r3IvWR%vLl}PiIi>jnky%=Wm@FZkL)cX{ z92ye@sjlnAX%gBIzgHw()K@tAbj$X^a zv+0OwYooG?PF(IEj0!ou0n|?yI5`^^oe8=HqTr@m#5>O)d^z)0R(yXWsdh+oOZS`Q zPX#bO^tsRV*-J=H;$McbHd%HpO-q9CCG{qx?r@PmaaL4bfr!by`e_J(V)ro66KnpD zChfanA{Yw1x-OJB0NEq9&U5m~pDJ~z2rT#p)JYi@1b{*XoVz(dESCT{ml-qV{=N?q z1w_=VyaGcjGHzV*vO<)1nnG>Ync~Hcz{I1=ITF}ZO~CYjLF?;2 zAbkImzDfOU^dbdwA{*B_0ATcfYdq=^DTkJBOWOHlcR$KIW6L%FqB|!uK=*kczC8pe z^KTcnwzmWHLK7C?&^cT$M(KVu(AuIu-U^WJXGD9~zs`|JXxK+n>i=01W}iVG zr6@<>wy{meMso6qPWXalkxYfsBWxs)NIFQ>+x9sza$KPV8Dj1APcNz+*Q)f9@dLL; z{+F1cABq{a%GR=xL%i!!rQfesmDQWcjCv^S@GNyl4tqusw&{caR5|5LkTjh^z zX+R%Ht(Dm`;4>VSUznlvA{TsnEWHS4$EBxd{#?{px9@GucSuuBjIMY2M^rLXeQaKYy$kR|hq3IuZRO7x-jYE?3+5MwjMUAz| z+UsAFkxr-xha_((Mcfo3xUJ&3){Dxuo*Vmu0C~%hS5q#?26B(esp!l*V^B_iCCP$B ziHq5is0Zw4!LS+xuZ2vffCIpak${NF z2qZd@oJEmOA_a>c49K*9?gPDt5%jP5*6eMy*NR{7$Zu`)N3C4hTaN(I6BHf?gXk%) zIxO4t!<{^VMbJG!iVkE0=^r7t>>^0g7ZA6XqCmO?ZnW%6qwdL^+UqQc2jX%v68<2& zTBcem9SsFdCMvpT&YT-AA-8}iH1uxYTf|=J-x$A88pAhaTt$fm90iD>nvHNgL;C)c zK>q-ri_8VaOBgadP#1>k8OWiddS2ZZEa4I0*`-hRzP8Puwj2iq6+h+CAS&xf9(BA| zOdi^?6Z=3-=<87>ayd-xh^)S^d>Fl<0m&~2et>}fa)L%*(vF-UDZtyWoSEqJ^Xr8Q z@d4q#RU}Bd69kK)*A@fUND30my>SEOzy15K(E~b1-7(YYo0%RcLi<|Qd)*)frL!4A zLOpvEY}>wI3KrdU{~I7K!`h)zJeCdoF_!56L&;M+Q=JE)k8p!lp0#AlI2aLRd940xO8)2c;q%_wa_-fq4KiT0YSH z;4?Y@h~dHwAgk0kn+&Xy{$5Pwk7?zX9UYzMNy;Ch2pW+5E(Y|2Xb@+iprjwas~tlU zo8E85?$4g4)vQ`MrSLnT0;4d;UUd*IgE5xMK=zs)5*lN%(D|Q4fm}@QD9Sb?|D^q^ zT>1W1=HzAnOaumOPdjyCLE{kSDVwtf22gBWH=2GQ1Xbc?Cs98o2Qc8kx%|)b9Q#d> z2wwviTJy`-K-u)o-`Vu{3^3C~kisy)e}~7$!i4|)Pxa7mI>Evw#bG2P=abeZpBmvzi;Fz^^9|;={p08WvC3Y?8h*Mmb)Au)n#!f~?Z7 zm^h8Nwu#)$eeMx4t02Rv=Km$2x?*~9XIs%GUoWBOQuaOZk;mUfItJ>m6ii5*owGdg zUWZ1T9tJ1)p#K@!zXnertNBD2*YO}?A*|@jJy^$%qAs$3n53oR(HiID*A<@%g>Lsn zNQ<4-tFkqrW%lFY{3ux-7U-9&cH%OVl<_;4Q~5R<#EvS*7~D|DNuH%==|zgTdiZ2veKD@y07V|$L+%OoSyy2p^|K;kOJ?HXLNf&l|! zXF9be{VTevm)=RB+Fi#^MzooQH-G1%=X~%b(95*qLnG|Pov}k0SWs55pjgnKU+W2e z{|#7BQZONw<|kp2xl3`$9KDv{*U3o1_B`L^i{NL8Rj+(SNq;wC+0n6^h`M1pMLiUxm6zVxu^+(Dx0;X-q zTq>8_S*A7W8(3U)c~eXqzGG$a`R-OiC#P=WSEfxkG&=-_PhOeqmGvKK*CVHjxOBZ@ pEwzL`>i*8R__Kv1*C}gmHZq>QI%40h(qzO convertList(List list) { - if ( list == null ) { - return null; - } - - List list1 = new ArrayList( list.size() ); - for ( TableField tableField : list ) { - list1.add( convert( tableField ) ); - } - - return list1; - } - - @Override - public CodegenColumnDO convert(TableField bean) { - if ( bean == null ) { - return null; - } - - CodegenColumnDO codegenColumnDO = new CodegenColumnDO(); - - codegenColumnDO.setColumnName( bean.getName() ); - codegenColumnDO.setDataType( getDataType( beanMetaInfoJdbcType( bean ) ) ); - codegenColumnDO.setColumnComment( bean.getComment() ); - codegenColumnDO.setNullable( beanMetaInfoNullable( bean ) ); - codegenColumnDO.setPrimaryKey( bean.isKeyFlag() ); - codegenColumnDO.setJavaType( beanColumnTypeType( bean ) ); - codegenColumnDO.setJavaField( bean.getPropertyName() ); - - return codegenColumnDO; - } - - private JdbcType beanMetaInfoJdbcType(TableField tableField) { - if ( tableField == null ) { - return null; - } - TableField.MetaInfo metaInfo = tableField.getMetaInfo(); - if ( metaInfo == null ) { - return null; - } - JdbcType jdbcType = metaInfo.getJdbcType(); - if ( jdbcType == null ) { - return null; - } - return jdbcType; - } - - private Boolean beanMetaInfoNullable(TableField tableField) { - if ( tableField == null ) { - return null; - } - TableField.MetaInfo metaInfo = tableField.getMetaInfo(); - if ( metaInfo == null ) { - return null; - } - boolean nullable = metaInfo.isNullable(); - return nullable; - } - - private String beanColumnTypeType(TableField tableField) { - if ( tableField == null ) { - return null; - } - IColumnType columnType = tableField.getColumnType(); - if ( columnType == null ) { - return null; - } - String type = columnType.getType(); - if ( type == null ) { - return null; - } - return type; - } -} diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/config/ConfigConvertImpl.java b/hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/config/ConfigConvertImpl.java deleted file mode 100644 index 43ca6e7..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/config/ConfigConvertImpl.java +++ /dev/null @@ -1,85 +0,0 @@ -package cn.hangtag.module.infra.convert.config; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.module.infra.controller.admin.config.vo.ConfigRespVO; -import cn.hangtag.module.infra.controller.admin.config.vo.ConfigSaveReqVO; -import cn.hangtag.module.infra.dal.dataobject.config.ConfigDO; -import java.util.ArrayList; -import java.util.List; -import javax.annotation.Generated; - -@Generated( - value = "org.mapstruct.ap.MappingProcessor", - date = "2024-07-20T17:55:23+0800", - comments = "version: 1.5.5.Final, compiler: javac, environment: Java 1.8.0_144 (Oracle Corporation)" -) -public class ConfigConvertImpl implements ConfigConvert { - - @Override - public PageResult convertPage(PageResult page) { - if ( page == null ) { - return null; - } - - PageResult pageResult = new PageResult(); - - pageResult.setList( convertList( page.getList() ) ); - pageResult.setTotal( page.getTotal() ); - - return pageResult; - } - - @Override - public List convertList(List list) { - if ( list == null ) { - return null; - } - - List list1 = new ArrayList( list.size() ); - for ( ConfigDO configDO : list ) { - list1.add( convert( configDO ) ); - } - - return list1; - } - - @Override - public ConfigRespVO convert(ConfigDO bean) { - if ( bean == null ) { - return null; - } - - ConfigRespVO configRespVO = new ConfigRespVO(); - - configRespVO.setKey( bean.getConfigKey() ); - configRespVO.setId( bean.getId() ); - configRespVO.setCategory( bean.getCategory() ); - configRespVO.setName( bean.getName() ); - configRespVO.setValue( bean.getValue() ); - configRespVO.setType( bean.getType() ); - configRespVO.setVisible( bean.getVisible() ); - configRespVO.setRemark( bean.getRemark() ); - configRespVO.setCreateTime( bean.getCreateTime() ); - - return configRespVO; - } - - @Override - public ConfigDO convert(ConfigSaveReqVO bean) { - if ( bean == null ) { - return null; - } - - ConfigDO configDO = new ConfigDO(); - - configDO.setConfigKey( bean.getKey() ); - configDO.setId( bean.getId() ); - configDO.setCategory( bean.getCategory() ); - configDO.setName( bean.getName() ); - configDO.setValue( bean.getValue() ); - configDO.setVisible( bean.getVisible() ); - configDO.setRemark( bean.getRemark() ); - - return configDO; - } -} diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/file/FileConfigConvertImpl.java b/hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/file/FileConfigConvertImpl.java deleted file mode 100644 index b77f72e..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/file/FileConfigConvertImpl.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.hangtag.module.infra.convert.file; - -import cn.hangtag.module.infra.controller.admin.file.vo.config.FileConfigSaveReqVO; -import cn.hangtag.module.infra.dal.dataobject.file.FileConfigDO; -import javax.annotation.Generated; - -@Generated( - value = "org.mapstruct.ap.MappingProcessor", - date = "2024-07-20T17:55:23+0800", - comments = "version: 1.5.5.Final, compiler: javac, environment: Java 1.8.0_144 (Oracle Corporation)" -) -public class FileConfigConvertImpl implements FileConfigConvert { - - @Override - public FileConfigDO convert(FileConfigSaveReqVO bean) { - if ( bean == null ) { - return null; - } - - FileConfigDO.FileConfigDOBuilder fileConfigDO = FileConfigDO.builder(); - - fileConfigDO.id( bean.getId() ); - fileConfigDO.name( bean.getName() ); - fileConfigDO.storage( bean.getStorage() ); - fileConfigDO.remark( bean.getRemark() ); - - return fileConfigDO.build(); - } -} diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/redis/RedisConvertImpl.java b/hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/redis/RedisConvertImpl.java deleted file mode 100644 index ab02226..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/generated-sources/annotations/cn/hangtag/module/infra/convert/redis/RedisConvertImpl.java +++ /dev/null @@ -1,11 +0,0 @@ -package cn.hangtag.module.infra.convert.redis; - -import javax.annotation.Generated; - -@Generated( - value = "org.mapstruct.ap.MappingProcessor", - date = "2024-07-20T17:55:23+0800", - comments = "version: 1.5.5.Final, compiler: javac, environment: Java 1.8.0_144 (Oracle Corporation)" -) -public class RedisConvertImpl implements RedisConvert { -} diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/application-unit-test.yaml b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/application-unit-test.yaml deleted file mode 100644 index 977a652..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/application-unit-test.yaml +++ /dev/null @@ -1,48 +0,0 @@ -spring: - main: - lazy-initialization: true # 开启懒加载,加快速度 - banner-mode: off # 单元测试,禁用 Banner - ---- #################### 数据库相关配置 #################### - -spring: - # 数据源配置项 - datasource: - name: ruoyi-vue-pro - url: jdbc:h2:mem:testdb;MODE=MYSQL;DATABASE_TO_UPPER=false;NON_KEYWORDS=value; # MODE 使用 MySQL 模式;DATABASE_TO_UPPER 配置表和字段使用小写 - driver-class-name: org.h2.Driver - username: sa - password: - druid: - async-init: true # 单元测试,异步初始化 Druid 连接池,提升启动速度 - initial-size: 1 # 单元测试,配置为 1,提升启动速度 - sql: - init: - schema-locations: classpath:/sql/create_tables.sql - - # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 - redis: - host: 127.0.0.1 # 地址 - port: 16379 # 端口(单元测试,使用 16379 端口) - database: 0 # 数据库索引 - -mybatis-plus: - lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试 - type-aliases-package: ${hangtag.info.base-package}.module.*.dal.dataobject - ---- #################### 定时任务相关配置 #################### - ---- #################### 配置中心相关配置 #################### - ---- #################### 服务保障相关配置 #################### - -# Lock4j 配置项(单元测试,禁用 Lock4j) - ---- #################### 监控相关配置 #################### - ---- #################### 芋道相关配置 #################### - -# 芋道配置项,设置当前项目所有自定义的配置 -hangtag: - info: - base-package: cn.hangtag diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/category.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/category.json deleted file mode 100644 index 033c048..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/category.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "table": { - "id": 10, - "scene" : 1, - "parentMenuId" : 888, - "tableName" : "infra_category", - "tableComment" : "分类表", - "moduleName" : "infra", - "businessName" : "demo", - "className" : "InfraCategory", - "classComment" : "分类", - "author" : "芋道源码", - "treeParentColumnId" : 22, - "treeNameColumnId" : 11 - }, - "columns": [ { - "columnName" : "id", - "dataType" : "BIGINT", - "columnComment" : "编号", - "primaryKey" : true, - "javaType" : "Long", - "javaField" : "id", - "example" : "1024", - "updateOperation" : true, - "listOperationResult" : true - }, { - "id" : 11, - "columnName" : "name", - "dataType" : "VARCHAR", - "columnComment" : "名字", - "javaType" : "String", - "javaField" : "name", - "example" : "芋头", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "LIKE", - "listOperationResult" : true, - "htmlType" : "input" - }, { - "id" : 22, - "columnName" : "description", - "dataType" : "VARCHAR", - "columnComment" : "父编号", - "javaType" : "Long", - "javaField" : "parentId", - "example" : "2048", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true - } ] -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/contact.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/contact.json deleted file mode 100644 index 74f92cd..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/contact.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "table": { - "scene" : 1, - "tableName" : "infra_student_contact", - "tableComment" : "学生联系人表", - "moduleName" : "infra", - "businessName" : "demo", - "className" : "InfraStudentContact", - "classComment" : "学生联系人", - "author" : "芋道源码" - }, - "columns": [ { - "columnName" : "id", - "dataType" : "BIGINT", - "columnComment" : "编号", - "primaryKey" : true, - "javaType" : "Long", - "javaField" : "id", - "example" : "1024", - "updateOperation" : true, - "listOperationResult" : true - }, { - "id" : 100, - "columnName" : "student_id", - "dataType" : "BIGINT", - "columnComment" : "学生编号", - "javaType" : "Long", - "javaField" : "studentId", - "example" : "2048", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true - }, { - "columnName" : "name", - "dataType" : "VARCHAR", - "columnComment" : "名字", - "javaType" : "String", - "javaField" : "name", - "example" : "芋头", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "LIKE", - "listOperationResult" : true, - "htmlType" : "input" - }, { - "columnName" : "description", - "dataType" : "VARCHAR", - "columnComment" : "简介", - "javaType" : "String", - "javaField" : "description", - "example" : "我是介绍", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "textarea" - }, { - "columnName" : "birthday", - "dataType" : "DATE", - "columnComment" : "出生日期", - "javaType" : "LocalDateTime", - "javaField" : "birthday", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "=", - "listOperationResult" : true, - "htmlType" : "datetime" - }, { - "columnName" : "sex", - "dataType" : "INTEGER", - "columnComment" : "性别", - "javaType" : "Integer", - "javaField" : "sex", - "dictType" : "system_user_sex", - "example" : "1", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "=", - "listOperationResult" : true, - "htmlType" : "select" - }, { - "columnName" : "enabled", - "dataType" : "BOOLEAN", - "columnComment" : "是否有效", - "javaType" : "Boolean", - "javaField" : "enabled", - "dictType" : "infra_boolean_string", - "example" : "true", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "=", - "listOperationResult" : true, - "htmlType" : "radio" - }, { - "columnName" : "avatar", - "dataType" : "VARCHAR", - "columnComment" : "头像", - "javaType" : "String", - "javaField" : "avatar", - "example" : "https://www.iocoder.cn/1.png", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "imageUpload" - }, { - "columnName" : "video", - "dataType" : "VARCHAR", - "columnComment" : "附件", - "nullable" : true, - "javaType" : "String", - "javaField" : "video", - "example" : "https://www.iocoder.cn/1.mp4", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "fileUpload" - }, { - "columnName" : "memo", - "dataType" : "VARCHAR", - "columnComment" : "备注", - "javaType" : "String", - "javaField" : "memo", - "example" : "我是备注", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "editor" - }, { - "columnName" : "create_time", - "dataType" : "DATE", - "columnComment" : "创建时间", - "nullable" : true, - "javaType" : "LocalDateTime", - "javaField" : "createTime", - "listOperation" : true, - "listOperationCondition" : "BETWEEN", - "listOperationResult" : true, - "htmlType" : "datetime" - } ] -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/student.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/student.json deleted file mode 100644 index efe8af4..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/student.json +++ /dev/null @@ -1,134 +0,0 @@ -{ - "table": { - "id": 1, - "scene" : 1, - "parentMenuId" : 888, - "tableName" : "infra_student", - "tableComment" : "学生表", - "moduleName" : "infra", - "businessName" : "demo", - "className" : "InfraStudent", - "classComment" : "学生", - "author" : "芋道源码" - }, - "columns": [ { - "id" : 100, - "columnName" : "id", - "dataType" : "BIGINT", - "columnComment" : "编号", - "primaryKey" : true, - "javaType" : "Long", - "javaField" : "id", - "example" : "1024", - "updateOperation" : true, - "listOperationResult" : true - }, { - "columnName" : "name", - "dataType" : "VARCHAR", - "columnComment" : "名字", - "javaType" : "String", - "javaField" : "name", - "example" : "芋头", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "LIKE", - "listOperationResult" : true, - "htmlType" : "input" - }, { - "columnName" : "description", - "dataType" : "VARCHAR", - "columnComment" : "简介", - "javaType" : "String", - "javaField" : "description", - "example" : "我是介绍", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "textarea" - }, { - "columnName" : "birthday", - "dataType" : "DATE", - "columnComment" : "出生日期", - "javaType" : "LocalDateTime", - "javaField" : "birthday", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "=", - "listOperationResult" : true, - "htmlType" : "datetime" - }, { - "columnName" : "sex", - "dataType" : "INTEGER", - "columnComment" : "性别", - "javaType" : "Integer", - "javaField" : "sex", - "dictType" : "system_user_sex", - "example" : "1", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "=", - "listOperationResult" : true, - "htmlType" : "select" - }, { - "columnName" : "enabled", - "dataType" : "BOOLEAN", - "columnComment" : "是否有效", - "javaType" : "Boolean", - "javaField" : "enabled", - "dictType" : "infra_boolean_string", - "example" : "true", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "=", - "listOperationResult" : true, - "htmlType" : "radio" - }, { - "columnName" : "avatar", - "dataType" : "VARCHAR", - "columnComment" : "头像", - "javaType" : "String", - "javaField" : "avatar", - "example" : "https://www.iocoder.cn/1.png", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "imageUpload" - }, { - "columnName" : "video", - "dataType" : "VARCHAR", - "columnComment" : "附件", - "javaType" : "String", - "javaField" : "video", - "example" : "https://www.iocoder.cn/1.mp4", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "fileUpload" - }, { - "columnName" : "memo", - "dataType" : "VARCHAR", - "columnComment" : "备注", - "javaType" : "String", - "javaField" : "memo", - "example" : "我是备注", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "editor" - }, { - "columnName" : "create_time", - "dataType" : "DATE", - "columnComment" : "创建时间", - "nullable" : true, - "javaType" : "LocalDateTime", - "javaField" : "createTime", - "listOperation" : true, - "listOperationCondition" : "BETWEEN", - "listOperationResult" : true, - "htmlType" : "datetime" - } ] -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/teacher.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/teacher.json deleted file mode 100644 index 4d93518..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/table/teacher.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "table": { - "scene" : 1, - "tableName" : "infra_student_teacher", - "tableComment" : "学生班主任表", - "moduleName" : "infra", - "businessName" : "demo", - "className" : "InfraStudentTeacher", - "classComment" : "学生班主任", - "author" : "芋道源码" - }, - "columns": [ { - "columnName" : "id", - "dataType" : "BIGINT", - "columnComment" : "编号", - "primaryKey" : true, - "javaType" : "Long", - "javaField" : "id", - "example" : "1024", - "updateOperation" : true, - "listOperationResult" : true - }, { - "id" : 200, - "columnName" : "student_id", - "dataType" : "BIGINT", - "columnComment" : "学生编号", - "javaType" : "Long", - "javaField" : "studentId", - "example" : "2048", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true - }, { - "columnName" : "name", - "dataType" : "VARCHAR", - "columnComment" : "名字", - "javaType" : "String", - "javaField" : "name", - "example" : "芋头", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "LIKE", - "listOperationResult" : true, - "htmlType" : "input" - }, { - "columnName" : "description", - "dataType" : "VARCHAR", - "columnComment" : "简介", - "javaType" : "String", - "javaField" : "description", - "example" : "我是介绍", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "textarea" - }, { - "columnName" : "birthday", - "dataType" : "DATE", - "columnComment" : "出生日期", - "javaType" : "LocalDateTime", - "javaField" : "birthday", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "=", - "listOperationResult" : true, - "htmlType" : "datetime" - }, { - "columnName" : "sex", - "dataType" : "INTEGER", - "columnComment" : "性别", - "javaType" : "Integer", - "javaField" : "sex", - "dictType" : "system_user_sex", - "example" : "1", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "=", - "listOperationResult" : true, - "htmlType" : "select" - }, { - "columnName" : "enabled", - "dataType" : "BOOLEAN", - "columnComment" : "是否有效", - "javaType" : "Boolean", - "javaField" : "enabled", - "dictType" : "infra_boolean_string", - "example" : "true", - "createOperation" : true, - "updateOperation" : true, - "listOperation" : true, - "listOperationCondition" : "=", - "listOperationResult" : true, - "htmlType" : "radio" - }, { - "columnName" : "avatar", - "dataType" : "VARCHAR", - "columnComment" : "头像", - "javaType" : "String", - "javaField" : "avatar", - "example" : "https://www.iocoder.cn/1.png", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "imageUpload" - }, { - "columnName" : "video", - "dataType" : "VARCHAR", - "columnComment" : "附件", - "nullable" : true, - "javaType" : "String", - "javaField" : "video", - "example" : "https://www.iocoder.cn/1.mp4", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "fileUpload" - }, { - "columnName" : "memo", - "dataType" : "VARCHAR", - "columnComment" : "备注", - "javaType" : "String", - "javaField" : "memo", - "example" : "我是备注", - "createOperation" : true, - "updateOperation" : true, - "listOperationResult" : true, - "htmlType" : "editor" - }, { - "columnName" : "create_time", - "dataType" : "DATE", - "columnComment" : "创建时间", - "nullable" : true, - "javaType" : "LocalDateTime", - "javaField" : "createTime", - "listOperation" : true, - "listOperationCondition" : "BETWEEN", - "listOperationResult" : true, - "htmlType" : "datetime" - } ] -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/assert.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/assert.json deleted file mode 100644 index e84afb7..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/assert.json +++ /dev/null @@ -1,73 +0,0 @@ -[ { - "contentPath" : "java/InfraStudentPageReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentPageReqVO.java" -}, { - "contentPath" : "java/InfraStudentRespVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentRespVO.java" -}, { - "contentPath" : "java/InfraStudentSaveReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentSaveReqVO.java" -}, { - "contentPath" : "java/InfraStudentController", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/InfraStudentController.java" -}, { - "contentPath" : "java/InfraStudentDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentDO.java" -}, { - "contentPath" : "java/InfraStudentContactDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentContactDO.java" -}, { - "contentPath" : "java/InfraStudentTeacherDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentTeacherDO.java" -}, { - "contentPath" : "java/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentMapper.java" -}, { - "contentPath" : "java/InfraStudentContactMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentContactMapper.java" -}, { - "contentPath" : "java/InfraStudentTeacherMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentTeacherMapper.java" -}, { - "contentPath" : "xml/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/resources/mapper/demo/InfraStudentMapper.xml" -}, { - "contentPath" : "java/InfraStudentServiceImpl", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImpl.java" -}, { - "contentPath" : "java/InfraStudentService", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentService.java" -}, { - "contentPath" : "java/InfraStudentServiceImplTest", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/test/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImplTest.java" -}, { - "contentPath" : "java/ErrorCodeConstants_手动操作", - "filePath" : "hangtag-module-infra/hangtag-module-infra-api/src/main/java/cn.hangtag/module/infra/enums/ErrorCodeConstants_手动操作.java" -}, { - "contentPath" : "sql/sql", - "filePath" : "sql/sql.sql" -}, { - "contentPath" : "sql/h2", - "filePath" : "sql/h2.sql" -}, { - "contentPath" : "vue/index", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/index.vue" -}, { - "contentPath": "js/index", - "filePath": "hangtag-ui-admin-vue2/src/api/infra/demo/index.js" -}, { - "contentPath" : "vue/StudentForm", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/StudentForm.vue" -}, { - "contentPath" : "vue/StudentContactForm", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/components/StudentContactForm.vue" -}, { - "contentPath" : "vue/StudentTeacherForm", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/components/StudentTeacherForm.vue" -}, { - "contentPath" : "vue/StudentContactList", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/components/StudentContactList.vue" -}, { - "contentPath" : "vue/StudentTeacherList", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/components/StudentTeacherList.vue" -} ] \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/ErrorCodeConstants_手动操作 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/ErrorCodeConstants_手动操作 deleted file mode 100644 index 8f864e3..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/ErrorCodeConstants_手动操作 +++ /dev/null @@ -1,6 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 hangtag-module-infra-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== 学生 TODO 补充编号 ========== -ErrorCode STUDENT_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生不存在"); -ErrorCode STUDENT_CONTACT_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生联系人不存在"); -ErrorCode STUDENT_TEACHER_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生班主任不存在"); -ErrorCode STUDENT_TEACHER_EXISTS = new ErrorCode(TODO 补充编号, "学生班主任已存在"); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentContactDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentContactDO deleted file mode 100644 index 4649592..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentContactDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生联系人 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_contact") -@KeySequence("infra_student_contact_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentContactDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentContactMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentContactMapper deleted file mode 100644 index 1c2f5dc..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentContactMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生联系人 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentContactMapper extends BaseMapperX { - - default PageResult selectPage(PageParam reqVO, Long studentId) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eq(InfraStudentContactDO::getStudentId, studentId) - .orderByDesc(InfraStudentContactDO::getId)); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentContactDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentController b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentController deleted file mode 100644 index 40acff3..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentController +++ /dev/null @@ -1,183 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.CommonResult; -import cn.hangtag.framework.common.util.object.BeanUtils; -import static cn.hangtag.framework.common.pojo.CommonResult.success; - -import cn.hangtag.framework.excel.core.util.ExcelUtils; - -import cn.hangtag.framework.operatelog.core.annotations.OperateLog; -import static cn.hangtag.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.module.infra.service.demo.InfraStudentService; - -@Tag(name = "管理后台 - 学生") -@RestController -@RequestMapping("/infra/student") -@Validated -public class InfraStudentController { - - @Resource - private InfraStudentService studentService; - - @PostMapping("/create") - @Operation(summary = "创建学生") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudent(@Valid @RequestBody InfraStudentSaveReqVO createReqVO) { - return success(studentService.createStudent(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新学生") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudent(@Valid @RequestBody InfraStudentSaveReqVO updateReqVO) { - studentService.updateStudent(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除学生") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudent(@RequestParam("id") Long id) { - studentService.deleteStudent(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得学生") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudent(@RequestParam("id") Long id) { - InfraStudentDO student = studentService.getStudent(id); - return success(BeanUtils.toBean(student, InfraStudentRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得学生分页") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentPage(@Valid InfraStudentPageReqVO pageReqVO) { - PageResult pageResult = studentService.getStudentPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, InfraStudentRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出学生 Excel") - @PreAuthorize("@ss.hasPermission('infra:student:export')") - @OperateLog(type = EXPORT) - public void exportStudentExcel(@Valid InfraStudentPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = studentService.getStudentPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "学生.xls", "数据", InfraStudentRespVO.class, - BeanUtils.toBean(list, InfraStudentRespVO.class)); - } - - // ==================== 子表(学生联系人) ==================== - - @GetMapping("/student-contact/page") - @Operation(summary = "获得学生联系人分页") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentContactPage(PageParam pageReqVO, - @RequestParam("studentId") Long studentId) { - return success(studentService.getStudentContactPage(pageReqVO, studentId)); - } - - @PostMapping("/student-contact/create") - @Operation(summary = "创建学生联系人") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudentContact(@Valid @RequestBody InfraStudentContactDO studentContact) { - return success(studentService.createStudentContact(studentContact)); - } - - @PutMapping("/student-contact/update") - @Operation(summary = "更新学生联系人") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudentContact(@Valid @RequestBody InfraStudentContactDO studentContact) { - studentService.updateStudentContact(studentContact); - return success(true); - } - - @DeleteMapping("/student-contact/delete") - @Parameter(name = "id", description = "编号", required = true) - @Operation(summary = "删除学生联系人") - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudentContact(@RequestParam("id") Long id) { - studentService.deleteStudentContact(id); - return success(true); - } - - @GetMapping("/student-contact/get") - @Operation(summary = "获得学生联系人") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudentContact(@RequestParam("id") Long id) { - return success(studentService.getStudentContact(id)); - } - - // ==================== 子表(学生班主任) ==================== - - @GetMapping("/student-teacher/page") - @Operation(summary = "获得学生班主任分页") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentTeacherPage(PageParam pageReqVO, - @RequestParam("studentId") Long studentId) { - return success(studentService.getStudentTeacherPage(pageReqVO, studentId)); - } - - @PostMapping("/student-teacher/create") - @Operation(summary = "创建学生班主任") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudentTeacher(@Valid @RequestBody InfraStudentTeacherDO studentTeacher) { - return success(studentService.createStudentTeacher(studentTeacher)); - } - - @PutMapping("/student-teacher/update") - @Operation(summary = "更新学生班主任") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudentTeacher(@Valid @RequestBody InfraStudentTeacherDO studentTeacher) { - studentService.updateStudentTeacher(studentTeacher); - return success(true); - } - - @DeleteMapping("/student-teacher/delete") - @Parameter(name = "id", description = "编号", required = true) - @Operation(summary = "删除学生班主任") - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudentTeacher(@RequestParam("id") Long id) { - studentService.deleteStudentTeacher(id); - return success(true); - } - - @GetMapping("/student-teacher/get") - @Operation(summary = "获得学生班主任") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudentTeacher(@RequestParam("id") Long id) { - return success(studentService.getStudentTeacher(id)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentDO deleted file mode 100644 index f0b605d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentDO +++ /dev/null @@ -1,67 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生 DO - * - * @author 芋道源码 - */ -@TableName("infra_student") -@KeySequence("infra_student_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentMapper deleted file mode 100644 index ba82b63..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import org.apache.ibatis.annotations.Mapper; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; - -/** - * 学生 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentMapper extends BaseMapperX { - - default PageResult selectPage(InfraStudentPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(InfraStudentDO::getName, reqVO.getName()) - .eqIfPresent(InfraStudentDO::getBirthday, reqVO.getBirthday()) - .eqIfPresent(InfraStudentDO::getSex, reqVO.getSex()) - .eqIfPresent(InfraStudentDO::getEnabled, reqVO.getEnabled()) - .betweenIfPresent(InfraStudentDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(InfraStudentDO::getId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentPageReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentPageReqVO deleted file mode 100644 index d55baae..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentPageReqVO +++ /dev/null @@ -1,34 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.hangtag.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 学生分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class InfraStudentPageReqVO extends PageParam { - - @Schema(description = "名字", example = "芋头") - private String name; - - @Schema(description = "出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", example = "1") - private Integer sex; - - @Schema(description = "是否有效", example = "true") - private Boolean enabled; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentRespVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentRespVO deleted file mode 100644 index 8e6a44d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentRespVO +++ /dev/null @@ -1,60 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import cn.hangtag.framework.excel.core.annotations.DictFormat; -import cn.hangtag.framework.excel.core.convert.DictConvert; - -@Schema(description = "管理后台 - 学生 Response VO") -@Data -@ExcelIgnoreUnannotated -public class InfraStudentRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @ExcelProperty("名字") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @ExcelProperty("简介") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "性别", converter = DictConvert.class) - @DictFormat("system_user_sex") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @ExcelProperty(value = "是否有效", converter = DictConvert.class) - @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @ExcelProperty("头像") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @ExcelProperty("附件") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @ExcelProperty("备注") - private String memo; - - @Schema(description = "创建时间") - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentSaveReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentSaveReqVO deleted file mode 100644 index 482af09..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentSaveReqVO +++ /dev/null @@ -1,52 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; - -@Schema(description = "管理后台 - 学生新增/修改 Request VO") -@Data -public class InfraStudentSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @NotEmpty(message = "名字不能为空") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @NotEmpty(message = "简介不能为空") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "出生日期不能为空") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "性别不能为空") - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @NotNull(message = "是否有效不能为空") - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @NotEmpty(message = "头像不能为空") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @NotEmpty(message = "附件不能为空") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @NotEmpty(message = "备注不能为空") - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentService b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentService deleted file mode 100644 index 993378d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentService +++ /dev/null @@ -1,139 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import java.util.*; -import javax.validation.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; - -/** - * 学生 Service 接口 - * - * @author 芋道源码 - */ -public interface InfraStudentService { - - /** - * 创建学生 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStudent(@Valid InfraStudentSaveReqVO createReqVO); - - /** - * 更新学生 - * - * @param updateReqVO 更新信息 - */ - void updateStudent(@Valid InfraStudentSaveReqVO updateReqVO); - - /** - * 删除学生 - * - * @param id 编号 - */ - void deleteStudent(Long id); - - /** - * 获得学生 - * - * @param id 编号 - * @return 学生 - */ - InfraStudentDO getStudent(Long id); - - /** - * 获得学生分页 - * - * @param pageReqVO 分页查询 - * @return 学生分页 - */ - PageResult getStudentPage(InfraStudentPageReqVO pageReqVO); - - // ==================== 子表(学生联系人) ==================== - - /** - * 获得学生联系人分页 - * - * @param pageReqVO 分页查询 - * @param studentId 学生编号 - * @return 学生联系人分页 - */ - PageResult getStudentContactPage(PageParam pageReqVO, Long studentId); - - /** - * 创建学生联系人 - * - * @param studentContact 创建信息 - * @return 编号 - */ - Long createStudentContact(@Valid InfraStudentContactDO studentContact); - - /** - * 更新学生联系人 - * - * @param studentContact 更新信息 - */ - void updateStudentContact(@Valid InfraStudentContactDO studentContact); - - /** - * 删除学生联系人 - * - * @param id 编号 - */ - void deleteStudentContact(Long id); - - /** - * 获得学生联系人 - * - * @param id 编号 - * @return 学生联系人 - */ - InfraStudentContactDO getStudentContact(Long id); - - // ==================== 子表(学生班主任) ==================== - - /** - * 获得学生班主任分页 - * - * @param pageReqVO 分页查询 - * @param studentId 学生编号 - * @return 学生班主任分页 - */ - PageResult getStudentTeacherPage(PageParam pageReqVO, Long studentId); - - /** - * 创建学生班主任 - * - * @param studentTeacher 创建信息 - * @return 编号 - */ - Long createStudentTeacher(@Valid InfraStudentTeacherDO studentTeacher); - - /** - * 更新学生班主任 - * - * @param studentTeacher 更新信息 - */ - void updateStudentTeacher(@Valid InfraStudentTeacherDO studentTeacher); - - /** - * 删除学生班主任 - * - * @param id 编号 - */ - void deleteStudentTeacher(Long id); - - /** - * 获得学生班主任 - * - * @param id 编号 - * @return 学生班主任 - */ - InfraStudentTeacherDO getStudentTeacher(Long id); - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentServiceImpl b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentServiceImpl deleted file mode 100644 index e60b402..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentServiceImpl +++ /dev/null @@ -1,180 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.util.object.BeanUtils; - -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentContactMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentTeacherMapper; - -import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; - -/** - * 学生 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class InfraStudentServiceImpl implements InfraStudentService { - - @Resource - private InfraStudentMapper studentMapper; - @Resource - private InfraStudentContactMapper studentContactMapper; - @Resource - private InfraStudentTeacherMapper studentTeacherMapper; - - @Override - public Long createStudent(InfraStudentSaveReqVO createReqVO) { - // 插入 - InfraStudentDO student = BeanUtils.toBean(createReqVO, InfraStudentDO.class); - studentMapper.insert(student); - // 返回 - return student.getId(); - } - - @Override - public void updateStudent(InfraStudentSaveReqVO updateReqVO) { - // 校验存在 - validateStudentExists(updateReqVO.getId()); - // 更新 - InfraStudentDO updateObj = BeanUtils.toBean(updateReqVO, InfraStudentDO.class); - studentMapper.updateById(updateObj); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteStudent(Long id) { - // 校验存在 - validateStudentExists(id); - // 删除 - studentMapper.deleteById(id); - - // 删除子表 - deleteStudentContactByStudentId(id); - deleteStudentTeacherByStudentId(id); - } - - private void validateStudentExists(Long id) { - if (studentMapper.selectById(id) == null) { - throw exception(STUDENT_NOT_EXISTS); - } - } - - @Override - public InfraStudentDO getStudent(Long id) { - return studentMapper.selectById(id); - } - - @Override - public PageResult getStudentPage(InfraStudentPageReqVO pageReqVO) { - return studentMapper.selectPage(pageReqVO); - } - - // ==================== 子表(学生联系人) ==================== - - @Override - public PageResult getStudentContactPage(PageParam pageReqVO, Long studentId) { - return studentContactMapper.selectPage(pageReqVO, studentId); - } - - @Override - public Long createStudentContact(InfraStudentContactDO studentContact) { - studentContactMapper.insert(studentContact); - return studentContact.getId(); - } - - @Override - public void updateStudentContact(InfraStudentContactDO studentContact) { - // 校验存在 - validateStudentContactExists(studentContact.getId()); - // 更新 - studentContactMapper.updateById(studentContact); - } - - @Override - public void deleteStudentContact(Long id) { - // 校验存在 - validateStudentContactExists(id); - // 删除 - studentContactMapper.deleteById(id); - } - - @Override - public InfraStudentContactDO getStudentContact(Long id) { - return studentContactMapper.selectById(id); - } - - private void validateStudentContactExists(Long id) { - if (studentContactMapper.selectById(id) == null) { - throw exception(STUDENT_CONTACT_NOT_EXISTS); - } - } - - private void deleteStudentContactByStudentId(Long studentId) { - studentContactMapper.deleteByStudentId(studentId); - } - - // ==================== 子表(学生班主任) ==================== - - @Override - public PageResult getStudentTeacherPage(PageParam pageReqVO, Long studentId) { - return studentTeacherMapper.selectPage(pageReqVO, studentId); - } - - @Override - public Long createStudentTeacher(InfraStudentTeacherDO studentTeacher) { - // 校验是否已经存在 - if (studentTeacherMapper.selectByStudentId(studentTeacher.getStudentId()) != null) { - throw exception(STUDENT_TEACHER_EXISTS); - } - // 插入 - studentTeacherMapper.insert(studentTeacher); - return studentTeacher.getId(); - } - - @Override - public void updateStudentTeacher(InfraStudentTeacherDO studentTeacher) { - // 校验存在 - validateStudentTeacherExists(studentTeacher.getId()); - // 更新 - studentTeacherMapper.updateById(studentTeacher); - } - - @Override - public void deleteStudentTeacher(Long id) { - // 校验存在 - validateStudentTeacherExists(id); - // 删除 - studentTeacherMapper.deleteById(id); - } - - @Override - public InfraStudentTeacherDO getStudentTeacher(Long id) { - return studentTeacherMapper.selectById(id); - } - - private void validateStudentTeacherExists(Long id) { - if (studentTeacherMapper.selectById(id) == null) { - throw exception(STUDENT_TEACHER_NOT_EXISTS); - } - } - - private void deleteStudentTeacherByStudentId(Long studentId) { - studentTeacherMapper.deleteByStudentId(studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentServiceImplTest b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentServiceImplTest deleted file mode 100644 index 4fdc060..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentServiceImplTest +++ /dev/null @@ -1,146 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import javax.annotation.Resource; - -import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.framework.common.pojo.PageResult; - -import javax.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; -import static cn.hangtag.framework.test.core.util.AssertUtils.*; -import static cn.hangtag.framework.test.core.util.RandomUtils.*; -import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; -import static cn.hangtag.framework.common.util.object.ObjectUtils.*; -import static cn.hangtag.framework.common.util.date.DateUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -/** - * {@link InfraStudentServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(InfraStudentServiceImpl.class) -public class InfraStudentServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfraStudentServiceImpl studentService; - - @Resource - private InfraStudentMapper studentMapper; - - @Test - public void testCreateStudent_success() { - // 准备参数 - InfraStudentSaveReqVO createReqVO = randomPojo(InfraStudentSaveReqVO.class).setId(null); - - // 调用 - Long studentId = studentService.createStudent(createReqVO); - // 断言 - assertNotNull(studentId); - // 校验记录的属性是否正确 - InfraStudentDO student = studentMapper.selectById(studentId); - assertPojoEquals(createReqVO, student, "id"); - } - - @Test - public void testUpdateStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class, o -> { - o.setId(dbStudent.getId()); // 设置更新的 ID - }); - - // 调用 - studentService.updateStudent(updateReqVO); - // 校验是否更新正确 - InfraStudentDO student = studentMapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, student); - } - - @Test - public void testUpdateStudent_notExists() { - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.updateStudent(updateReqVO), STUDENT_NOT_EXISTS); - } - - @Test - public void testDeleteStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbStudent.getId(); - - // 调用 - studentService.deleteStudent(id); - // 校验数据不存在了 - assertNull(studentMapper.selectById(id)); - } - - @Test - public void testDeleteStudent_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.deleteStudent(id), STUDENT_NOT_EXISTS); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGetStudentPage() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class, o -> { // 等会查询到 - o.setName(null); - o.setBirthday(null); - o.setSex(null); - o.setEnabled(null); - o.setCreateTime(null); - }); - studentMapper.insert(dbStudent); - // 测试 name 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setName(null))); - // 测试 birthday 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setBirthday(null))); - // 测试 sex 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setSex(null))); - // 测试 enabled 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setEnabled(null))); - // 测试 createTime 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setCreateTime(null))); - // 准备参数 - InfraStudentPageReqVO reqVO = new InfraStudentPageReqVO(); - reqVO.setName(null); - reqVO.setBirthday(null); - reqVO.setSex(null); - reqVO.setEnabled(null); - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); - - // 调用 - PageResult pageResult = studentService.getStudentPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbStudent, pageResult.getList().get(0)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentTeacherDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentTeacherDO deleted file mode 100644 index dfdae97..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentTeacherDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生班主任 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_teacher") -@KeySequence("infra_student_teacher_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentTeacherDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentTeacherMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentTeacherMapper deleted file mode 100644 index 73ef6f5..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/java/InfraStudentTeacherMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生班主任 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentTeacherMapper extends BaseMapperX { - - default PageResult selectPage(PageParam reqVO, Long studentId) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eq(InfraStudentTeacherDO::getStudentId, studentId) - .orderByDesc(InfraStudentTeacherDO::getId)); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentTeacherDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/js/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/js/index deleted file mode 100644 index 211d95e..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/js/index +++ /dev/null @@ -1,141 +0,0 @@ -import request from '@/utils/request' - -// 创建学生 -export function createStudent(data) { - return request({ - url: '/infra/student/create', - method: 'post', - data: data - }) -} - -// 更新学生 -export function updateStudent(data) { - return request({ - url: '/infra/student/update', - method: 'put', - data: data - }) -} - -// 删除学生 -export function deleteStudent(id) { - return request({ - url: '/infra/student/delete?id=' + id, - method: 'delete' - }) -} - -// 获得学生 -export function getStudent(id) { - return request({ - url: '/infra/student/get?id=' + id, - method: 'get' - }) -} - -// 获得学生分页 -export function getStudentPage(params) { - return request({ - url: '/infra/student/page', - method: 'get', - params - }) -} -// 导出学生 Excel -export function exportStudentExcel(params) { - return request({ - url: '/infra/student/export-excel', - method: 'get', - params, - responseType: 'blob' - }) -} - -// ==================== 子表(学生联系人) ==================== - - // 获得学生联系人分页 - export function getStudentContactPage(params) { - return request({ - url: '/infra/student/student-contact/page', - method: 'get', - params - }) - } - // 新增学生联系人 - export function createStudentContact(data) { - return request({ - url: `/infra/student/student-contact/create`, - method: 'post', - data - }) - } - - // 修改学生联系人 - export function updateStudentContact(data) { - return request({ - url: `/infra/student/student-contact/update`, - method: 'post', - data - }) - } - - // 删除学生联系人 - export function deleteStudentContact(id) { - return request({ - url: `/infra/student/student-contact/delete?id=` + id, - method: 'delete' - }) - } - - // 获得学生联系人 - export function getStudentContact(id) { - return request({ - url: `/infra/student/student-contact/get?id=` + id, - method: 'get' - }) - } - -// ==================== 子表(学生班主任) ==================== - - // 获得学生班主任分页 - export function getStudentTeacherPage(params) { - return request({ - url: '/infra/student/student-teacher/page', - method: 'get', - params - }) - } - // 新增学生班主任 - export function createStudentTeacher(data) { - return request({ - url: `/infra/student/student-teacher/create`, - method: 'post', - data - }) - } - - // 修改学生班主任 - export function updateStudentTeacher(data) { - return request({ - url: `/infra/student/student-teacher/update`, - method: 'post', - data - }) - } - - // 删除学生班主任 - export function deleteStudentTeacher(id) { - return request({ - url: `/infra/student/student-teacher/delete?id=` + id, - method: 'delete' - }) - } - - // 获得学生班主任 - export function getStudentTeacher(id) { - return request({ - url: `/infra/student/student-teacher/get?id=` + id, - method: 'get' - }) - } \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/sql/h2 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/sql/h2 deleted file mode 100644 index 9150b93..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/sql/h2 +++ /dev/null @@ -1,17 +0,0 @@ --- 将该建表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "infra_student" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar NOT NULL, - "description" varchar NOT NULL, - "birthday" varchar NOT NULL, - "sex" int NOT NULL, - "enabled" bit NOT NULL, - "avatar" varchar NOT NULL, - "video" varchar NOT NULL, - "memo" varchar NOT NULL, - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ("id") -) COMMENT '学生表'; - --- 将该删表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "infra_student"; \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/sql/sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/sql/sql deleted file mode 100644 index 83df279..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/sql/sql +++ /dev/null @@ -1,55 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '学生管理', '', 2, 0, 888, - 'student', '', 'infra/demo/index', 0, 'InfraStudent' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生查询', 'infra:student:query', 3, 1, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生创建', 'infra:student:create', 3, 2, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生更新', 'infra:student:update', 3, 3, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生删除', 'infra:student:delete', 3, 4, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生导出', 'infra:student:export', 3, 5, @parentId, - '', '', '', 0 -); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentContactForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentContactForm deleted file mode 100644 index de3b0a7..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentContactForm +++ /dev/null @@ -1,151 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentContactList b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentContactList deleted file mode 100644 index 00f1ce0..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentContactList +++ /dev/null @@ -1,129 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentForm deleted file mode 100644 index d89e506..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentForm +++ /dev/null @@ -1,149 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentTeacherForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentTeacherForm deleted file mode 100644 index 874a03b..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentTeacherForm +++ /dev/null @@ -1,151 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentTeacherList b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentTeacherList deleted file mode 100644 index 7d561a0..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/StudentTeacherList +++ /dev/null @@ -1,129 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/index deleted file mode 100644 index 9c7588f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/vue/index +++ /dev/null @@ -1,233 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/xml/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/xml/InfraStudentMapper deleted file mode 100644 index 12bfc1f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_erp/xml/InfraStudentMapper +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/assert.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/assert.json deleted file mode 100644 index e84afb7..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/assert.json +++ /dev/null @@ -1,73 +0,0 @@ -[ { - "contentPath" : "java/InfraStudentPageReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentPageReqVO.java" -}, { - "contentPath" : "java/InfraStudentRespVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentRespVO.java" -}, { - "contentPath" : "java/InfraStudentSaveReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentSaveReqVO.java" -}, { - "contentPath" : "java/InfraStudentController", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/InfraStudentController.java" -}, { - "contentPath" : "java/InfraStudentDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentDO.java" -}, { - "contentPath" : "java/InfraStudentContactDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentContactDO.java" -}, { - "contentPath" : "java/InfraStudentTeacherDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentTeacherDO.java" -}, { - "contentPath" : "java/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentMapper.java" -}, { - "contentPath" : "java/InfraStudentContactMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentContactMapper.java" -}, { - "contentPath" : "java/InfraStudentTeacherMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentTeacherMapper.java" -}, { - "contentPath" : "xml/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/resources/mapper/demo/InfraStudentMapper.xml" -}, { - "contentPath" : "java/InfraStudentServiceImpl", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImpl.java" -}, { - "contentPath" : "java/InfraStudentService", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentService.java" -}, { - "contentPath" : "java/InfraStudentServiceImplTest", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/test/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImplTest.java" -}, { - "contentPath" : "java/ErrorCodeConstants_手动操作", - "filePath" : "hangtag-module-infra/hangtag-module-infra-api/src/main/java/cn.hangtag/module/infra/enums/ErrorCodeConstants_手动操作.java" -}, { - "contentPath" : "sql/sql", - "filePath" : "sql/sql.sql" -}, { - "contentPath" : "sql/h2", - "filePath" : "sql/h2.sql" -}, { - "contentPath" : "vue/index", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/index.vue" -}, { - "contentPath": "js/index", - "filePath": "hangtag-ui-admin-vue2/src/api/infra/demo/index.js" -}, { - "contentPath" : "vue/StudentForm", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/StudentForm.vue" -}, { - "contentPath" : "vue/StudentContactForm", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/components/StudentContactForm.vue" -}, { - "contentPath" : "vue/StudentTeacherForm", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/components/StudentTeacherForm.vue" -}, { - "contentPath" : "vue/StudentContactList", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/components/StudentContactList.vue" -}, { - "contentPath" : "vue/StudentTeacherList", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/components/StudentTeacherList.vue" -} ] \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/ErrorCodeConstants_手动操作 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/ErrorCodeConstants_手动操作 deleted file mode 100644 index 4d16bed..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/ErrorCodeConstants_手动操作 +++ /dev/null @@ -1,3 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 hangtag-module-infra-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== 学生 TODO 补充编号 ========== -ErrorCode STUDENT_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生不存在"); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentContactDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentContactDO deleted file mode 100644 index 4649592..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentContactDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生联系人 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_contact") -@KeySequence("infra_student_contact_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentContactDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentContactMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentContactMapper deleted file mode 100644 index 6032819..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentContactMapper +++ /dev/null @@ -1,28 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生联系人 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentContactMapper extends BaseMapperX { - - default List selectListByStudentId(Long studentId) { - return selectList(InfraStudentContactDO::getStudentId, studentId); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentContactDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentController b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentController deleted file mode 100644 index 00d176f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentController +++ /dev/null @@ -1,117 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.CommonResult; -import cn.hangtag.framework.common.util.object.BeanUtils; -import static cn.hangtag.framework.common.pojo.CommonResult.success; - -import cn.hangtag.framework.excel.core.util.ExcelUtils; - -import cn.hangtag.framework.operatelog.core.annotations.OperateLog; -import static cn.hangtag.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.module.infra.service.demo.InfraStudentService; - -@Tag(name = "管理后台 - 学生") -@RestController -@RequestMapping("/infra/student") -@Validated -public class InfraStudentController { - - @Resource - private InfraStudentService studentService; - - @PostMapping("/create") - @Operation(summary = "创建学生") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudent(@Valid @RequestBody InfraStudentSaveReqVO createReqVO) { - return success(studentService.createStudent(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新学生") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudent(@Valid @RequestBody InfraStudentSaveReqVO updateReqVO) { - studentService.updateStudent(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除学生") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudent(@RequestParam("id") Long id) { - studentService.deleteStudent(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得学生") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudent(@RequestParam("id") Long id) { - InfraStudentDO student = studentService.getStudent(id); - return success(BeanUtils.toBean(student, InfraStudentRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得学生分页") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentPage(@Valid InfraStudentPageReqVO pageReqVO) { - PageResult pageResult = studentService.getStudentPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, InfraStudentRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出学生 Excel") - @PreAuthorize("@ss.hasPermission('infra:student:export')") - @OperateLog(type = EXPORT) - public void exportStudentExcel(@Valid InfraStudentPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = studentService.getStudentPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "学生.xls", "数据", InfraStudentRespVO.class, - BeanUtils.toBean(list, InfraStudentRespVO.class)); - } - - // ==================== 子表(学生联系人) ==================== - - @GetMapping("/student-contact/list-by-student-id") - @Operation(summary = "获得学生联系人列表") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentContactListByStudentId(@RequestParam("studentId") Long studentId) { - return success(studentService.getStudentContactListByStudentId(studentId)); - } - - // ==================== 子表(学生班主任) ==================== - - @GetMapping("/student-teacher/get-by-student-id") - @Operation(summary = "获得学生班主任") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudentTeacherByStudentId(@RequestParam("studentId") Long studentId) { - return success(studentService.getStudentTeacherByStudentId(studentId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentDO deleted file mode 100644 index f0b605d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentDO +++ /dev/null @@ -1,67 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生 DO - * - * @author 芋道源码 - */ -@TableName("infra_student") -@KeySequence("infra_student_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentMapper deleted file mode 100644 index ba82b63..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import org.apache.ibatis.annotations.Mapper; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; - -/** - * 学生 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentMapper extends BaseMapperX { - - default PageResult selectPage(InfraStudentPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(InfraStudentDO::getName, reqVO.getName()) - .eqIfPresent(InfraStudentDO::getBirthday, reqVO.getBirthday()) - .eqIfPresent(InfraStudentDO::getSex, reqVO.getSex()) - .eqIfPresent(InfraStudentDO::getEnabled, reqVO.getEnabled()) - .betweenIfPresent(InfraStudentDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(InfraStudentDO::getId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentPageReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentPageReqVO deleted file mode 100644 index d55baae..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentPageReqVO +++ /dev/null @@ -1,34 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.hangtag.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 学生分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class InfraStudentPageReqVO extends PageParam { - - @Schema(description = "名字", example = "芋头") - private String name; - - @Schema(description = "出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", example = "1") - private Integer sex; - - @Schema(description = "是否有效", example = "true") - private Boolean enabled; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentRespVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentRespVO deleted file mode 100644 index 8e6a44d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentRespVO +++ /dev/null @@ -1,60 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import cn.hangtag.framework.excel.core.annotations.DictFormat; -import cn.hangtag.framework.excel.core.convert.DictConvert; - -@Schema(description = "管理后台 - 学生 Response VO") -@Data -@ExcelIgnoreUnannotated -public class InfraStudentRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @ExcelProperty("名字") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @ExcelProperty("简介") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "性别", converter = DictConvert.class) - @DictFormat("system_user_sex") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @ExcelProperty(value = "是否有效", converter = DictConvert.class) - @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @ExcelProperty("头像") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @ExcelProperty("附件") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @ExcelProperty("备注") - private String memo; - - @Schema(description = "创建时间") - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentSaveReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentSaveReqVO deleted file mode 100644 index 40d549c..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentSaveReqVO +++ /dev/null @@ -1,58 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; - -@Schema(description = "管理后台 - 学生新增/修改 Request VO") -@Data -public class InfraStudentSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @NotEmpty(message = "名字不能为空") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @NotEmpty(message = "简介不能为空") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "出生日期不能为空") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "性别不能为空") - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @NotNull(message = "是否有效不能为空") - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @NotEmpty(message = "头像不能为空") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @NotEmpty(message = "附件不能为空") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @NotEmpty(message = "备注不能为空") - private String memo; - - @Schema(description = "学生联系人列表") - private List studentContacts; - - @Schema(description = "学生班主任") - private InfraStudentTeacherDO studentTeacher; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentService b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentService deleted file mode 100644 index e4544af..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentService +++ /dev/null @@ -1,77 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import java.util.*; -import javax.validation.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; - -/** - * 学生 Service 接口 - * - * @author 芋道源码 - */ -public interface InfraStudentService { - - /** - * 创建学生 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStudent(@Valid InfraStudentSaveReqVO createReqVO); - - /** - * 更新学生 - * - * @param updateReqVO 更新信息 - */ - void updateStudent(@Valid InfraStudentSaveReqVO updateReqVO); - - /** - * 删除学生 - * - * @param id 编号 - */ - void deleteStudent(Long id); - - /** - * 获得学生 - * - * @param id 编号 - * @return 学生 - */ - InfraStudentDO getStudent(Long id); - - /** - * 获得学生分页 - * - * @param pageReqVO 分页查询 - * @return 学生分页 - */ - PageResult getStudentPage(InfraStudentPageReqVO pageReqVO); - - // ==================== 子表(学生联系人) ==================== - - /** - * 获得学生联系人列表 - * - * @param studentId 学生编号 - * @return 学生联系人列表 - */ - List getStudentContactListByStudentId(Long studentId); - - // ==================== 子表(学生班主任) ==================== - - /** - * 获得学生班主任 - * - * @param studentId 学生编号 - * @return 学生班主任 - */ - InfraStudentTeacherDO getStudentTeacherByStudentId(Long studentId); - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentServiceImpl b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentServiceImpl deleted file mode 100644 index a724c20..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentServiceImpl +++ /dev/null @@ -1,147 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.util.object.BeanUtils; - -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentContactMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentTeacherMapper; - -import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; - -/** - * 学生 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class InfraStudentServiceImpl implements InfraStudentService { - - @Resource - private InfraStudentMapper studentMapper; - @Resource - private InfraStudentContactMapper studentContactMapper; - @Resource - private InfraStudentTeacherMapper studentTeacherMapper; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createStudent(InfraStudentSaveReqVO createReqVO) { - // 插入 - InfraStudentDO student = BeanUtils.toBean(createReqVO, InfraStudentDO.class); - studentMapper.insert(student); - - // 插入子表 - createStudentContactList(student.getId(), createReqVO.getStudentContacts()); - createStudentTeacher(student.getId(), createReqVO.getStudentTeacher()); - // 返回 - return student.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStudent(InfraStudentSaveReqVO updateReqVO) { - // 校验存在 - validateStudentExists(updateReqVO.getId()); - // 更新 - InfraStudentDO updateObj = BeanUtils.toBean(updateReqVO, InfraStudentDO.class); - studentMapper.updateById(updateObj); - - // 更新子表 - updateStudentContactList(updateReqVO.getId(), updateReqVO.getStudentContacts()); - updateStudentTeacher(updateReqVO.getId(), updateReqVO.getStudentTeacher()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteStudent(Long id) { - // 校验存在 - validateStudentExists(id); - // 删除 - studentMapper.deleteById(id); - - // 删除子表 - deleteStudentContactByStudentId(id); - deleteStudentTeacherByStudentId(id); - } - - private void validateStudentExists(Long id) { - if (studentMapper.selectById(id) == null) { - throw exception(STUDENT_NOT_EXISTS); - } - } - - @Override - public InfraStudentDO getStudent(Long id) { - return studentMapper.selectById(id); - } - - @Override - public PageResult getStudentPage(InfraStudentPageReqVO pageReqVO) { - return studentMapper.selectPage(pageReqVO); - } - - // ==================== 子表(学生联系人) ==================== - - @Override - public List getStudentContactListByStudentId(Long studentId) { - return studentContactMapper.selectListByStudentId(studentId); - } - - private void createStudentContactList(Long studentId, List list) { - list.forEach(o -> o.setStudentId(studentId)); - studentContactMapper.insertBatch(list); - } - - private void updateStudentContactList(Long studentId, List list) { - deleteStudentContactByStudentId(studentId); - list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 - createStudentContactList(studentId, list); - } - - private void deleteStudentContactByStudentId(Long studentId) { - studentContactMapper.deleteByStudentId(studentId); - } - - // ==================== 子表(学生班主任) ==================== - - @Override - public InfraStudentTeacherDO getStudentTeacherByStudentId(Long studentId) { - return studentTeacherMapper.selectByStudentId(studentId); - } - - private void createStudentTeacher(Long studentId, InfraStudentTeacherDO studentTeacher) { - if (studentTeacher == null) { - return; - } - studentTeacher.setStudentId(studentId); - studentTeacherMapper.insert(studentTeacher); - } - - private void updateStudentTeacher(Long studentId, InfraStudentTeacherDO studentTeacher) { - if (studentTeacher == null) { - return; - } - studentTeacher.setStudentId(studentId); - studentTeacher.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 - studentTeacherMapper.insertOrUpdate(studentTeacher); - } - - private void deleteStudentTeacherByStudentId(Long studentId) { - studentTeacherMapper.deleteByStudentId(studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentServiceImplTest b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentServiceImplTest deleted file mode 100644 index 4fdc060..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentServiceImplTest +++ /dev/null @@ -1,146 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import javax.annotation.Resource; - -import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.framework.common.pojo.PageResult; - -import javax.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; -import static cn.hangtag.framework.test.core.util.AssertUtils.*; -import static cn.hangtag.framework.test.core.util.RandomUtils.*; -import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; -import static cn.hangtag.framework.common.util.object.ObjectUtils.*; -import static cn.hangtag.framework.common.util.date.DateUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -/** - * {@link InfraStudentServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(InfraStudentServiceImpl.class) -public class InfraStudentServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfraStudentServiceImpl studentService; - - @Resource - private InfraStudentMapper studentMapper; - - @Test - public void testCreateStudent_success() { - // 准备参数 - InfraStudentSaveReqVO createReqVO = randomPojo(InfraStudentSaveReqVO.class).setId(null); - - // 调用 - Long studentId = studentService.createStudent(createReqVO); - // 断言 - assertNotNull(studentId); - // 校验记录的属性是否正确 - InfraStudentDO student = studentMapper.selectById(studentId); - assertPojoEquals(createReqVO, student, "id"); - } - - @Test - public void testUpdateStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class, o -> { - o.setId(dbStudent.getId()); // 设置更新的 ID - }); - - // 调用 - studentService.updateStudent(updateReqVO); - // 校验是否更新正确 - InfraStudentDO student = studentMapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, student); - } - - @Test - public void testUpdateStudent_notExists() { - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.updateStudent(updateReqVO), STUDENT_NOT_EXISTS); - } - - @Test - public void testDeleteStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbStudent.getId(); - - // 调用 - studentService.deleteStudent(id); - // 校验数据不存在了 - assertNull(studentMapper.selectById(id)); - } - - @Test - public void testDeleteStudent_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.deleteStudent(id), STUDENT_NOT_EXISTS); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGetStudentPage() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class, o -> { // 等会查询到 - o.setName(null); - o.setBirthday(null); - o.setSex(null); - o.setEnabled(null); - o.setCreateTime(null); - }); - studentMapper.insert(dbStudent); - // 测试 name 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setName(null))); - // 测试 birthday 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setBirthday(null))); - // 测试 sex 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setSex(null))); - // 测试 enabled 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setEnabled(null))); - // 测试 createTime 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setCreateTime(null))); - // 准备参数 - InfraStudentPageReqVO reqVO = new InfraStudentPageReqVO(); - reqVO.setName(null); - reqVO.setBirthday(null); - reqVO.setSex(null); - reqVO.setEnabled(null); - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); - - // 调用 - PageResult pageResult = studentService.getStudentPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbStudent, pageResult.getList().get(0)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentTeacherDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentTeacherDO deleted file mode 100644 index dfdae97..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentTeacherDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生班主任 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_teacher") -@KeySequence("infra_student_teacher_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentTeacherDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentTeacherMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentTeacherMapper deleted file mode 100644 index 8e2073f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/java/InfraStudentTeacherMapper +++ /dev/null @@ -1,28 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生班主任 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentTeacherMapper extends BaseMapperX { - - default InfraStudentTeacherDO selectByStudentId(Long studentId) { - return selectOne(InfraStudentTeacherDO::getStudentId, studentId); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentTeacherDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/js/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/js/index deleted file mode 100644 index b4e6ac5..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/js/index +++ /dev/null @@ -1,74 +0,0 @@ -import request from '@/utils/request' - -// 创建学生 -export function createStudent(data) { - return request({ - url: '/infra/student/create', - method: 'post', - data: data - }) -} - -// 更新学生 -export function updateStudent(data) { - return request({ - url: '/infra/student/update', - method: 'put', - data: data - }) -} - -// 删除学生 -export function deleteStudent(id) { - return request({ - url: '/infra/student/delete?id=' + id, - method: 'delete' - }) -} - -// 获得学生 -export function getStudent(id) { - return request({ - url: '/infra/student/get?id=' + id, - method: 'get' - }) -} - -// 获得学生分页 -export function getStudentPage(params) { - return request({ - url: '/infra/student/page', - method: 'get', - params - }) -} -// 导出学生 Excel -export function exportStudentExcel(params) { - return request({ - url: '/infra/student/export-excel', - method: 'get', - params, - responseType: 'blob' - }) -} - -// ==================== 子表(学生联系人) ==================== - - // 获得学生联系人列表 - export function getStudentContactListByStudentId(studentId) { - return request({ - url: `/infra/student/student-contact/list-by-student-id?studentId=` + studentId, - method: 'get' - }) - } - -// ==================== 子表(学生班主任) ==================== - - // 获得学生班主任 - export function getStudentTeacherByStudentId(studentId) { - return request({ - url: `/infra/student/student-teacher/get-by-student-id?studentId=` + studentId, - method: 'get' - }) - } - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/sql/h2 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/sql/h2 deleted file mode 100644 index 9150b93..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/sql/h2 +++ /dev/null @@ -1,17 +0,0 @@ --- 将该建表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "infra_student" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar NOT NULL, - "description" varchar NOT NULL, - "birthday" varchar NOT NULL, - "sex" int NOT NULL, - "enabled" bit NOT NULL, - "avatar" varchar NOT NULL, - "video" varchar NOT NULL, - "memo" varchar NOT NULL, - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ("id") -) COMMENT '学生表'; - --- 将该删表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "infra_student"; \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/sql/sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/sql/sql deleted file mode 100644 index 83df279..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/sql/sql +++ /dev/null @@ -1,55 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '学生管理', '', 2, 0, 888, - 'student', '', 'infra/demo/index', 0, 'InfraStudent' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生查询', 'infra:student:query', 3, 1, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生创建', 'infra:student:create', 3, 2, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生更新', 'infra:student:update', 3, 3, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生删除', 'infra:student:delete', 3, 4, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生导出', 'infra:student:export', 3, 5, @parentId, - '', '', '', 0 -); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentContactForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentContactForm deleted file mode 100644 index c953bfa..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentContactForm +++ /dev/null @@ -1,177 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentContactList b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentContactList deleted file mode 100644 index c0a8710..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentContactList +++ /dev/null @@ -1,89 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentForm deleted file mode 100644 index 6d93b61..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentForm +++ /dev/null @@ -1,180 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentTeacherForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentTeacherForm deleted file mode 100644 index 0dac19b..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentTeacherForm +++ /dev/null @@ -1,127 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentTeacherList b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentTeacherList deleted file mode 100644 index 9f57274..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/StudentTeacherList +++ /dev/null @@ -1,93 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/index deleted file mode 100644 index ddeafdf..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/vue/index +++ /dev/null @@ -1,222 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/xml/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/xml/InfraStudentMapper deleted file mode 100644 index 12bfc1f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_inner/xml/InfraStudentMapper +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/assert.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/assert.json deleted file mode 100644 index 9975cc4..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/assert.json +++ /dev/null @@ -1,67 +0,0 @@ -[ { - "contentPath" : "java/InfraStudentPageReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentPageReqVO.java" -}, { - "contentPath" : "java/InfraStudentRespVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentRespVO.java" -}, { - "contentPath" : "java/InfraStudentSaveReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentSaveReqVO.java" -}, { - "contentPath" : "java/InfraStudentController", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/InfraStudentController.java" -}, { - "contentPath" : "java/InfraStudentDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentDO.java" -}, { - "contentPath" : "java/InfraStudentContactDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentContactDO.java" -}, { - "contentPath" : "java/InfraStudentTeacherDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentTeacherDO.java" -}, { - "contentPath" : "java/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentMapper.java" -}, { - "contentPath" : "java/InfraStudentContactMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentContactMapper.java" -}, { - "contentPath" : "java/InfraStudentTeacherMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentTeacherMapper.java" -}, { - "contentPath" : "xml/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/resources/mapper/demo/InfraStudentMapper.xml" -}, { - "contentPath" : "java/InfraStudentServiceImpl", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImpl.java" -}, { - "contentPath" : "java/InfraStudentService", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentService.java" -}, { - "contentPath" : "java/InfraStudentServiceImplTest", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/test/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImplTest.java" -}, { - "contentPath" : "java/ErrorCodeConstants_手动操作", - "filePath" : "hangtag-module-infra/hangtag-module-infra-api/src/main/java/cn.hangtag/module/infra/enums/ErrorCodeConstants_手动操作.java" -}, { - "contentPath" : "sql/sql", - "filePath" : "sql/sql.sql" -}, { - "contentPath" : "sql/h2", - "filePath" : "sql/h2.sql" -}, { - "contentPath" : "vue/index", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/index.vue" -}, { - "contentPath": "js/index", - "filePath": "hangtag-ui-admin-vue2/src/api/infra/demo/index.js" -}, { - "contentPath" : "vue/StudentForm", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/StudentForm.vue" -}, { - "contentPath" : "vue/StudentContactForm", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/components/StudentContactForm.vue" -}, { - "contentPath" : "vue/StudentTeacherForm", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/components/StudentTeacherForm.vue" -} ] \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/ErrorCodeConstants_手动操作 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/ErrorCodeConstants_手动操作 deleted file mode 100644 index 4d16bed..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/ErrorCodeConstants_手动操作 +++ /dev/null @@ -1,3 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 hangtag-module-infra-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== 学生 TODO 补充编号 ========== -ErrorCode STUDENT_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生不存在"); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentContactDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentContactDO deleted file mode 100644 index 4649592..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentContactDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生联系人 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_contact") -@KeySequence("infra_student_contact_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentContactDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentContactMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentContactMapper deleted file mode 100644 index 6032819..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentContactMapper +++ /dev/null @@ -1,28 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生联系人 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentContactMapper extends BaseMapperX { - - default List selectListByStudentId(Long studentId) { - return selectList(InfraStudentContactDO::getStudentId, studentId); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentContactDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentController b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentController deleted file mode 100644 index 00d176f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentController +++ /dev/null @@ -1,117 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.CommonResult; -import cn.hangtag.framework.common.util.object.BeanUtils; -import static cn.hangtag.framework.common.pojo.CommonResult.success; - -import cn.hangtag.framework.excel.core.util.ExcelUtils; - -import cn.hangtag.framework.operatelog.core.annotations.OperateLog; -import static cn.hangtag.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.module.infra.service.demo.InfraStudentService; - -@Tag(name = "管理后台 - 学生") -@RestController -@RequestMapping("/infra/student") -@Validated -public class InfraStudentController { - - @Resource - private InfraStudentService studentService; - - @PostMapping("/create") - @Operation(summary = "创建学生") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudent(@Valid @RequestBody InfraStudentSaveReqVO createReqVO) { - return success(studentService.createStudent(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新学生") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudent(@Valid @RequestBody InfraStudentSaveReqVO updateReqVO) { - studentService.updateStudent(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除学生") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudent(@RequestParam("id") Long id) { - studentService.deleteStudent(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得学生") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudent(@RequestParam("id") Long id) { - InfraStudentDO student = studentService.getStudent(id); - return success(BeanUtils.toBean(student, InfraStudentRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得学生分页") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentPage(@Valid InfraStudentPageReqVO pageReqVO) { - PageResult pageResult = studentService.getStudentPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, InfraStudentRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出学生 Excel") - @PreAuthorize("@ss.hasPermission('infra:student:export')") - @OperateLog(type = EXPORT) - public void exportStudentExcel(@Valid InfraStudentPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = studentService.getStudentPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "学生.xls", "数据", InfraStudentRespVO.class, - BeanUtils.toBean(list, InfraStudentRespVO.class)); - } - - // ==================== 子表(学生联系人) ==================== - - @GetMapping("/student-contact/list-by-student-id") - @Operation(summary = "获得学生联系人列表") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentContactListByStudentId(@RequestParam("studentId") Long studentId) { - return success(studentService.getStudentContactListByStudentId(studentId)); - } - - // ==================== 子表(学生班主任) ==================== - - @GetMapping("/student-teacher/get-by-student-id") - @Operation(summary = "获得学生班主任") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudentTeacherByStudentId(@RequestParam("studentId") Long studentId) { - return success(studentService.getStudentTeacherByStudentId(studentId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentDO deleted file mode 100644 index f0b605d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentDO +++ /dev/null @@ -1,67 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生 DO - * - * @author 芋道源码 - */ -@TableName("infra_student") -@KeySequence("infra_student_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentMapper deleted file mode 100644 index ba82b63..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import org.apache.ibatis.annotations.Mapper; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; - -/** - * 学生 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentMapper extends BaseMapperX { - - default PageResult selectPage(InfraStudentPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(InfraStudentDO::getName, reqVO.getName()) - .eqIfPresent(InfraStudentDO::getBirthday, reqVO.getBirthday()) - .eqIfPresent(InfraStudentDO::getSex, reqVO.getSex()) - .eqIfPresent(InfraStudentDO::getEnabled, reqVO.getEnabled()) - .betweenIfPresent(InfraStudentDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(InfraStudentDO::getId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentPageReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentPageReqVO deleted file mode 100644 index d55baae..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentPageReqVO +++ /dev/null @@ -1,34 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.hangtag.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 学生分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class InfraStudentPageReqVO extends PageParam { - - @Schema(description = "名字", example = "芋头") - private String name; - - @Schema(description = "出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", example = "1") - private Integer sex; - - @Schema(description = "是否有效", example = "true") - private Boolean enabled; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentRespVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentRespVO deleted file mode 100644 index 8e6a44d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentRespVO +++ /dev/null @@ -1,60 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import cn.hangtag.framework.excel.core.annotations.DictFormat; -import cn.hangtag.framework.excel.core.convert.DictConvert; - -@Schema(description = "管理后台 - 学生 Response VO") -@Data -@ExcelIgnoreUnannotated -public class InfraStudentRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @ExcelProperty("名字") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @ExcelProperty("简介") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "性别", converter = DictConvert.class) - @DictFormat("system_user_sex") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @ExcelProperty(value = "是否有效", converter = DictConvert.class) - @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @ExcelProperty("头像") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @ExcelProperty("附件") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @ExcelProperty("备注") - private String memo; - - @Schema(description = "创建时间") - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentSaveReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentSaveReqVO deleted file mode 100644 index 40d549c..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentSaveReqVO +++ /dev/null @@ -1,58 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; - -@Schema(description = "管理后台 - 学生新增/修改 Request VO") -@Data -public class InfraStudentSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @NotEmpty(message = "名字不能为空") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @NotEmpty(message = "简介不能为空") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "出生日期不能为空") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "性别不能为空") - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @NotNull(message = "是否有效不能为空") - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @NotEmpty(message = "头像不能为空") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @NotEmpty(message = "附件不能为空") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @NotEmpty(message = "备注不能为空") - private String memo; - - @Schema(description = "学生联系人列表") - private List studentContacts; - - @Schema(description = "学生班主任") - private InfraStudentTeacherDO studentTeacher; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentService b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentService deleted file mode 100644 index e4544af..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentService +++ /dev/null @@ -1,77 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import java.util.*; -import javax.validation.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; - -/** - * 学生 Service 接口 - * - * @author 芋道源码 - */ -public interface InfraStudentService { - - /** - * 创建学生 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStudent(@Valid InfraStudentSaveReqVO createReqVO); - - /** - * 更新学生 - * - * @param updateReqVO 更新信息 - */ - void updateStudent(@Valid InfraStudentSaveReqVO updateReqVO); - - /** - * 删除学生 - * - * @param id 编号 - */ - void deleteStudent(Long id); - - /** - * 获得学生 - * - * @param id 编号 - * @return 学生 - */ - InfraStudentDO getStudent(Long id); - - /** - * 获得学生分页 - * - * @param pageReqVO 分页查询 - * @return 学生分页 - */ - PageResult getStudentPage(InfraStudentPageReqVO pageReqVO); - - // ==================== 子表(学生联系人) ==================== - - /** - * 获得学生联系人列表 - * - * @param studentId 学生编号 - * @return 学生联系人列表 - */ - List getStudentContactListByStudentId(Long studentId); - - // ==================== 子表(学生班主任) ==================== - - /** - * 获得学生班主任 - * - * @param studentId 学生编号 - * @return 学生班主任 - */ - InfraStudentTeacherDO getStudentTeacherByStudentId(Long studentId); - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentServiceImpl b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentServiceImpl deleted file mode 100644 index a724c20..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentServiceImpl +++ /dev/null @@ -1,147 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.util.object.BeanUtils; - -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentContactMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentTeacherMapper; - -import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; - -/** - * 学生 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class InfraStudentServiceImpl implements InfraStudentService { - - @Resource - private InfraStudentMapper studentMapper; - @Resource - private InfraStudentContactMapper studentContactMapper; - @Resource - private InfraStudentTeacherMapper studentTeacherMapper; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createStudent(InfraStudentSaveReqVO createReqVO) { - // 插入 - InfraStudentDO student = BeanUtils.toBean(createReqVO, InfraStudentDO.class); - studentMapper.insert(student); - - // 插入子表 - createStudentContactList(student.getId(), createReqVO.getStudentContacts()); - createStudentTeacher(student.getId(), createReqVO.getStudentTeacher()); - // 返回 - return student.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStudent(InfraStudentSaveReqVO updateReqVO) { - // 校验存在 - validateStudentExists(updateReqVO.getId()); - // 更新 - InfraStudentDO updateObj = BeanUtils.toBean(updateReqVO, InfraStudentDO.class); - studentMapper.updateById(updateObj); - - // 更新子表 - updateStudentContactList(updateReqVO.getId(), updateReqVO.getStudentContacts()); - updateStudentTeacher(updateReqVO.getId(), updateReqVO.getStudentTeacher()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteStudent(Long id) { - // 校验存在 - validateStudentExists(id); - // 删除 - studentMapper.deleteById(id); - - // 删除子表 - deleteStudentContactByStudentId(id); - deleteStudentTeacherByStudentId(id); - } - - private void validateStudentExists(Long id) { - if (studentMapper.selectById(id) == null) { - throw exception(STUDENT_NOT_EXISTS); - } - } - - @Override - public InfraStudentDO getStudent(Long id) { - return studentMapper.selectById(id); - } - - @Override - public PageResult getStudentPage(InfraStudentPageReqVO pageReqVO) { - return studentMapper.selectPage(pageReqVO); - } - - // ==================== 子表(学生联系人) ==================== - - @Override - public List getStudentContactListByStudentId(Long studentId) { - return studentContactMapper.selectListByStudentId(studentId); - } - - private void createStudentContactList(Long studentId, List list) { - list.forEach(o -> o.setStudentId(studentId)); - studentContactMapper.insertBatch(list); - } - - private void updateStudentContactList(Long studentId, List list) { - deleteStudentContactByStudentId(studentId); - list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 - createStudentContactList(studentId, list); - } - - private void deleteStudentContactByStudentId(Long studentId) { - studentContactMapper.deleteByStudentId(studentId); - } - - // ==================== 子表(学生班主任) ==================== - - @Override - public InfraStudentTeacherDO getStudentTeacherByStudentId(Long studentId) { - return studentTeacherMapper.selectByStudentId(studentId); - } - - private void createStudentTeacher(Long studentId, InfraStudentTeacherDO studentTeacher) { - if (studentTeacher == null) { - return; - } - studentTeacher.setStudentId(studentId); - studentTeacherMapper.insert(studentTeacher); - } - - private void updateStudentTeacher(Long studentId, InfraStudentTeacherDO studentTeacher) { - if (studentTeacher == null) { - return; - } - studentTeacher.setStudentId(studentId); - studentTeacher.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 - studentTeacherMapper.insertOrUpdate(studentTeacher); - } - - private void deleteStudentTeacherByStudentId(Long studentId) { - studentTeacherMapper.deleteByStudentId(studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentServiceImplTest b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentServiceImplTest deleted file mode 100644 index 4fdc060..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentServiceImplTest +++ /dev/null @@ -1,146 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import javax.annotation.Resource; - -import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.framework.common.pojo.PageResult; - -import javax.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; -import static cn.hangtag.framework.test.core.util.AssertUtils.*; -import static cn.hangtag.framework.test.core.util.RandomUtils.*; -import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; -import static cn.hangtag.framework.common.util.object.ObjectUtils.*; -import static cn.hangtag.framework.common.util.date.DateUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -/** - * {@link InfraStudentServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(InfraStudentServiceImpl.class) -public class InfraStudentServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfraStudentServiceImpl studentService; - - @Resource - private InfraStudentMapper studentMapper; - - @Test - public void testCreateStudent_success() { - // 准备参数 - InfraStudentSaveReqVO createReqVO = randomPojo(InfraStudentSaveReqVO.class).setId(null); - - // 调用 - Long studentId = studentService.createStudent(createReqVO); - // 断言 - assertNotNull(studentId); - // 校验记录的属性是否正确 - InfraStudentDO student = studentMapper.selectById(studentId); - assertPojoEquals(createReqVO, student, "id"); - } - - @Test - public void testUpdateStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class, o -> { - o.setId(dbStudent.getId()); // 设置更新的 ID - }); - - // 调用 - studentService.updateStudent(updateReqVO); - // 校验是否更新正确 - InfraStudentDO student = studentMapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, student); - } - - @Test - public void testUpdateStudent_notExists() { - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.updateStudent(updateReqVO), STUDENT_NOT_EXISTS); - } - - @Test - public void testDeleteStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbStudent.getId(); - - // 调用 - studentService.deleteStudent(id); - // 校验数据不存在了 - assertNull(studentMapper.selectById(id)); - } - - @Test - public void testDeleteStudent_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.deleteStudent(id), STUDENT_NOT_EXISTS); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGetStudentPage() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class, o -> { // 等会查询到 - o.setName(null); - o.setBirthday(null); - o.setSex(null); - o.setEnabled(null); - o.setCreateTime(null); - }); - studentMapper.insert(dbStudent); - // 测试 name 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setName(null))); - // 测试 birthday 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setBirthday(null))); - // 测试 sex 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setSex(null))); - // 测试 enabled 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setEnabled(null))); - // 测试 createTime 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setCreateTime(null))); - // 准备参数 - InfraStudentPageReqVO reqVO = new InfraStudentPageReqVO(); - reqVO.setName(null); - reqVO.setBirthday(null); - reqVO.setSex(null); - reqVO.setEnabled(null); - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); - - // 调用 - PageResult pageResult = studentService.getStudentPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbStudent, pageResult.getList().get(0)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentTeacherDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentTeacherDO deleted file mode 100644 index dfdae97..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentTeacherDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生班主任 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_teacher") -@KeySequence("infra_student_teacher_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentTeacherDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentTeacherMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentTeacherMapper deleted file mode 100644 index 8e2073f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/java/InfraStudentTeacherMapper +++ /dev/null @@ -1,28 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生班主任 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentTeacherMapper extends BaseMapperX { - - default InfraStudentTeacherDO selectByStudentId(Long studentId) { - return selectOne(InfraStudentTeacherDO::getStudentId, studentId); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentTeacherDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/js/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/js/index deleted file mode 100644 index b4e6ac5..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/js/index +++ /dev/null @@ -1,74 +0,0 @@ -import request from '@/utils/request' - -// 创建学生 -export function createStudent(data) { - return request({ - url: '/infra/student/create', - method: 'post', - data: data - }) -} - -// 更新学生 -export function updateStudent(data) { - return request({ - url: '/infra/student/update', - method: 'put', - data: data - }) -} - -// 删除学生 -export function deleteStudent(id) { - return request({ - url: '/infra/student/delete?id=' + id, - method: 'delete' - }) -} - -// 获得学生 -export function getStudent(id) { - return request({ - url: '/infra/student/get?id=' + id, - method: 'get' - }) -} - -// 获得学生分页 -export function getStudentPage(params) { - return request({ - url: '/infra/student/page', - method: 'get', - params - }) -} -// 导出学生 Excel -export function exportStudentExcel(params) { - return request({ - url: '/infra/student/export-excel', - method: 'get', - params, - responseType: 'blob' - }) -} - -// ==================== 子表(学生联系人) ==================== - - // 获得学生联系人列表 - export function getStudentContactListByStudentId(studentId) { - return request({ - url: `/infra/student/student-contact/list-by-student-id?studentId=` + studentId, - method: 'get' - }) - } - -// ==================== 子表(学生班主任) ==================== - - // 获得学生班主任 - export function getStudentTeacherByStudentId(studentId) { - return request({ - url: `/infra/student/student-teacher/get-by-student-id?studentId=` + studentId, - method: 'get' - }) - } - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/sql/h2 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/sql/h2 deleted file mode 100644 index 9150b93..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/sql/h2 +++ /dev/null @@ -1,17 +0,0 @@ --- 将该建表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "infra_student" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar NOT NULL, - "description" varchar NOT NULL, - "birthday" varchar NOT NULL, - "sex" int NOT NULL, - "enabled" bit NOT NULL, - "avatar" varchar NOT NULL, - "video" varchar NOT NULL, - "memo" varchar NOT NULL, - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ("id") -) COMMENT '学生表'; - --- 将该删表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "infra_student"; \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/sql/sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/sql/sql deleted file mode 100644 index 83df279..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/sql/sql +++ /dev/null @@ -1,55 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '学生管理', '', 2, 0, 888, - 'student', '', 'infra/demo/index', 0, 'InfraStudent' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生查询', 'infra:student:query', 3, 1, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生创建', 'infra:student:create', 3, 2, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生更新', 'infra:student:update', 3, 3, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生删除', 'infra:student:delete', 3, 4, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生导出', 'infra:student:export', 3, 5, @parentId, - '', '', '', 0 -); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentContactForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentContactForm deleted file mode 100644 index c953bfa..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentContactForm +++ /dev/null @@ -1,177 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentForm deleted file mode 100644 index 6d93b61..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentForm +++ /dev/null @@ -1,180 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentTeacherForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentTeacherForm deleted file mode 100644 index 0dac19b..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/StudentTeacherForm +++ /dev/null @@ -1,127 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/index deleted file mode 100644 index 4607581..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/vue/index +++ /dev/null @@ -1,205 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/xml/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/xml/InfraStudentMapper deleted file mode 100644 index 12bfc1f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_master_normal/xml/InfraStudentMapper +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/assert.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/assert.json deleted file mode 100644 index 5fb5665..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/assert.json +++ /dev/null @@ -1,49 +0,0 @@ -[ { - "contentPath" : "java/InfraStudentPageReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentPageReqVO.java" -}, { - "contentPath" : "java/InfraStudentRespVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentRespVO.java" -}, { - "contentPath" : "java/InfraStudentSaveReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentSaveReqVO.java" -}, { - "contentPath" : "java/InfraStudentController", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/InfraStudentController.java" -}, { - "contentPath" : "java/InfraStudentDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentDO.java" -}, { - "contentPath" : "java/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentMapper.java" -}, { - "contentPath" : "xml/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/resources/mapper/demo/InfraStudentMapper.xml" -}, { - "contentPath" : "java/InfraStudentServiceImpl", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImpl.java" -}, { - "contentPath" : "java/InfraStudentService", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentService.java" -}, { - "contentPath" : "java/InfraStudentServiceImplTest", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/test/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImplTest.java" -}, { - "contentPath" : "java/ErrorCodeConstants_手动操作", - "filePath" : "hangtag-module-infra/hangtag-module-infra-api/src/main/java/cn.hangtag/module/infra/enums/ErrorCodeConstants_手动操作.java" -}, { - "contentPath" : "sql/sql", - "filePath" : "sql/sql.sql" -}, { - "contentPath" : "sql/h2", - "filePath" : "sql/h2.sql" -}, { - "contentPath" : "vue/index", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/index.vue" -}, { - "contentPath": "js/index", - "filePath": "hangtag-ui-admin-vue2/src/api/infra/demo/index.js" -}, { - "contentPath" : "vue/StudentForm", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/StudentForm.vue" -} ] \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/ErrorCodeConstants_手动操作 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/ErrorCodeConstants_手动操作 deleted file mode 100644 index 4d16bed..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/ErrorCodeConstants_手动操作 +++ /dev/null @@ -1,3 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 hangtag-module-infra-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== 学生 TODO 补充编号 ========== -ErrorCode STUDENT_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生不存在"); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentController b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentController deleted file mode 100644 index 442f9eb..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentController +++ /dev/null @@ -1,95 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.CommonResult; -import cn.hangtag.framework.common.util.object.BeanUtils; -import static cn.hangtag.framework.common.pojo.CommonResult.success; - -import cn.hangtag.framework.excel.core.util.ExcelUtils; - -import cn.hangtag.framework.operatelog.core.annotations.OperateLog; -import static cn.hangtag.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.service.demo.InfraStudentService; - -@Tag(name = "管理后台 - 学生") -@RestController -@RequestMapping("/infra/student") -@Validated -public class InfraStudentController { - - @Resource - private InfraStudentService studentService; - - @PostMapping("/create") - @Operation(summary = "创建学生") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudent(@Valid @RequestBody InfraStudentSaveReqVO createReqVO) { - return success(studentService.createStudent(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新学生") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudent(@Valid @RequestBody InfraStudentSaveReqVO updateReqVO) { - studentService.updateStudent(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除学生") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudent(@RequestParam("id") Long id) { - studentService.deleteStudent(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得学生") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudent(@RequestParam("id") Long id) { - InfraStudentDO student = studentService.getStudent(id); - return success(BeanUtils.toBean(student, InfraStudentRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得学生分页") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentPage(@Valid InfraStudentPageReqVO pageReqVO) { - PageResult pageResult = studentService.getStudentPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, InfraStudentRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出学生 Excel") - @PreAuthorize("@ss.hasPermission('infra:student:export')") - @OperateLog(type = EXPORT) - public void exportStudentExcel(@Valid InfraStudentPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = studentService.getStudentPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "学生.xls", "数据", InfraStudentRespVO.class, - BeanUtils.toBean(list, InfraStudentRespVO.class)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentDO deleted file mode 100644 index f0b605d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentDO +++ /dev/null @@ -1,67 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生 DO - * - * @author 芋道源码 - */ -@TableName("infra_student") -@KeySequence("infra_student_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentMapper deleted file mode 100644 index ba82b63..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import org.apache.ibatis.annotations.Mapper; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; - -/** - * 学生 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentMapper extends BaseMapperX { - - default PageResult selectPage(InfraStudentPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(InfraStudentDO::getName, reqVO.getName()) - .eqIfPresent(InfraStudentDO::getBirthday, reqVO.getBirthday()) - .eqIfPresent(InfraStudentDO::getSex, reqVO.getSex()) - .eqIfPresent(InfraStudentDO::getEnabled, reqVO.getEnabled()) - .betweenIfPresent(InfraStudentDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(InfraStudentDO::getId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentPageReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentPageReqVO deleted file mode 100644 index d55baae..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentPageReqVO +++ /dev/null @@ -1,34 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.hangtag.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 学生分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class InfraStudentPageReqVO extends PageParam { - - @Schema(description = "名字", example = "芋头") - private String name; - - @Schema(description = "出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", example = "1") - private Integer sex; - - @Schema(description = "是否有效", example = "true") - private Boolean enabled; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentRespVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentRespVO deleted file mode 100644 index 8e6a44d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentRespVO +++ /dev/null @@ -1,60 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import cn.hangtag.framework.excel.core.annotations.DictFormat; -import cn.hangtag.framework.excel.core.convert.DictConvert; - -@Schema(description = "管理后台 - 学生 Response VO") -@Data -@ExcelIgnoreUnannotated -public class InfraStudentRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @ExcelProperty("名字") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @ExcelProperty("简介") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "性别", converter = DictConvert.class) - @DictFormat("system_user_sex") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @ExcelProperty(value = "是否有效", converter = DictConvert.class) - @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @ExcelProperty("头像") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @ExcelProperty("附件") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @ExcelProperty("备注") - private String memo; - - @Schema(description = "创建时间") - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentSaveReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentSaveReqVO deleted file mode 100644 index 627fac5..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentSaveReqVO +++ /dev/null @@ -1,50 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 学生新增/修改 Request VO") -@Data -public class InfraStudentSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @NotEmpty(message = "名字不能为空") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @NotEmpty(message = "简介不能为空") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "出生日期不能为空") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "性别不能为空") - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @NotNull(message = "是否有效不能为空") - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @NotEmpty(message = "头像不能为空") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @NotEmpty(message = "附件不能为空") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @NotEmpty(message = "备注不能为空") - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentService b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentService deleted file mode 100644 index 615648f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentService +++ /dev/null @@ -1,55 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import java.util.*; -import javax.validation.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; - -/** - * 学生 Service 接口 - * - * @author 芋道源码 - */ -public interface InfraStudentService { - - /** - * 创建学生 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStudent(@Valid InfraStudentSaveReqVO createReqVO); - - /** - * 更新学生 - * - * @param updateReqVO 更新信息 - */ - void updateStudent(@Valid InfraStudentSaveReqVO updateReqVO); - - /** - * 删除学生 - * - * @param id 编号 - */ - void deleteStudent(Long id); - - /** - * 获得学生 - * - * @param id 编号 - * @return 学生 - */ - InfraStudentDO getStudent(Long id); - - /** - * 获得学生分页 - * - * @param pageReqVO 分页查询 - * @return 学生分页 - */ - PageResult getStudentPage(InfraStudentPageReqVO pageReqVO); - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentServiceImpl b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentServiceImpl deleted file mode 100644 index 337f64a..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentServiceImpl +++ /dev/null @@ -1,74 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.util.object.BeanUtils; - -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; - -import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; - -/** - * 学生 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class InfraStudentServiceImpl implements InfraStudentService { - - @Resource - private InfraStudentMapper studentMapper; - - @Override - public Long createStudent(InfraStudentSaveReqVO createReqVO) { - // 插入 - InfraStudentDO student = BeanUtils.toBean(createReqVO, InfraStudentDO.class); - studentMapper.insert(student); - // 返回 - return student.getId(); - } - - @Override - public void updateStudent(InfraStudentSaveReqVO updateReqVO) { - // 校验存在 - validateStudentExists(updateReqVO.getId()); - // 更新 - InfraStudentDO updateObj = BeanUtils.toBean(updateReqVO, InfraStudentDO.class); - studentMapper.updateById(updateObj); - } - - @Override - public void deleteStudent(Long id) { - // 校验存在 - validateStudentExists(id); - // 删除 - studentMapper.deleteById(id); - } - - private void validateStudentExists(Long id) { - if (studentMapper.selectById(id) == null) { - throw exception(STUDENT_NOT_EXISTS); - } - } - - @Override - public InfraStudentDO getStudent(Long id) { - return studentMapper.selectById(id); - } - - @Override - public PageResult getStudentPage(InfraStudentPageReqVO pageReqVO) { - return studentMapper.selectPage(pageReqVO); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentServiceImplTest b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentServiceImplTest deleted file mode 100644 index 4fdc060..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/java/InfraStudentServiceImplTest +++ /dev/null @@ -1,146 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import javax.annotation.Resource; - -import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.framework.common.pojo.PageResult; - -import javax.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; -import static cn.hangtag.framework.test.core.util.AssertUtils.*; -import static cn.hangtag.framework.test.core.util.RandomUtils.*; -import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; -import static cn.hangtag.framework.common.util.object.ObjectUtils.*; -import static cn.hangtag.framework.common.util.date.DateUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -/** - * {@link InfraStudentServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(InfraStudentServiceImpl.class) -public class InfraStudentServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfraStudentServiceImpl studentService; - - @Resource - private InfraStudentMapper studentMapper; - - @Test - public void testCreateStudent_success() { - // 准备参数 - InfraStudentSaveReqVO createReqVO = randomPojo(InfraStudentSaveReqVO.class).setId(null); - - // 调用 - Long studentId = studentService.createStudent(createReqVO); - // 断言 - assertNotNull(studentId); - // 校验记录的属性是否正确 - InfraStudentDO student = studentMapper.selectById(studentId); - assertPojoEquals(createReqVO, student, "id"); - } - - @Test - public void testUpdateStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class, o -> { - o.setId(dbStudent.getId()); // 设置更新的 ID - }); - - // 调用 - studentService.updateStudent(updateReqVO); - // 校验是否更新正确 - InfraStudentDO student = studentMapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, student); - } - - @Test - public void testUpdateStudent_notExists() { - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.updateStudent(updateReqVO), STUDENT_NOT_EXISTS); - } - - @Test - public void testDeleteStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbStudent.getId(); - - // 调用 - studentService.deleteStudent(id); - // 校验数据不存在了 - assertNull(studentMapper.selectById(id)); - } - - @Test - public void testDeleteStudent_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.deleteStudent(id), STUDENT_NOT_EXISTS); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGetStudentPage() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class, o -> { // 等会查询到 - o.setName(null); - o.setBirthday(null); - o.setSex(null); - o.setEnabled(null); - o.setCreateTime(null); - }); - studentMapper.insert(dbStudent); - // 测试 name 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setName(null))); - // 测试 birthday 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setBirthday(null))); - // 测试 sex 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setSex(null))); - // 测试 enabled 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setEnabled(null))); - // 测试 createTime 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setCreateTime(null))); - // 准备参数 - InfraStudentPageReqVO reqVO = new InfraStudentPageReqVO(); - reqVO.setName(null); - reqVO.setBirthday(null); - reqVO.setSex(null); - reqVO.setEnabled(null); - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); - - // 调用 - PageResult pageResult = studentService.getStudentPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbStudent, pageResult.getList().get(0)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/js/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/js/index deleted file mode 100644 index 44db468..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/js/index +++ /dev/null @@ -1,53 +0,0 @@ -import request from '@/utils/request' - -// 创建学生 -export function createStudent(data) { - return request({ - url: '/infra/student/create', - method: 'post', - data: data - }) -} - -// 更新学生 -export function updateStudent(data) { - return request({ - url: '/infra/student/update', - method: 'put', - data: data - }) -} - -// 删除学生 -export function deleteStudent(id) { - return request({ - url: '/infra/student/delete?id=' + id, - method: 'delete' - }) -} - -// 获得学生 -export function getStudent(id) { - return request({ - url: '/infra/student/get?id=' + id, - method: 'get' - }) -} - -// 获得学生分页 -export function getStudentPage(params) { - return request({ - url: '/infra/student/page', - method: 'get', - params - }) -} -// 导出学生 Excel -export function exportStudentExcel(params) { - return request({ - url: '/infra/student/export-excel', - method: 'get', - params, - responseType: 'blob' - }) -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/sql/h2 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/sql/h2 deleted file mode 100644 index 9150b93..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/sql/h2 +++ /dev/null @@ -1,17 +0,0 @@ --- 将该建表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "infra_student" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar NOT NULL, - "description" varchar NOT NULL, - "birthday" varchar NOT NULL, - "sex" int NOT NULL, - "enabled" bit NOT NULL, - "avatar" varchar NOT NULL, - "video" varchar NOT NULL, - "memo" varchar NOT NULL, - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ("id") -) COMMENT '学生表'; - --- 将该删表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "infra_student"; \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/sql/sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/sql/sql deleted file mode 100644 index 83df279..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/sql/sql +++ /dev/null @@ -1,55 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '学生管理', '', 2, 0, 888, - 'student', '', 'infra/demo/index', 0, 'InfraStudent' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生查询', 'infra:student:query', 3, 1, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生创建', 'infra:student:create', 3, 2, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生更新', 'infra:student:update', 3, 3, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生删除', 'infra:student:delete', 3, 4, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生导出', 'infra:student:export', 3, 5, @parentId, - '', '', '', 0 -); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/vue/StudentForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/vue/StudentForm deleted file mode 100644 index d89e506..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/vue/StudentForm +++ /dev/null @@ -1,149 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/vue/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/vue/index deleted file mode 100644 index 4607581..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/vue/index +++ /dev/null @@ -1,205 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/assert.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/assert.json deleted file mode 100644 index 3d0ea59..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/assert.json +++ /dev/null @@ -1,49 +0,0 @@ -[ { - "contentPath" : "java/InfraCategoryListReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraCategoryListReqVO.java" -}, { - "contentPath" : "java/InfraCategoryRespVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraCategoryRespVO.java" -}, { - "contentPath" : "java/InfraCategorySaveReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraCategorySaveReqVO.java" -}, { - "contentPath" : "java/InfraCategoryController", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/InfraCategoryController.java" -}, { - "contentPath" : "java/InfraCategoryDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraCategoryDO.java" -}, { - "contentPath" : "java/InfraCategoryMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraCategoryMapper.java" -}, { - "contentPath" : "xml/InfraCategoryMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/resources/mapper/demo/InfraCategoryMapper.xml" -}, { - "contentPath" : "java/InfraCategoryServiceImpl", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraCategoryServiceImpl.java" -}, { - "contentPath" : "java/InfraCategoryService", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraCategoryService.java" -}, { - "contentPath" : "java/InfraCategoryServiceImplTest", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/test/java/cn.hangtag/module/infra/service/demo/InfraCategoryServiceImplTest.java" -}, { - "contentPath" : "java/ErrorCodeConstants_手动操作", - "filePath" : "hangtag-module-infra/hangtag-module-infra-api/src/main/java/cn.hangtag/module/infra/enums/ErrorCodeConstants_手动操作.java" -}, { - "contentPath" : "sql/sql", - "filePath" : "sql/sql.sql" -}, { - "contentPath" : "sql/h2", - "filePath" : "sql/h2.sql" -}, { - "contentPath" : "vue/index", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/index.vue" -}, { - "contentPath": "js/index", - "filePath": "hangtag-ui-admin-vue2/src/api/infra/demo/index.js" -}, { - "contentPath" : "vue/CategoryForm", - "filePath" : "hangtag-ui-admin-vue2/src/views/infra/demo/CategoryForm.vue" -} ] \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/ErrorCodeConstants_手动操作 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/ErrorCodeConstants_手动操作 deleted file mode 100644 index fea2fd6..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/ErrorCodeConstants_手动操作 +++ /dev/null @@ -1,8 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 hangtag-module-infra-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== 分类 TODO 补充编号 ========== -ErrorCode CATEGORY_NOT_EXISTS = new ErrorCode(TODO 补充编号, "分类不存在"); -ErrorCode CATEGORY_EXITS_CHILDREN = new ErrorCode(TODO 补充编号, "存在存在子分类,无法删除"); -ErrorCode CATEGORY_PARENT_NOT_EXITS = new ErrorCode(TODO 补充编号,"父级分类不存在"); -ErrorCode CATEGORY_PARENT_ERROR = new ErrorCode(TODO 补充编号, "不能设置自己为父分类"); -ErrorCode CATEGORY_NAME_DUPLICATE = new ErrorCode(TODO 补充编号, "已经存在该名字的分类"); -ErrorCode CATEGORY_PARENT_IS_CHILD = new ErrorCode(TODO 补充编号, "不能设置自己的子InfraCategory为父InfraCategory"); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryController b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryController deleted file mode 100644 index dc7a33a..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryController +++ /dev/null @@ -1,94 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.CommonResult; -import cn.hangtag.framework.common.util.object.BeanUtils; -import static cn.hangtag.framework.common.pojo.CommonResult.success; - -import cn.hangtag.framework.excel.core.util.ExcelUtils; - -import cn.hangtag.framework.operatelog.core.annotations.OperateLog; -import static cn.hangtag.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraCategoryDO; -import cn.hangtag.module.infra.service.demo.InfraCategoryService; - -@Tag(name = "管理后台 - 分类") -@RestController -@RequestMapping("/infra/category") -@Validated -public class InfraCategoryController { - - @Resource - private InfraCategoryService categoryService; - - @PostMapping("/create") - @Operation(summary = "创建分类") - @PreAuthorize("@ss.hasPermission('infra:category:create')") - public CommonResult createCategory(@Valid @RequestBody InfraCategorySaveReqVO createReqVO) { - return success(categoryService.createCategory(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新分类") - @PreAuthorize("@ss.hasPermission('infra:category:update')") - public CommonResult updateCategory(@Valid @RequestBody InfraCategorySaveReqVO updateReqVO) { - categoryService.updateCategory(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除分类") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:category:delete')") - public CommonResult deleteCategory(@RequestParam("id") Long id) { - categoryService.deleteCategory(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得分类") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:category:query')") - public CommonResult getCategory(@RequestParam("id") Long id) { - InfraCategoryDO category = categoryService.getCategory(id); - return success(BeanUtils.toBean(category, InfraCategoryRespVO.class)); - } - - @GetMapping("/list") - @Operation(summary = "获得分类列表") - @PreAuthorize("@ss.hasPermission('infra:category:query')") - public CommonResult> getCategoryList(@Valid InfraCategoryListReqVO listReqVO) { - List list = categoryService.getCategoryList(listReqVO); - return success(BeanUtils.toBean(list, InfraCategoryRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出分类 Excel") - @PreAuthorize("@ss.hasPermission('infra:category:export')") - @OperateLog(type = EXPORT) - public void exportCategoryExcel(@Valid InfraCategoryListReqVO listReqVO, - HttpServletResponse response) throws IOException { - List list = categoryService.getCategoryList(listReqVO); - // 导出 Excel - ExcelUtils.write(response, "分类.xls", "数据", InfraCategoryRespVO.class, - BeanUtils.toBean(list, InfraCategoryRespVO.class)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryDO deleted file mode 100644 index 7fe7a2b..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryDO +++ /dev/null @@ -1,39 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 分类 DO - * - * @author 芋道源码 - */ -@TableName("infra_category") -@KeySequence("infra_category_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraCategoryDO extends BaseDO { - - public static final Long PARENT_ID_ROOT = 0L; - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 父编号 - */ - private Long parentId; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryListReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryListReqVO deleted file mode 100644 index 77a6748..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryListReqVO +++ /dev/null @@ -1,15 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.hangtag.framework.common.pojo.PageParam; - -@Schema(description = "管理后台 - 分类列表 Request VO") -@Data -public class InfraCategoryListReqVO { - - @Schema(description = "名字", example = "芋头") - private String name; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryMapper deleted file mode 100644 index 3c89631..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryMapper +++ /dev/null @@ -1,34 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraCategoryDO; -import org.apache.ibatis.annotations.Mapper; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; - -/** - * 分类 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraCategoryMapper extends BaseMapperX { - - default List selectList(InfraCategoryListReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .likeIfPresent(InfraCategoryDO::getName, reqVO.getName()) - .orderByDesc(InfraCategoryDO::getId)); - } - - default InfraCategoryDO selectByParentIdAndName(Long parentId, String name) { - return selectOne(InfraCategoryDO::getParentId, parentId, InfraCategoryDO::getName, name); - } - - default Long selectCountByParentId(Long parentId) { - return selectCount(InfraCategoryDO::getParentId, parentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryRespVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryRespVO deleted file mode 100644 index a568538..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryRespVO +++ /dev/null @@ -1,26 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import com.alibaba.excel.annotation.*; - -@Schema(description = "管理后台 - 分类 Response VO") -@Data -@ExcelIgnoreUnannotated -public class InfraCategoryRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @ExcelProperty("名字") - private String name; - - @Schema(description = "父编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048") - @ExcelProperty("父编号") - private Long parentId; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategorySaveReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategorySaveReqVO deleted file mode 100644 index a946c68..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategorySaveReqVO +++ /dev/null @@ -1,24 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; - -@Schema(description = "管理后台 - 分类新增/修改 Request VO") -@Data -public class InfraCategorySaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @NotEmpty(message = "名字不能为空") - private String name; - - @Schema(description = "父编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048") - @NotNull(message = "父编号不能为空") - private Long parentId; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryService b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryService deleted file mode 100644 index b1dc148..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryService +++ /dev/null @@ -1,55 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import java.util.*; -import javax.validation.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraCategoryDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; - -/** - * 分类 Service 接口 - * - * @author 芋道源码 - */ -public interface InfraCategoryService { - - /** - * 创建分类 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createCategory(@Valid InfraCategorySaveReqVO createReqVO); - - /** - * 更新分类 - * - * @param updateReqVO 更新信息 - */ - void updateCategory(@Valid InfraCategorySaveReqVO updateReqVO); - - /** - * 删除分类 - * - * @param id 编号 - */ - void deleteCategory(Long id); - - /** - * 获得分类 - * - * @param id 编号 - * @return 分类 - */ - InfraCategoryDO getCategory(Long id); - - /** - * 获得分类列表 - * - * @param listReqVO 查询条件 - * @return 分类列表 - */ - List getCategoryList(InfraCategoryListReqVO listReqVO); - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryServiceImpl b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryServiceImpl deleted file mode 100644 index 15f36f5..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryServiceImpl +++ /dev/null @@ -1,136 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraCategoryDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.util.object.BeanUtils; - -import cn.hangtag.module.infra.dal.mysql.demo.InfraCategoryMapper; - -import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; - -/** - * 分类 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class InfraCategoryServiceImpl implements InfraCategoryService { - - @Resource - private InfraCategoryMapper categoryMapper; - - @Override - public Long createCategory(InfraCategorySaveReqVO createReqVO) { - // 校验父编号的有效性 - validateParentCategory(null, createReqVO.getParentId()); - // 校验名字的唯一性 - validateCategoryNameUnique(null, createReqVO.getParentId(), createReqVO.getName()); - - // 插入 - InfraCategoryDO category = BeanUtils.toBean(createReqVO, InfraCategoryDO.class); - categoryMapper.insert(category); - // 返回 - return category.getId(); - } - - @Override - public void updateCategory(InfraCategorySaveReqVO updateReqVO) { - // 校验存在 - validateCategoryExists(updateReqVO.getId()); - // 校验父编号的有效性 - validateParentCategory(updateReqVO.getId(), updateReqVO.getParentId()); - // 校验名字的唯一性 - validateCategoryNameUnique(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getName()); - - // 更新 - InfraCategoryDO updateObj = BeanUtils.toBean(updateReqVO, InfraCategoryDO.class); - categoryMapper.updateById(updateObj); - } - - @Override - public void deleteCategory(Long id) { - // 校验存在 - validateCategoryExists(id); - // 校验是否有子分类 - if (categoryMapper.selectCountByParentId(id) > 0) { - throw exception(CATEGORY_EXITS_CHILDREN); - } - // 删除 - categoryMapper.deleteById(id); - } - - private void validateCategoryExists(Long id) { - if (categoryMapper.selectById(id) == null) { - throw exception(CATEGORY_NOT_EXISTS); - } - } - - private void validateParentCategory(Long id, Long parentId) { - if (parentId == null || CategoryDO.PARENT_ID_ROOT.equals(parentId)) { - return; - } - // 1. 不能设置自己为父分类 - if (Objects.equals(id, parentId)) { - throw exception(CATEGORY_PARENT_ERROR); - } - // 2. 父分类不存在 - CategoryDO parentCategory = categoryMapper.selectById(parentId); - if (parentCategory == null) { - throw exception(CATEGORY_PARENT_NOT_EXITS); - } - // 3. 递归校验父分类,如果父分类是自己的子分类,则报错,避免形成环路 - if (id == null) { // id 为空,说明新增,不需要考虑环路 - return; - } - for (int i = 0; i < Short.MAX_VALUE; i++) { - // 3.1 校验环路 - parentId = parentCategory.getParentId(); - if (Objects.equals(id, parentId)) { - throw exception(CATEGORY_PARENT_IS_CHILD); - } - // 3.2 继续递归下一级父分类 - if (parentId == null || CategoryDO.PARENT_ID_ROOT.equals(parentId)) { - break; - } - parentCategory = categoryMapper.selectById(parentId); - if (parentCategory == null) { - break; - } - } - } - - private void validateCategoryNameUnique(Long id, Long parentId, String name) { - CategoryDO category = categoryMapper.selectByParentIdAndName(parentId, name); - if (category == null) { - return; - } - // 如果 id 为空,说明不用比较是否为相同 id 的分类 - if (id == null) { - throw exception(CATEGORY_NAME_DUPLICATE); - } - if (!Objects.equals(category.getId(), id)) { - throw exception(CATEGORY_NAME_DUPLICATE); - } - } - - @Override - public InfraCategoryDO getCategory(Long id) { - return categoryMapper.selectById(id); - } - - @Override - public List getCategoryList(InfraCategoryListReqVO listReqVO) { - return categoryMapper.selectList(listReqVO); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryServiceImplTest b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryServiceImplTest deleted file mode 100644 index 7f7623b..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/java/InfraCategoryServiceImplTest +++ /dev/null @@ -1,129 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import javax.annotation.Resource; - -import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraCategoryDO; -import cn.hangtag.module.infra.dal.mysql.demo.InfraCategoryMapper; -import cn.hangtag.framework.common.pojo.PageResult; - -import javax.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; -import static cn.hangtag.framework.test.core.util.AssertUtils.*; -import static cn.hangtag.framework.test.core.util.RandomUtils.*; -import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; -import static cn.hangtag.framework.common.util.object.ObjectUtils.*; -import static cn.hangtag.framework.common.util.date.DateUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -/** - * {@link InfraCategoryServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(InfraCategoryServiceImpl.class) -public class InfraCategoryServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfraCategoryServiceImpl categoryService; - - @Resource - private InfraCategoryMapper categoryMapper; - - @Test - public void testCreateCategory_success() { - // 准备参数 - InfraCategorySaveReqVO createReqVO = randomPojo(InfraCategorySaveReqVO.class).setId(null); - - // 调用 - Long categoryId = categoryService.createCategory(createReqVO); - // 断言 - assertNotNull(categoryId); - // 校验记录的属性是否正确 - InfraCategoryDO category = categoryMapper.selectById(categoryId); - assertPojoEquals(createReqVO, category, "id"); - } - - @Test - public void testUpdateCategory_success() { - // mock 数据 - InfraCategoryDO dbCategory = randomPojo(InfraCategoryDO.class); - categoryMapper.insert(dbCategory);// @Sql: 先插入出一条存在的数据 - // 准备参数 - InfraCategorySaveReqVO updateReqVO = randomPojo(InfraCategorySaveReqVO.class, o -> { - o.setId(dbCategory.getId()); // 设置更新的 ID - }); - - // 调用 - categoryService.updateCategory(updateReqVO); - // 校验是否更新正确 - InfraCategoryDO category = categoryMapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, category); - } - - @Test - public void testUpdateCategory_notExists() { - // 准备参数 - InfraCategorySaveReqVO updateReqVO = randomPojo(InfraCategorySaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> categoryService.updateCategory(updateReqVO), CATEGORY_NOT_EXISTS); - } - - @Test - public void testDeleteCategory_success() { - // mock 数据 - InfraCategoryDO dbCategory = randomPojo(InfraCategoryDO.class); - categoryMapper.insert(dbCategory);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbCategory.getId(); - - // 调用 - categoryService.deleteCategory(id); - // 校验数据不存在了 - assertNull(categoryMapper.selectById(id)); - } - - @Test - public void testDeleteCategory_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> categoryService.deleteCategory(id), CATEGORY_NOT_EXISTS); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGetCategoryList() { - // mock 数据 - InfraCategoryDO dbCategory = randomPojo(InfraCategoryDO.class, o -> { // 等会查询到 - o.setName(null); - }); - categoryMapper.insert(dbCategory); - // 测试 name 不匹配 - categoryMapper.insert(cloneIgnoreId(dbCategory, o -> o.setName(null))); - // 准备参数 - InfraCategoryListReqVO reqVO = new InfraCategoryListReqVO(); - reqVO.setName(null); - - // 调用 - List list = categoryService.getCategoryList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbCategory, list.get(0)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/js/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/js/index deleted file mode 100644 index 1e6ffdc..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/js/index +++ /dev/null @@ -1,53 +0,0 @@ -import request from '@/utils/request' - -// 创建分类 -export function createCategory(data) { - return request({ - url: '/infra/category/create', - method: 'post', - data: data - }) -} - -// 更新分类 -export function updateCategory(data) { - return request({ - url: '/infra/category/update', - method: 'put', - data: data - }) -} - -// 删除分类 -export function deleteCategory(id) { - return request({ - url: '/infra/category/delete?id=' + id, - method: 'delete' - }) -} - -// 获得分类 -export function getCategory(id) { - return request({ - url: '/infra/category/get?id=' + id, - method: 'get' - }) -} - -// 获得分类列表 -export function getCategoryList(params) { - return request({ - url: '/infra/category/list', - method: 'get', - params - }) -} -// 导出分类 Excel -export function exportCategoryExcel(params) { - return request({ - url: '/infra/category/export-excel', - method: 'get', - params, - responseType: 'blob' - }) -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/sql/h2 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/sql/h2 deleted file mode 100644 index 1cf0f5d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/sql/h2 +++ /dev/null @@ -1,10 +0,0 @@ --- 将该建表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "infra_category" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar NOT NULL, - "description" bigint NOT NULL, - PRIMARY KEY ("id") -) COMMENT '分类表'; - --- 将该删表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "infra_category"; \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/sql/sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/sql/sql deleted file mode 100644 index 8140948..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/sql/sql +++ /dev/null @@ -1,55 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '分类管理', '', 2, 0, 888, - 'category', '', 'infra/demo/index', 0, 'InfraCategory' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '分类查询', 'infra:category:query', 3, 1, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '分类创建', 'infra:category:create', 3, 2, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '分类更新', 'infra:category:update', 3, 3, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '分类删除', 'infra:category:delete', 3, 4, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '分类导出', 'infra:category:export', 3, 5, @parentId, - '', '', '', 0 -); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/vue/CategoryForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/vue/CategoryForm deleted file mode 100644 index 7fa06e8..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/vue/CategoryForm +++ /dev/null @@ -1,130 +0,0 @@ - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/vue/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/vue/index deleted file mode 100644 index 88da682..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/vue/index +++ /dev/null @@ -1,161 +0,0 @@ - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/xml/InfraCategoryMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/xml/InfraCategoryMapper deleted file mode 100644 index 4d70ade..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_tree/xml/InfraCategoryMapper +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/assert.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/assert.json deleted file mode 100644 index db97a41..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/assert.json +++ /dev/null @@ -1,73 +0,0 @@ -[ { - "contentPath" : "java/InfraStudentPageReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentPageReqVO.java" -}, { - "contentPath" : "java/InfraStudentRespVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentRespVO.java" -}, { - "contentPath" : "java/InfraStudentSaveReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentSaveReqVO.java" -}, { - "contentPath" : "java/InfraStudentController", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/InfraStudentController.java" -}, { - "contentPath" : "java/InfraStudentDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentDO.java" -}, { - "contentPath" : "java/InfraStudentContactDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentContactDO.java" -}, { - "contentPath" : "java/InfraStudentTeacherDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentTeacherDO.java" -}, { - "contentPath" : "java/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentMapper.java" -}, { - "contentPath" : "java/InfraStudentContactMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentContactMapper.java" -}, { - "contentPath" : "java/InfraStudentTeacherMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentTeacherMapper.java" -}, { - "contentPath" : "xml/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/resources/mapper/demo/InfraStudentMapper.xml" -}, { - "contentPath" : "java/InfraStudentServiceImpl", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImpl.java" -}, { - "contentPath" : "java/InfraStudentService", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentService.java" -}, { - "contentPath" : "java/InfraStudentServiceImplTest", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/test/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImplTest.java" -}, { - "contentPath" : "java/ErrorCodeConstants_手动操作", - "filePath" : "hangtag-module-infra/hangtag-module-infra-api/src/main/java/cn.hangtag/module/infra/enums/ErrorCodeConstants_手动操作.java" -}, { - "contentPath" : "sql/sql", - "filePath" : "sql/sql.sql" -}, { - "contentPath" : "sql/h2", - "filePath" : "sql/h2.sql" -}, { - "contentPath" : "vue/index", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/index.vue" -}, { - "contentPath" : "vue/StudentForm", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/StudentForm.vue" -}, { - "contentPath" : "vue/StudentContactForm", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/components/StudentContactForm.vue" -}, { - "contentPath" : "vue/StudentTeacherForm", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/components/StudentTeacherForm.vue" -}, { - "contentPath" : "vue/StudentContactList", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/components/StudentContactList.vue" -}, { - "contentPath" : "vue/StudentTeacherList", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/components/StudentTeacherList.vue" -}, { - "contentPath" : "ts/index", - "filePath" : "hangtag-ui-admin-vue3/src/api/infra/demo/index.ts" -} ] \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/ErrorCodeConstants_手动操作 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/ErrorCodeConstants_手动操作 deleted file mode 100644 index 8f864e3..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/ErrorCodeConstants_手动操作 +++ /dev/null @@ -1,6 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 hangtag-module-infra-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== 学生 TODO 补充编号 ========== -ErrorCode STUDENT_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生不存在"); -ErrorCode STUDENT_CONTACT_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生联系人不存在"); -ErrorCode STUDENT_TEACHER_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生班主任不存在"); -ErrorCode STUDENT_TEACHER_EXISTS = new ErrorCode(TODO 补充编号, "学生班主任已存在"); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentContactDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentContactDO deleted file mode 100644 index 4649592..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentContactDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生联系人 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_contact") -@KeySequence("infra_student_contact_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentContactDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentContactMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentContactMapper deleted file mode 100644 index 1c2f5dc..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentContactMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生联系人 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentContactMapper extends BaseMapperX { - - default PageResult selectPage(PageParam reqVO, Long studentId) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eq(InfraStudentContactDO::getStudentId, studentId) - .orderByDesc(InfraStudentContactDO::getId)); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentContactDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentController b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentController deleted file mode 100644 index 40acff3..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentController +++ /dev/null @@ -1,183 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.CommonResult; -import cn.hangtag.framework.common.util.object.BeanUtils; -import static cn.hangtag.framework.common.pojo.CommonResult.success; - -import cn.hangtag.framework.excel.core.util.ExcelUtils; - -import cn.hangtag.framework.operatelog.core.annotations.OperateLog; -import static cn.hangtag.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.module.infra.service.demo.InfraStudentService; - -@Tag(name = "管理后台 - 学生") -@RestController -@RequestMapping("/infra/student") -@Validated -public class InfraStudentController { - - @Resource - private InfraStudentService studentService; - - @PostMapping("/create") - @Operation(summary = "创建学生") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudent(@Valid @RequestBody InfraStudentSaveReqVO createReqVO) { - return success(studentService.createStudent(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新学生") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudent(@Valid @RequestBody InfraStudentSaveReqVO updateReqVO) { - studentService.updateStudent(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除学生") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudent(@RequestParam("id") Long id) { - studentService.deleteStudent(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得学生") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudent(@RequestParam("id") Long id) { - InfraStudentDO student = studentService.getStudent(id); - return success(BeanUtils.toBean(student, InfraStudentRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得学生分页") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentPage(@Valid InfraStudentPageReqVO pageReqVO) { - PageResult pageResult = studentService.getStudentPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, InfraStudentRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出学生 Excel") - @PreAuthorize("@ss.hasPermission('infra:student:export')") - @OperateLog(type = EXPORT) - public void exportStudentExcel(@Valid InfraStudentPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = studentService.getStudentPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "学生.xls", "数据", InfraStudentRespVO.class, - BeanUtils.toBean(list, InfraStudentRespVO.class)); - } - - // ==================== 子表(学生联系人) ==================== - - @GetMapping("/student-contact/page") - @Operation(summary = "获得学生联系人分页") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentContactPage(PageParam pageReqVO, - @RequestParam("studentId") Long studentId) { - return success(studentService.getStudentContactPage(pageReqVO, studentId)); - } - - @PostMapping("/student-contact/create") - @Operation(summary = "创建学生联系人") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudentContact(@Valid @RequestBody InfraStudentContactDO studentContact) { - return success(studentService.createStudentContact(studentContact)); - } - - @PutMapping("/student-contact/update") - @Operation(summary = "更新学生联系人") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudentContact(@Valid @RequestBody InfraStudentContactDO studentContact) { - studentService.updateStudentContact(studentContact); - return success(true); - } - - @DeleteMapping("/student-contact/delete") - @Parameter(name = "id", description = "编号", required = true) - @Operation(summary = "删除学生联系人") - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudentContact(@RequestParam("id") Long id) { - studentService.deleteStudentContact(id); - return success(true); - } - - @GetMapping("/student-contact/get") - @Operation(summary = "获得学生联系人") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudentContact(@RequestParam("id") Long id) { - return success(studentService.getStudentContact(id)); - } - - // ==================== 子表(学生班主任) ==================== - - @GetMapping("/student-teacher/page") - @Operation(summary = "获得学生班主任分页") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentTeacherPage(PageParam pageReqVO, - @RequestParam("studentId") Long studentId) { - return success(studentService.getStudentTeacherPage(pageReqVO, studentId)); - } - - @PostMapping("/student-teacher/create") - @Operation(summary = "创建学生班主任") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudentTeacher(@Valid @RequestBody InfraStudentTeacherDO studentTeacher) { - return success(studentService.createStudentTeacher(studentTeacher)); - } - - @PutMapping("/student-teacher/update") - @Operation(summary = "更新学生班主任") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudentTeacher(@Valid @RequestBody InfraStudentTeacherDO studentTeacher) { - studentService.updateStudentTeacher(studentTeacher); - return success(true); - } - - @DeleteMapping("/student-teacher/delete") - @Parameter(name = "id", description = "编号", required = true) - @Operation(summary = "删除学生班主任") - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudentTeacher(@RequestParam("id") Long id) { - studentService.deleteStudentTeacher(id); - return success(true); - } - - @GetMapping("/student-teacher/get") - @Operation(summary = "获得学生班主任") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudentTeacher(@RequestParam("id") Long id) { - return success(studentService.getStudentTeacher(id)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentDO deleted file mode 100644 index f0b605d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentDO +++ /dev/null @@ -1,67 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生 DO - * - * @author 芋道源码 - */ -@TableName("infra_student") -@KeySequence("infra_student_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentMapper deleted file mode 100644 index ba82b63..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import org.apache.ibatis.annotations.Mapper; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; - -/** - * 学生 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentMapper extends BaseMapperX { - - default PageResult selectPage(InfraStudentPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(InfraStudentDO::getName, reqVO.getName()) - .eqIfPresent(InfraStudentDO::getBirthday, reqVO.getBirthday()) - .eqIfPresent(InfraStudentDO::getSex, reqVO.getSex()) - .eqIfPresent(InfraStudentDO::getEnabled, reqVO.getEnabled()) - .betweenIfPresent(InfraStudentDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(InfraStudentDO::getId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentPageReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentPageReqVO deleted file mode 100644 index d55baae..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentPageReqVO +++ /dev/null @@ -1,34 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.hangtag.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 学生分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class InfraStudentPageReqVO extends PageParam { - - @Schema(description = "名字", example = "芋头") - private String name; - - @Schema(description = "出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", example = "1") - private Integer sex; - - @Schema(description = "是否有效", example = "true") - private Boolean enabled; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentRespVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentRespVO deleted file mode 100644 index 8e6a44d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentRespVO +++ /dev/null @@ -1,60 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import cn.hangtag.framework.excel.core.annotations.DictFormat; -import cn.hangtag.framework.excel.core.convert.DictConvert; - -@Schema(description = "管理后台 - 学生 Response VO") -@Data -@ExcelIgnoreUnannotated -public class InfraStudentRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @ExcelProperty("名字") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @ExcelProperty("简介") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "性别", converter = DictConvert.class) - @DictFormat("system_user_sex") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @ExcelProperty(value = "是否有效", converter = DictConvert.class) - @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @ExcelProperty("头像") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @ExcelProperty("附件") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @ExcelProperty("备注") - private String memo; - - @Schema(description = "创建时间") - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentSaveReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentSaveReqVO deleted file mode 100644 index 482af09..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentSaveReqVO +++ /dev/null @@ -1,52 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; - -@Schema(description = "管理后台 - 学生新增/修改 Request VO") -@Data -public class InfraStudentSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @NotEmpty(message = "名字不能为空") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @NotEmpty(message = "简介不能为空") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "出生日期不能为空") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "性别不能为空") - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @NotNull(message = "是否有效不能为空") - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @NotEmpty(message = "头像不能为空") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @NotEmpty(message = "附件不能为空") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @NotEmpty(message = "备注不能为空") - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentService b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentService deleted file mode 100644 index 993378d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentService +++ /dev/null @@ -1,139 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import java.util.*; -import javax.validation.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; - -/** - * 学生 Service 接口 - * - * @author 芋道源码 - */ -public interface InfraStudentService { - - /** - * 创建学生 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStudent(@Valid InfraStudentSaveReqVO createReqVO); - - /** - * 更新学生 - * - * @param updateReqVO 更新信息 - */ - void updateStudent(@Valid InfraStudentSaveReqVO updateReqVO); - - /** - * 删除学生 - * - * @param id 编号 - */ - void deleteStudent(Long id); - - /** - * 获得学生 - * - * @param id 编号 - * @return 学生 - */ - InfraStudentDO getStudent(Long id); - - /** - * 获得学生分页 - * - * @param pageReqVO 分页查询 - * @return 学生分页 - */ - PageResult getStudentPage(InfraStudentPageReqVO pageReqVO); - - // ==================== 子表(学生联系人) ==================== - - /** - * 获得学生联系人分页 - * - * @param pageReqVO 分页查询 - * @param studentId 学生编号 - * @return 学生联系人分页 - */ - PageResult getStudentContactPage(PageParam pageReqVO, Long studentId); - - /** - * 创建学生联系人 - * - * @param studentContact 创建信息 - * @return 编号 - */ - Long createStudentContact(@Valid InfraStudentContactDO studentContact); - - /** - * 更新学生联系人 - * - * @param studentContact 更新信息 - */ - void updateStudentContact(@Valid InfraStudentContactDO studentContact); - - /** - * 删除学生联系人 - * - * @param id 编号 - */ - void deleteStudentContact(Long id); - - /** - * 获得学生联系人 - * - * @param id 编号 - * @return 学生联系人 - */ - InfraStudentContactDO getStudentContact(Long id); - - // ==================== 子表(学生班主任) ==================== - - /** - * 获得学生班主任分页 - * - * @param pageReqVO 分页查询 - * @param studentId 学生编号 - * @return 学生班主任分页 - */ - PageResult getStudentTeacherPage(PageParam pageReqVO, Long studentId); - - /** - * 创建学生班主任 - * - * @param studentTeacher 创建信息 - * @return 编号 - */ - Long createStudentTeacher(@Valid InfraStudentTeacherDO studentTeacher); - - /** - * 更新学生班主任 - * - * @param studentTeacher 更新信息 - */ - void updateStudentTeacher(@Valid InfraStudentTeacherDO studentTeacher); - - /** - * 删除学生班主任 - * - * @param id 编号 - */ - void deleteStudentTeacher(Long id); - - /** - * 获得学生班主任 - * - * @param id 编号 - * @return 学生班主任 - */ - InfraStudentTeacherDO getStudentTeacher(Long id); - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentServiceImpl b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentServiceImpl deleted file mode 100644 index e60b402..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentServiceImpl +++ /dev/null @@ -1,180 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.util.object.BeanUtils; - -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentContactMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentTeacherMapper; - -import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; - -/** - * 学生 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class InfraStudentServiceImpl implements InfraStudentService { - - @Resource - private InfraStudentMapper studentMapper; - @Resource - private InfraStudentContactMapper studentContactMapper; - @Resource - private InfraStudentTeacherMapper studentTeacherMapper; - - @Override - public Long createStudent(InfraStudentSaveReqVO createReqVO) { - // 插入 - InfraStudentDO student = BeanUtils.toBean(createReqVO, InfraStudentDO.class); - studentMapper.insert(student); - // 返回 - return student.getId(); - } - - @Override - public void updateStudent(InfraStudentSaveReqVO updateReqVO) { - // 校验存在 - validateStudentExists(updateReqVO.getId()); - // 更新 - InfraStudentDO updateObj = BeanUtils.toBean(updateReqVO, InfraStudentDO.class); - studentMapper.updateById(updateObj); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteStudent(Long id) { - // 校验存在 - validateStudentExists(id); - // 删除 - studentMapper.deleteById(id); - - // 删除子表 - deleteStudentContactByStudentId(id); - deleteStudentTeacherByStudentId(id); - } - - private void validateStudentExists(Long id) { - if (studentMapper.selectById(id) == null) { - throw exception(STUDENT_NOT_EXISTS); - } - } - - @Override - public InfraStudentDO getStudent(Long id) { - return studentMapper.selectById(id); - } - - @Override - public PageResult getStudentPage(InfraStudentPageReqVO pageReqVO) { - return studentMapper.selectPage(pageReqVO); - } - - // ==================== 子表(学生联系人) ==================== - - @Override - public PageResult getStudentContactPage(PageParam pageReqVO, Long studentId) { - return studentContactMapper.selectPage(pageReqVO, studentId); - } - - @Override - public Long createStudentContact(InfraStudentContactDO studentContact) { - studentContactMapper.insert(studentContact); - return studentContact.getId(); - } - - @Override - public void updateStudentContact(InfraStudentContactDO studentContact) { - // 校验存在 - validateStudentContactExists(studentContact.getId()); - // 更新 - studentContactMapper.updateById(studentContact); - } - - @Override - public void deleteStudentContact(Long id) { - // 校验存在 - validateStudentContactExists(id); - // 删除 - studentContactMapper.deleteById(id); - } - - @Override - public InfraStudentContactDO getStudentContact(Long id) { - return studentContactMapper.selectById(id); - } - - private void validateStudentContactExists(Long id) { - if (studentContactMapper.selectById(id) == null) { - throw exception(STUDENT_CONTACT_NOT_EXISTS); - } - } - - private void deleteStudentContactByStudentId(Long studentId) { - studentContactMapper.deleteByStudentId(studentId); - } - - // ==================== 子表(学生班主任) ==================== - - @Override - public PageResult getStudentTeacherPage(PageParam pageReqVO, Long studentId) { - return studentTeacherMapper.selectPage(pageReqVO, studentId); - } - - @Override - public Long createStudentTeacher(InfraStudentTeacherDO studentTeacher) { - // 校验是否已经存在 - if (studentTeacherMapper.selectByStudentId(studentTeacher.getStudentId()) != null) { - throw exception(STUDENT_TEACHER_EXISTS); - } - // 插入 - studentTeacherMapper.insert(studentTeacher); - return studentTeacher.getId(); - } - - @Override - public void updateStudentTeacher(InfraStudentTeacherDO studentTeacher) { - // 校验存在 - validateStudentTeacherExists(studentTeacher.getId()); - // 更新 - studentTeacherMapper.updateById(studentTeacher); - } - - @Override - public void deleteStudentTeacher(Long id) { - // 校验存在 - validateStudentTeacherExists(id); - // 删除 - studentTeacherMapper.deleteById(id); - } - - @Override - public InfraStudentTeacherDO getStudentTeacher(Long id) { - return studentTeacherMapper.selectById(id); - } - - private void validateStudentTeacherExists(Long id) { - if (studentTeacherMapper.selectById(id) == null) { - throw exception(STUDENT_TEACHER_NOT_EXISTS); - } - } - - private void deleteStudentTeacherByStudentId(Long studentId) { - studentTeacherMapper.deleteByStudentId(studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentServiceImplTest b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentServiceImplTest deleted file mode 100644 index 4fdc060..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentServiceImplTest +++ /dev/null @@ -1,146 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import javax.annotation.Resource; - -import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.framework.common.pojo.PageResult; - -import javax.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; -import static cn.hangtag.framework.test.core.util.AssertUtils.*; -import static cn.hangtag.framework.test.core.util.RandomUtils.*; -import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; -import static cn.hangtag.framework.common.util.object.ObjectUtils.*; -import static cn.hangtag.framework.common.util.date.DateUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -/** - * {@link InfraStudentServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(InfraStudentServiceImpl.class) -public class InfraStudentServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfraStudentServiceImpl studentService; - - @Resource - private InfraStudentMapper studentMapper; - - @Test - public void testCreateStudent_success() { - // 准备参数 - InfraStudentSaveReqVO createReqVO = randomPojo(InfraStudentSaveReqVO.class).setId(null); - - // 调用 - Long studentId = studentService.createStudent(createReqVO); - // 断言 - assertNotNull(studentId); - // 校验记录的属性是否正确 - InfraStudentDO student = studentMapper.selectById(studentId); - assertPojoEquals(createReqVO, student, "id"); - } - - @Test - public void testUpdateStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class, o -> { - o.setId(dbStudent.getId()); // 设置更新的 ID - }); - - // 调用 - studentService.updateStudent(updateReqVO); - // 校验是否更新正确 - InfraStudentDO student = studentMapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, student); - } - - @Test - public void testUpdateStudent_notExists() { - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.updateStudent(updateReqVO), STUDENT_NOT_EXISTS); - } - - @Test - public void testDeleteStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbStudent.getId(); - - // 调用 - studentService.deleteStudent(id); - // 校验数据不存在了 - assertNull(studentMapper.selectById(id)); - } - - @Test - public void testDeleteStudent_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.deleteStudent(id), STUDENT_NOT_EXISTS); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGetStudentPage() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class, o -> { // 等会查询到 - o.setName(null); - o.setBirthday(null); - o.setSex(null); - o.setEnabled(null); - o.setCreateTime(null); - }); - studentMapper.insert(dbStudent); - // 测试 name 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setName(null))); - // 测试 birthday 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setBirthday(null))); - // 测试 sex 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setSex(null))); - // 测试 enabled 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setEnabled(null))); - // 测试 createTime 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setCreateTime(null))); - // 准备参数 - InfraStudentPageReqVO reqVO = new InfraStudentPageReqVO(); - reqVO.setName(null); - reqVO.setBirthday(null); - reqVO.setSex(null); - reqVO.setEnabled(null); - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); - - // 调用 - PageResult pageResult = studentService.getStudentPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbStudent, pageResult.getList().get(0)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentTeacherDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentTeacherDO deleted file mode 100644 index dfdae97..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentTeacherDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生班主任 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_teacher") -@KeySequence("infra_student_teacher_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentTeacherDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentTeacherMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentTeacherMapper deleted file mode 100644 index 73ef6f5..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/java/InfraStudentTeacherMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生班主任 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentTeacherMapper extends BaseMapperX { - - default PageResult selectPage(PageParam reqVO, Long studentId) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eq(InfraStudentTeacherDO::getStudentId, studentId) - .orderByDesc(InfraStudentTeacherDO::getId)); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentTeacherDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/sql/h2 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/sql/h2 deleted file mode 100644 index 9150b93..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/sql/h2 +++ /dev/null @@ -1,17 +0,0 @@ --- 将该建表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "infra_student" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar NOT NULL, - "description" varchar NOT NULL, - "birthday" varchar NOT NULL, - "sex" int NOT NULL, - "enabled" bit NOT NULL, - "avatar" varchar NOT NULL, - "video" varchar NOT NULL, - "memo" varchar NOT NULL, - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ("id") -) COMMENT '学生表'; - --- 将该删表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "infra_student"; \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/sql/sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/sql/sql deleted file mode 100644 index 83df279..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/sql/sql +++ /dev/null @@ -1,55 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '学生管理', '', 2, 0, 888, - 'student', '', 'infra/demo/index', 0, 'InfraStudent' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生查询', 'infra:student:query', 3, 1, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生创建', 'infra:student:create', 3, 2, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生更新', 'infra:student:update', 3, 3, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生删除', 'infra:student:delete', 3, 4, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生导出', 'infra:student:export', 3, 5, @parentId, - '', '', '', 0 -); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/ts/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/ts/index deleted file mode 100644 index 2fe87b7..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/ts/index +++ /dev/null @@ -1,95 +0,0 @@ -import request from '@/config/axios' - -export interface StudentVO { - id: number - name: string - description: string - birthday: Date - sex: number - enabled: boolean - avatar: string - video: string - memo: string -} - -// 查询学生分页 -export const getStudentPage = async (params) => { - return await request.get({ url: `/infra/student/page`, params }) -} - -// 查询学生详情 -export const getStudent = async (id: number) => { - return await request.get({ url: `/infra/student/get?id=` + id }) -} - -// 新增学生 -export const createStudent = async (data: StudentVO) => { - return await request.post({ url: `/infra/student/create`, data }) -} - -// 修改学生 -export const updateStudent = async (data: StudentVO) => { - return await request.put({ url: `/infra/student/update`, data }) -} - -// 删除学生 -export const deleteStudent = async (id: number) => { - return await request.delete({ url: `/infra/student/delete?id=` + id }) -} - -// 导出学生 Excel -export const exportStudent = async (params) => { - return await request.download({ url: `/infra/student/export-excel`, params }) -} - -// ==================== 子表(学生联系人) ==================== - -// 获得学生联系人分页 -export const getStudentContactPage = async (params) => { - return await request.get({ url: `/infra/student/student-contact/page`, params }) -} -// 新增学生联系人 -export const createStudentContact = async (data) => { - return await request.post({ url: `/infra/student/student-contact/create`, data }) -} - -// 修改学生联系人 -export const updateStudentContact = async (data) => { - return await request.put({ url: `/infra/student/student-contact/update`, data }) -} - -// 删除学生联系人 -export const deleteStudentContact = async (id: number) => { - return await request.delete({ url: `/infra/student/student-contact/delete?id=` + id }) -} - -// 获得学生联系人 -export const getStudentContact = async (id: number) => { - return await request.get({ url: `/infra/student/student-contact/get?id=` + id }) -} - -// ==================== 子表(学生班主任) ==================== - -// 获得学生班主任分页 -export const getStudentTeacherPage = async (params) => { - return await request.get({ url: `/infra/student/student-teacher/page`, params }) -} -// 新增学生班主任 -export const createStudentTeacher = async (data) => { - return await request.post({ url: `/infra/student/student-teacher/create`, data }) -} - -// 修改学生班主任 -export const updateStudentTeacher = async (data) => { - return await request.put({ url: `/infra/student/student-teacher/update`, data }) -} - -// 删除学生班主任 -export const deleteStudentTeacher = async (id: number) => { - return await request.delete({ url: `/infra/student/student-teacher/delete?id=` + id }) -} - -// 获得学生班主任 -export const getStudentTeacher = async (id: number) => { - return await request.get({ url: `/infra/student/student-teacher/get?id=` + id }) -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentContactForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentContactForm deleted file mode 100644 index 4a13935..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentContactForm +++ /dev/null @@ -1,155 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentContactList b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentContactList deleted file mode 100644 index eada66a..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentContactList +++ /dev/null @@ -1,146 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentForm deleted file mode 100644 index 0dabcb5..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentForm +++ /dev/null @@ -1,152 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentTeacherForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentTeacherForm deleted file mode 100644 index f93c21c..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentTeacherForm +++ /dev/null @@ -1,155 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentTeacherList b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentTeacherList deleted file mode 100644 index 1eba0a3..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/StudentTeacherList +++ /dev/null @@ -1,146 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/index deleted file mode 100644 index 9d15146..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/vue/index +++ /dev/null @@ -1,278 +0,0 @@ - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/xml/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/xml/InfraStudentMapper deleted file mode 100644 index 12bfc1f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_erp/xml/InfraStudentMapper +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/assert.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/assert.json deleted file mode 100644 index db97a41..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/assert.json +++ /dev/null @@ -1,73 +0,0 @@ -[ { - "contentPath" : "java/InfraStudentPageReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentPageReqVO.java" -}, { - "contentPath" : "java/InfraStudentRespVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentRespVO.java" -}, { - "contentPath" : "java/InfraStudentSaveReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentSaveReqVO.java" -}, { - "contentPath" : "java/InfraStudentController", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/InfraStudentController.java" -}, { - "contentPath" : "java/InfraStudentDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentDO.java" -}, { - "contentPath" : "java/InfraStudentContactDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentContactDO.java" -}, { - "contentPath" : "java/InfraStudentTeacherDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentTeacherDO.java" -}, { - "contentPath" : "java/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentMapper.java" -}, { - "contentPath" : "java/InfraStudentContactMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentContactMapper.java" -}, { - "contentPath" : "java/InfraStudentTeacherMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentTeacherMapper.java" -}, { - "contentPath" : "xml/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/resources/mapper/demo/InfraStudentMapper.xml" -}, { - "contentPath" : "java/InfraStudentServiceImpl", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImpl.java" -}, { - "contentPath" : "java/InfraStudentService", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentService.java" -}, { - "contentPath" : "java/InfraStudentServiceImplTest", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/test/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImplTest.java" -}, { - "contentPath" : "java/ErrorCodeConstants_手动操作", - "filePath" : "hangtag-module-infra/hangtag-module-infra-api/src/main/java/cn.hangtag/module/infra/enums/ErrorCodeConstants_手动操作.java" -}, { - "contentPath" : "sql/sql", - "filePath" : "sql/sql.sql" -}, { - "contentPath" : "sql/h2", - "filePath" : "sql/h2.sql" -}, { - "contentPath" : "vue/index", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/index.vue" -}, { - "contentPath" : "vue/StudentForm", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/StudentForm.vue" -}, { - "contentPath" : "vue/StudentContactForm", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/components/StudentContactForm.vue" -}, { - "contentPath" : "vue/StudentTeacherForm", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/components/StudentTeacherForm.vue" -}, { - "contentPath" : "vue/StudentContactList", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/components/StudentContactList.vue" -}, { - "contentPath" : "vue/StudentTeacherList", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/components/StudentTeacherList.vue" -}, { - "contentPath" : "ts/index", - "filePath" : "hangtag-ui-admin-vue3/src/api/infra/demo/index.ts" -} ] \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/ErrorCodeConstants_手动操作 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/ErrorCodeConstants_手动操作 deleted file mode 100644 index 4d16bed..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/ErrorCodeConstants_手动操作 +++ /dev/null @@ -1,3 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 hangtag-module-infra-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== 学生 TODO 补充编号 ========== -ErrorCode STUDENT_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生不存在"); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentContactDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentContactDO deleted file mode 100644 index 4649592..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentContactDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生联系人 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_contact") -@KeySequence("infra_student_contact_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentContactDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentContactMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentContactMapper deleted file mode 100644 index 6032819..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentContactMapper +++ /dev/null @@ -1,28 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生联系人 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentContactMapper extends BaseMapperX { - - default List selectListByStudentId(Long studentId) { - return selectList(InfraStudentContactDO::getStudentId, studentId); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentContactDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentController b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentController deleted file mode 100644 index 00d176f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentController +++ /dev/null @@ -1,117 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.CommonResult; -import cn.hangtag.framework.common.util.object.BeanUtils; -import static cn.hangtag.framework.common.pojo.CommonResult.success; - -import cn.hangtag.framework.excel.core.util.ExcelUtils; - -import cn.hangtag.framework.operatelog.core.annotations.OperateLog; -import static cn.hangtag.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.module.infra.service.demo.InfraStudentService; - -@Tag(name = "管理后台 - 学生") -@RestController -@RequestMapping("/infra/student") -@Validated -public class InfraStudentController { - - @Resource - private InfraStudentService studentService; - - @PostMapping("/create") - @Operation(summary = "创建学生") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudent(@Valid @RequestBody InfraStudentSaveReqVO createReqVO) { - return success(studentService.createStudent(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新学生") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudent(@Valid @RequestBody InfraStudentSaveReqVO updateReqVO) { - studentService.updateStudent(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除学生") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudent(@RequestParam("id") Long id) { - studentService.deleteStudent(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得学生") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudent(@RequestParam("id") Long id) { - InfraStudentDO student = studentService.getStudent(id); - return success(BeanUtils.toBean(student, InfraStudentRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得学生分页") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentPage(@Valid InfraStudentPageReqVO pageReqVO) { - PageResult pageResult = studentService.getStudentPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, InfraStudentRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出学生 Excel") - @PreAuthorize("@ss.hasPermission('infra:student:export')") - @OperateLog(type = EXPORT) - public void exportStudentExcel(@Valid InfraStudentPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = studentService.getStudentPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "学生.xls", "数据", InfraStudentRespVO.class, - BeanUtils.toBean(list, InfraStudentRespVO.class)); - } - - // ==================== 子表(学生联系人) ==================== - - @GetMapping("/student-contact/list-by-student-id") - @Operation(summary = "获得学生联系人列表") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentContactListByStudentId(@RequestParam("studentId") Long studentId) { - return success(studentService.getStudentContactListByStudentId(studentId)); - } - - // ==================== 子表(学生班主任) ==================== - - @GetMapping("/student-teacher/get-by-student-id") - @Operation(summary = "获得学生班主任") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudentTeacherByStudentId(@RequestParam("studentId") Long studentId) { - return success(studentService.getStudentTeacherByStudentId(studentId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentDO deleted file mode 100644 index f0b605d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentDO +++ /dev/null @@ -1,67 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生 DO - * - * @author 芋道源码 - */ -@TableName("infra_student") -@KeySequence("infra_student_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentMapper deleted file mode 100644 index ba82b63..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import org.apache.ibatis.annotations.Mapper; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; - -/** - * 学生 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentMapper extends BaseMapperX { - - default PageResult selectPage(InfraStudentPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(InfraStudentDO::getName, reqVO.getName()) - .eqIfPresent(InfraStudentDO::getBirthday, reqVO.getBirthday()) - .eqIfPresent(InfraStudentDO::getSex, reqVO.getSex()) - .eqIfPresent(InfraStudentDO::getEnabled, reqVO.getEnabled()) - .betweenIfPresent(InfraStudentDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(InfraStudentDO::getId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentPageReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentPageReqVO deleted file mode 100644 index d55baae..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentPageReqVO +++ /dev/null @@ -1,34 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.hangtag.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 学生分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class InfraStudentPageReqVO extends PageParam { - - @Schema(description = "名字", example = "芋头") - private String name; - - @Schema(description = "出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", example = "1") - private Integer sex; - - @Schema(description = "是否有效", example = "true") - private Boolean enabled; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentRespVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentRespVO deleted file mode 100644 index 8e6a44d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentRespVO +++ /dev/null @@ -1,60 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import cn.hangtag.framework.excel.core.annotations.DictFormat; -import cn.hangtag.framework.excel.core.convert.DictConvert; - -@Schema(description = "管理后台 - 学生 Response VO") -@Data -@ExcelIgnoreUnannotated -public class InfraStudentRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @ExcelProperty("名字") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @ExcelProperty("简介") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "性别", converter = DictConvert.class) - @DictFormat("system_user_sex") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @ExcelProperty(value = "是否有效", converter = DictConvert.class) - @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @ExcelProperty("头像") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @ExcelProperty("附件") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @ExcelProperty("备注") - private String memo; - - @Schema(description = "创建时间") - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentSaveReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentSaveReqVO deleted file mode 100644 index 40d549c..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentSaveReqVO +++ /dev/null @@ -1,58 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; - -@Schema(description = "管理后台 - 学生新增/修改 Request VO") -@Data -public class InfraStudentSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @NotEmpty(message = "名字不能为空") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @NotEmpty(message = "简介不能为空") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "出生日期不能为空") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "性别不能为空") - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @NotNull(message = "是否有效不能为空") - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @NotEmpty(message = "头像不能为空") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @NotEmpty(message = "附件不能为空") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @NotEmpty(message = "备注不能为空") - private String memo; - - @Schema(description = "学生联系人列表") - private List studentContacts; - - @Schema(description = "学生班主任") - private InfraStudentTeacherDO studentTeacher; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentService b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentService deleted file mode 100644 index e4544af..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentService +++ /dev/null @@ -1,77 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import java.util.*; -import javax.validation.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; - -/** - * 学生 Service 接口 - * - * @author 芋道源码 - */ -public interface InfraStudentService { - - /** - * 创建学生 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStudent(@Valid InfraStudentSaveReqVO createReqVO); - - /** - * 更新学生 - * - * @param updateReqVO 更新信息 - */ - void updateStudent(@Valid InfraStudentSaveReqVO updateReqVO); - - /** - * 删除学生 - * - * @param id 编号 - */ - void deleteStudent(Long id); - - /** - * 获得学生 - * - * @param id 编号 - * @return 学生 - */ - InfraStudentDO getStudent(Long id); - - /** - * 获得学生分页 - * - * @param pageReqVO 分页查询 - * @return 学生分页 - */ - PageResult getStudentPage(InfraStudentPageReqVO pageReqVO); - - // ==================== 子表(学生联系人) ==================== - - /** - * 获得学生联系人列表 - * - * @param studentId 学生编号 - * @return 学生联系人列表 - */ - List getStudentContactListByStudentId(Long studentId); - - // ==================== 子表(学生班主任) ==================== - - /** - * 获得学生班主任 - * - * @param studentId 学生编号 - * @return 学生班主任 - */ - InfraStudentTeacherDO getStudentTeacherByStudentId(Long studentId); - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentServiceImpl b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentServiceImpl deleted file mode 100644 index a724c20..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentServiceImpl +++ /dev/null @@ -1,147 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.util.object.BeanUtils; - -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentContactMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentTeacherMapper; - -import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; - -/** - * 学生 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class InfraStudentServiceImpl implements InfraStudentService { - - @Resource - private InfraStudentMapper studentMapper; - @Resource - private InfraStudentContactMapper studentContactMapper; - @Resource - private InfraStudentTeacherMapper studentTeacherMapper; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createStudent(InfraStudentSaveReqVO createReqVO) { - // 插入 - InfraStudentDO student = BeanUtils.toBean(createReqVO, InfraStudentDO.class); - studentMapper.insert(student); - - // 插入子表 - createStudentContactList(student.getId(), createReqVO.getStudentContacts()); - createStudentTeacher(student.getId(), createReqVO.getStudentTeacher()); - // 返回 - return student.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStudent(InfraStudentSaveReqVO updateReqVO) { - // 校验存在 - validateStudentExists(updateReqVO.getId()); - // 更新 - InfraStudentDO updateObj = BeanUtils.toBean(updateReqVO, InfraStudentDO.class); - studentMapper.updateById(updateObj); - - // 更新子表 - updateStudentContactList(updateReqVO.getId(), updateReqVO.getStudentContacts()); - updateStudentTeacher(updateReqVO.getId(), updateReqVO.getStudentTeacher()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteStudent(Long id) { - // 校验存在 - validateStudentExists(id); - // 删除 - studentMapper.deleteById(id); - - // 删除子表 - deleteStudentContactByStudentId(id); - deleteStudentTeacherByStudentId(id); - } - - private void validateStudentExists(Long id) { - if (studentMapper.selectById(id) == null) { - throw exception(STUDENT_NOT_EXISTS); - } - } - - @Override - public InfraStudentDO getStudent(Long id) { - return studentMapper.selectById(id); - } - - @Override - public PageResult getStudentPage(InfraStudentPageReqVO pageReqVO) { - return studentMapper.selectPage(pageReqVO); - } - - // ==================== 子表(学生联系人) ==================== - - @Override - public List getStudentContactListByStudentId(Long studentId) { - return studentContactMapper.selectListByStudentId(studentId); - } - - private void createStudentContactList(Long studentId, List list) { - list.forEach(o -> o.setStudentId(studentId)); - studentContactMapper.insertBatch(list); - } - - private void updateStudentContactList(Long studentId, List list) { - deleteStudentContactByStudentId(studentId); - list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 - createStudentContactList(studentId, list); - } - - private void deleteStudentContactByStudentId(Long studentId) { - studentContactMapper.deleteByStudentId(studentId); - } - - // ==================== 子表(学生班主任) ==================== - - @Override - public InfraStudentTeacherDO getStudentTeacherByStudentId(Long studentId) { - return studentTeacherMapper.selectByStudentId(studentId); - } - - private void createStudentTeacher(Long studentId, InfraStudentTeacherDO studentTeacher) { - if (studentTeacher == null) { - return; - } - studentTeacher.setStudentId(studentId); - studentTeacherMapper.insert(studentTeacher); - } - - private void updateStudentTeacher(Long studentId, InfraStudentTeacherDO studentTeacher) { - if (studentTeacher == null) { - return; - } - studentTeacher.setStudentId(studentId); - studentTeacher.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 - studentTeacherMapper.insertOrUpdate(studentTeacher); - } - - private void deleteStudentTeacherByStudentId(Long studentId) { - studentTeacherMapper.deleteByStudentId(studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentServiceImplTest b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentServiceImplTest deleted file mode 100644 index 4fdc060..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentServiceImplTest +++ /dev/null @@ -1,146 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import javax.annotation.Resource; - -import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.framework.common.pojo.PageResult; - -import javax.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; -import static cn.hangtag.framework.test.core.util.AssertUtils.*; -import static cn.hangtag.framework.test.core.util.RandomUtils.*; -import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; -import static cn.hangtag.framework.common.util.object.ObjectUtils.*; -import static cn.hangtag.framework.common.util.date.DateUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -/** - * {@link InfraStudentServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(InfraStudentServiceImpl.class) -public class InfraStudentServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfraStudentServiceImpl studentService; - - @Resource - private InfraStudentMapper studentMapper; - - @Test - public void testCreateStudent_success() { - // 准备参数 - InfraStudentSaveReqVO createReqVO = randomPojo(InfraStudentSaveReqVO.class).setId(null); - - // 调用 - Long studentId = studentService.createStudent(createReqVO); - // 断言 - assertNotNull(studentId); - // 校验记录的属性是否正确 - InfraStudentDO student = studentMapper.selectById(studentId); - assertPojoEquals(createReqVO, student, "id"); - } - - @Test - public void testUpdateStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class, o -> { - o.setId(dbStudent.getId()); // 设置更新的 ID - }); - - // 调用 - studentService.updateStudent(updateReqVO); - // 校验是否更新正确 - InfraStudentDO student = studentMapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, student); - } - - @Test - public void testUpdateStudent_notExists() { - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.updateStudent(updateReqVO), STUDENT_NOT_EXISTS); - } - - @Test - public void testDeleteStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbStudent.getId(); - - // 调用 - studentService.deleteStudent(id); - // 校验数据不存在了 - assertNull(studentMapper.selectById(id)); - } - - @Test - public void testDeleteStudent_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.deleteStudent(id), STUDENT_NOT_EXISTS); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGetStudentPage() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class, o -> { // 等会查询到 - o.setName(null); - o.setBirthday(null); - o.setSex(null); - o.setEnabled(null); - o.setCreateTime(null); - }); - studentMapper.insert(dbStudent); - // 测试 name 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setName(null))); - // 测试 birthday 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setBirthday(null))); - // 测试 sex 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setSex(null))); - // 测试 enabled 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setEnabled(null))); - // 测试 createTime 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setCreateTime(null))); - // 准备参数 - InfraStudentPageReqVO reqVO = new InfraStudentPageReqVO(); - reqVO.setName(null); - reqVO.setBirthday(null); - reqVO.setSex(null); - reqVO.setEnabled(null); - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); - - // 调用 - PageResult pageResult = studentService.getStudentPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbStudent, pageResult.getList().get(0)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentTeacherDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentTeacherDO deleted file mode 100644 index dfdae97..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentTeacherDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生班主任 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_teacher") -@KeySequence("infra_student_teacher_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentTeacherDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentTeacherMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentTeacherMapper deleted file mode 100644 index 8e2073f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/java/InfraStudentTeacherMapper +++ /dev/null @@ -1,28 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生班主任 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentTeacherMapper extends BaseMapperX { - - default InfraStudentTeacherDO selectByStudentId(Long studentId) { - return selectOne(InfraStudentTeacherDO::getStudentId, studentId); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentTeacherDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/sql/h2 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/sql/h2 deleted file mode 100644 index 9150b93..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/sql/h2 +++ /dev/null @@ -1,17 +0,0 @@ --- 将该建表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "infra_student" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar NOT NULL, - "description" varchar NOT NULL, - "birthday" varchar NOT NULL, - "sex" int NOT NULL, - "enabled" bit NOT NULL, - "avatar" varchar NOT NULL, - "video" varchar NOT NULL, - "memo" varchar NOT NULL, - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ("id") -) COMMENT '学生表'; - --- 将该删表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "infra_student"; \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/sql/sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/sql/sql deleted file mode 100644 index 83df279..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/sql/sql +++ /dev/null @@ -1,55 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '学生管理', '', 2, 0, 888, - 'student', '', 'infra/demo/index', 0, 'InfraStudent' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生查询', 'infra:student:query', 3, 1, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生创建', 'infra:student:create', 3, 2, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生更新', 'infra:student:update', 3, 3, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生删除', 'infra:student:delete', 3, 4, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生导出', 'infra:student:export', 3, 5, @parentId, - '', '', '', 0 -); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/ts/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/ts/index deleted file mode 100644 index 6112800..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/ts/index +++ /dev/null @@ -1,57 +0,0 @@ -import request from '@/config/axios' - -export interface StudentVO { - id: number - name: string - description: string - birthday: Date - sex: number - enabled: boolean - avatar: string - video: string - memo: string -} - -// 查询学生分页 -export const getStudentPage = async (params) => { - return await request.get({ url: `/infra/student/page`, params }) -} - -// 查询学生详情 -export const getStudent = async (id: number) => { - return await request.get({ url: `/infra/student/get?id=` + id }) -} - -// 新增学生 -export const createStudent = async (data: StudentVO) => { - return await request.post({ url: `/infra/student/create`, data }) -} - -// 修改学生 -export const updateStudent = async (data: StudentVO) => { - return await request.put({ url: `/infra/student/update`, data }) -} - -// 删除学生 -export const deleteStudent = async (id: number) => { - return await request.delete({ url: `/infra/student/delete?id=` + id }) -} - -// 导出学生 Excel -export const exportStudent = async (params) => { - return await request.download({ url: `/infra/student/export-excel`, params }) -} - -// ==================== 子表(学生联系人) ==================== - -// 获得学生联系人列表 -export const getStudentContactListByStudentId = async (studentId) => { - return await request.get({ url: `/infra/student/student-contact/list-by-student-id?studentId=` + studentId }) -} - -// ==================== 子表(学生班主任) ==================== - -// 获得学生班主任 -export const getStudentTeacherByStudentId = async (studentId) => { - return await request.get({ url: `/infra/student/student-teacher/get-by-student-id?studentId=` + studentId }) -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentContactForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentContactForm deleted file mode 100644 index 55ca994..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentContactForm +++ /dev/null @@ -1,174 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentContactList b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentContactList deleted file mode 100644 index d0e89da..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentContactList +++ /dev/null @@ -1,72 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentForm deleted file mode 100644 index d8e7bc3..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentForm +++ /dev/null @@ -1,184 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentTeacherForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentTeacherForm deleted file mode 100644 index b22a480..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentTeacherForm +++ /dev/null @@ -1,122 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentTeacherList b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentTeacherList deleted file mode 100644 index e510adc..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/StudentTeacherList +++ /dev/null @@ -1,76 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/index deleted file mode 100644 index ee7c05f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/vue/index +++ /dev/null @@ -1,267 +0,0 @@ - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/xml/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/xml/InfraStudentMapper deleted file mode 100644 index 12bfc1f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_inner/xml/InfraStudentMapper +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/assert.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/assert.json deleted file mode 100644 index 7f6d4e5..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/assert.json +++ /dev/null @@ -1,67 +0,0 @@ -[ { - "contentPath" : "java/InfraStudentPageReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentPageReqVO.java" -}, { - "contentPath" : "java/InfraStudentRespVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentRespVO.java" -}, { - "contentPath" : "java/InfraStudentSaveReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentSaveReqVO.java" -}, { - "contentPath" : "java/InfraStudentController", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/InfraStudentController.java" -}, { - "contentPath" : "java/InfraStudentDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentDO.java" -}, { - "contentPath" : "java/InfraStudentContactDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentContactDO.java" -}, { - "contentPath" : "java/InfraStudentTeacherDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentTeacherDO.java" -}, { - "contentPath" : "java/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentMapper.java" -}, { - "contentPath" : "java/InfraStudentContactMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentContactMapper.java" -}, { - "contentPath" : "java/InfraStudentTeacherMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentTeacherMapper.java" -}, { - "contentPath" : "xml/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/resources/mapper/demo/InfraStudentMapper.xml" -}, { - "contentPath" : "java/InfraStudentServiceImpl", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImpl.java" -}, { - "contentPath" : "java/InfraStudentService", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentService.java" -}, { - "contentPath" : "java/InfraStudentServiceImplTest", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/test/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImplTest.java" -}, { - "contentPath" : "java/ErrorCodeConstants_手动操作", - "filePath" : "hangtag-module-infra/hangtag-module-infra-api/src/main/java/cn.hangtag/module/infra/enums/ErrorCodeConstants_手动操作.java" -}, { - "contentPath" : "sql/sql", - "filePath" : "sql/sql.sql" -}, { - "contentPath" : "sql/h2", - "filePath" : "sql/h2.sql" -}, { - "contentPath" : "vue/index", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/index.vue" -}, { - "contentPath" : "vue/StudentForm", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/StudentForm.vue" -}, { - "contentPath" : "vue/StudentContactForm", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/components/StudentContactForm.vue" -}, { - "contentPath" : "vue/StudentTeacherForm", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/components/StudentTeacherForm.vue" -}, { - "contentPath" : "ts/index", - "filePath" : "hangtag-ui-admin-vue3/src/api/infra/demo/index.ts" -} ] \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/ErrorCodeConstants_手动操作 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/ErrorCodeConstants_手动操作 deleted file mode 100644 index 4d16bed..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/ErrorCodeConstants_手动操作 +++ /dev/null @@ -1,3 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 hangtag-module-infra-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== 学生 TODO 补充编号 ========== -ErrorCode STUDENT_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生不存在"); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentContactDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentContactDO deleted file mode 100644 index 4649592..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentContactDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生联系人 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_contact") -@KeySequence("infra_student_contact_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentContactDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentContactMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentContactMapper deleted file mode 100644 index 6032819..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentContactMapper +++ /dev/null @@ -1,28 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生联系人 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentContactMapper extends BaseMapperX { - - default List selectListByStudentId(Long studentId) { - return selectList(InfraStudentContactDO::getStudentId, studentId); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentContactDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentController b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentController deleted file mode 100644 index 00d176f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentController +++ /dev/null @@ -1,117 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.CommonResult; -import cn.hangtag.framework.common.util.object.BeanUtils; -import static cn.hangtag.framework.common.pojo.CommonResult.success; - -import cn.hangtag.framework.excel.core.util.ExcelUtils; - -import cn.hangtag.framework.operatelog.core.annotations.OperateLog; -import static cn.hangtag.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.module.infra.service.demo.InfraStudentService; - -@Tag(name = "管理后台 - 学生") -@RestController -@RequestMapping("/infra/student") -@Validated -public class InfraStudentController { - - @Resource - private InfraStudentService studentService; - - @PostMapping("/create") - @Operation(summary = "创建学生") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudent(@Valid @RequestBody InfraStudentSaveReqVO createReqVO) { - return success(studentService.createStudent(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新学生") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudent(@Valid @RequestBody InfraStudentSaveReqVO updateReqVO) { - studentService.updateStudent(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除学生") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudent(@RequestParam("id") Long id) { - studentService.deleteStudent(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得学生") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudent(@RequestParam("id") Long id) { - InfraStudentDO student = studentService.getStudent(id); - return success(BeanUtils.toBean(student, InfraStudentRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得学生分页") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentPage(@Valid InfraStudentPageReqVO pageReqVO) { - PageResult pageResult = studentService.getStudentPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, InfraStudentRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出学生 Excel") - @PreAuthorize("@ss.hasPermission('infra:student:export')") - @OperateLog(type = EXPORT) - public void exportStudentExcel(@Valid InfraStudentPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = studentService.getStudentPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "学生.xls", "数据", InfraStudentRespVO.class, - BeanUtils.toBean(list, InfraStudentRespVO.class)); - } - - // ==================== 子表(学生联系人) ==================== - - @GetMapping("/student-contact/list-by-student-id") - @Operation(summary = "获得学生联系人列表") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentContactListByStudentId(@RequestParam("studentId") Long studentId) { - return success(studentService.getStudentContactListByStudentId(studentId)); - } - - // ==================== 子表(学生班主任) ==================== - - @GetMapping("/student-teacher/get-by-student-id") - @Operation(summary = "获得学生班主任") - @Parameter(name = "studentId", description = "学生编号") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudentTeacherByStudentId(@RequestParam("studentId") Long studentId) { - return success(studentService.getStudentTeacherByStudentId(studentId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentDO deleted file mode 100644 index f0b605d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentDO +++ /dev/null @@ -1,67 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生 DO - * - * @author 芋道源码 - */ -@TableName("infra_student") -@KeySequence("infra_student_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentMapper deleted file mode 100644 index ba82b63..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import org.apache.ibatis.annotations.Mapper; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; - -/** - * 学生 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentMapper extends BaseMapperX { - - default PageResult selectPage(InfraStudentPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(InfraStudentDO::getName, reqVO.getName()) - .eqIfPresent(InfraStudentDO::getBirthday, reqVO.getBirthday()) - .eqIfPresent(InfraStudentDO::getSex, reqVO.getSex()) - .eqIfPresent(InfraStudentDO::getEnabled, reqVO.getEnabled()) - .betweenIfPresent(InfraStudentDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(InfraStudentDO::getId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentPageReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentPageReqVO deleted file mode 100644 index d55baae..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentPageReqVO +++ /dev/null @@ -1,34 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.hangtag.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 学生分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class InfraStudentPageReqVO extends PageParam { - - @Schema(description = "名字", example = "芋头") - private String name; - - @Schema(description = "出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", example = "1") - private Integer sex; - - @Schema(description = "是否有效", example = "true") - private Boolean enabled; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentRespVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentRespVO deleted file mode 100644 index 8e6a44d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentRespVO +++ /dev/null @@ -1,60 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import cn.hangtag.framework.excel.core.annotations.DictFormat; -import cn.hangtag.framework.excel.core.convert.DictConvert; - -@Schema(description = "管理后台 - 学生 Response VO") -@Data -@ExcelIgnoreUnannotated -public class InfraStudentRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @ExcelProperty("名字") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @ExcelProperty("简介") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "性别", converter = DictConvert.class) - @DictFormat("system_user_sex") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @ExcelProperty(value = "是否有效", converter = DictConvert.class) - @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @ExcelProperty("头像") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @ExcelProperty("附件") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @ExcelProperty("备注") - private String memo; - - @Schema(description = "创建时间") - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentSaveReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentSaveReqVO deleted file mode 100644 index 40d549c..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentSaveReqVO +++ /dev/null @@ -1,58 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; - -@Schema(description = "管理后台 - 学生新增/修改 Request VO") -@Data -public class InfraStudentSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @NotEmpty(message = "名字不能为空") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @NotEmpty(message = "简介不能为空") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "出生日期不能为空") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "性别不能为空") - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @NotNull(message = "是否有效不能为空") - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @NotEmpty(message = "头像不能为空") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @NotEmpty(message = "附件不能为空") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @NotEmpty(message = "备注不能为空") - private String memo; - - @Schema(description = "学生联系人列表") - private List studentContacts; - - @Schema(description = "学生班主任") - private InfraStudentTeacherDO studentTeacher; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentService b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentService deleted file mode 100644 index e4544af..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentService +++ /dev/null @@ -1,77 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import java.util.*; -import javax.validation.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; - -/** - * 学生 Service 接口 - * - * @author 芋道源码 - */ -public interface InfraStudentService { - - /** - * 创建学生 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStudent(@Valid InfraStudentSaveReqVO createReqVO); - - /** - * 更新学生 - * - * @param updateReqVO 更新信息 - */ - void updateStudent(@Valid InfraStudentSaveReqVO updateReqVO); - - /** - * 删除学生 - * - * @param id 编号 - */ - void deleteStudent(Long id); - - /** - * 获得学生 - * - * @param id 编号 - * @return 学生 - */ - InfraStudentDO getStudent(Long id); - - /** - * 获得学生分页 - * - * @param pageReqVO 分页查询 - * @return 学生分页 - */ - PageResult getStudentPage(InfraStudentPageReqVO pageReqVO); - - // ==================== 子表(学生联系人) ==================== - - /** - * 获得学生联系人列表 - * - * @param studentId 学生编号 - * @return 学生联系人列表 - */ - List getStudentContactListByStudentId(Long studentId); - - // ==================== 子表(学生班主任) ==================== - - /** - * 获得学生班主任 - * - * @param studentId 学生编号 - * @return 学生班主任 - */ - InfraStudentTeacherDO getStudentTeacherByStudentId(Long studentId); - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentServiceImpl b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentServiceImpl deleted file mode 100644 index a724c20..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentServiceImpl +++ /dev/null @@ -1,147 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentContactDO; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.util.object.BeanUtils; - -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentContactMapper; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentTeacherMapper; - -import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; - -/** - * 学生 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class InfraStudentServiceImpl implements InfraStudentService { - - @Resource - private InfraStudentMapper studentMapper; - @Resource - private InfraStudentContactMapper studentContactMapper; - @Resource - private InfraStudentTeacherMapper studentTeacherMapper; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createStudent(InfraStudentSaveReqVO createReqVO) { - // 插入 - InfraStudentDO student = BeanUtils.toBean(createReqVO, InfraStudentDO.class); - studentMapper.insert(student); - - // 插入子表 - createStudentContactList(student.getId(), createReqVO.getStudentContacts()); - createStudentTeacher(student.getId(), createReqVO.getStudentTeacher()); - // 返回 - return student.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateStudent(InfraStudentSaveReqVO updateReqVO) { - // 校验存在 - validateStudentExists(updateReqVO.getId()); - // 更新 - InfraStudentDO updateObj = BeanUtils.toBean(updateReqVO, InfraStudentDO.class); - studentMapper.updateById(updateObj); - - // 更新子表 - updateStudentContactList(updateReqVO.getId(), updateReqVO.getStudentContacts()); - updateStudentTeacher(updateReqVO.getId(), updateReqVO.getStudentTeacher()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteStudent(Long id) { - // 校验存在 - validateStudentExists(id); - // 删除 - studentMapper.deleteById(id); - - // 删除子表 - deleteStudentContactByStudentId(id); - deleteStudentTeacherByStudentId(id); - } - - private void validateStudentExists(Long id) { - if (studentMapper.selectById(id) == null) { - throw exception(STUDENT_NOT_EXISTS); - } - } - - @Override - public InfraStudentDO getStudent(Long id) { - return studentMapper.selectById(id); - } - - @Override - public PageResult getStudentPage(InfraStudentPageReqVO pageReqVO) { - return studentMapper.selectPage(pageReqVO); - } - - // ==================== 子表(学生联系人) ==================== - - @Override - public List getStudentContactListByStudentId(Long studentId) { - return studentContactMapper.selectListByStudentId(studentId); - } - - private void createStudentContactList(Long studentId, List list) { - list.forEach(o -> o.setStudentId(studentId)); - studentContactMapper.insertBatch(list); - } - - private void updateStudentContactList(Long studentId, List list) { - deleteStudentContactByStudentId(studentId); - list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 - createStudentContactList(studentId, list); - } - - private void deleteStudentContactByStudentId(Long studentId) { - studentContactMapper.deleteByStudentId(studentId); - } - - // ==================== 子表(学生班主任) ==================== - - @Override - public InfraStudentTeacherDO getStudentTeacherByStudentId(Long studentId) { - return studentTeacherMapper.selectByStudentId(studentId); - } - - private void createStudentTeacher(Long studentId, InfraStudentTeacherDO studentTeacher) { - if (studentTeacher == null) { - return; - } - studentTeacher.setStudentId(studentId); - studentTeacherMapper.insert(studentTeacher); - } - - private void updateStudentTeacher(Long studentId, InfraStudentTeacherDO studentTeacher) { - if (studentTeacher == null) { - return; - } - studentTeacher.setStudentId(studentId); - studentTeacher.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 - studentTeacherMapper.insertOrUpdate(studentTeacher); - } - - private void deleteStudentTeacherByStudentId(Long studentId) { - studentTeacherMapper.deleteByStudentId(studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentServiceImplTest b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentServiceImplTest deleted file mode 100644 index 4fdc060..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentServiceImplTest +++ /dev/null @@ -1,146 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import javax.annotation.Resource; - -import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.framework.common.pojo.PageResult; - -import javax.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; -import static cn.hangtag.framework.test.core.util.AssertUtils.*; -import static cn.hangtag.framework.test.core.util.RandomUtils.*; -import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; -import static cn.hangtag.framework.common.util.object.ObjectUtils.*; -import static cn.hangtag.framework.common.util.date.DateUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -/** - * {@link InfraStudentServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(InfraStudentServiceImpl.class) -public class InfraStudentServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfraStudentServiceImpl studentService; - - @Resource - private InfraStudentMapper studentMapper; - - @Test - public void testCreateStudent_success() { - // 准备参数 - InfraStudentSaveReqVO createReqVO = randomPojo(InfraStudentSaveReqVO.class).setId(null); - - // 调用 - Long studentId = studentService.createStudent(createReqVO); - // 断言 - assertNotNull(studentId); - // 校验记录的属性是否正确 - InfraStudentDO student = studentMapper.selectById(studentId); - assertPojoEquals(createReqVO, student, "id"); - } - - @Test - public void testUpdateStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class, o -> { - o.setId(dbStudent.getId()); // 设置更新的 ID - }); - - // 调用 - studentService.updateStudent(updateReqVO); - // 校验是否更新正确 - InfraStudentDO student = studentMapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, student); - } - - @Test - public void testUpdateStudent_notExists() { - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.updateStudent(updateReqVO), STUDENT_NOT_EXISTS); - } - - @Test - public void testDeleteStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbStudent.getId(); - - // 调用 - studentService.deleteStudent(id); - // 校验数据不存在了 - assertNull(studentMapper.selectById(id)); - } - - @Test - public void testDeleteStudent_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.deleteStudent(id), STUDENT_NOT_EXISTS); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGetStudentPage() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class, o -> { // 等会查询到 - o.setName(null); - o.setBirthday(null); - o.setSex(null); - o.setEnabled(null); - o.setCreateTime(null); - }); - studentMapper.insert(dbStudent); - // 测试 name 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setName(null))); - // 测试 birthday 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setBirthday(null))); - // 测试 sex 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setSex(null))); - // 测试 enabled 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setEnabled(null))); - // 测试 createTime 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setCreateTime(null))); - // 准备参数 - InfraStudentPageReqVO reqVO = new InfraStudentPageReqVO(); - reqVO.setName(null); - reqVO.setBirthday(null); - reqVO.setSex(null); - reqVO.setEnabled(null); - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); - - // 调用 - PageResult pageResult = studentService.getStudentPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbStudent, pageResult.getList().get(0)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentTeacherDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentTeacherDO deleted file mode 100644 index dfdae97..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentTeacherDO +++ /dev/null @@ -1,71 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生班主任 DO - * - * @author 芋道源码 - */ -@TableName("infra_student_teacher") -@KeySequence("infra_student_teacher_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentTeacherDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 学生编号 - */ - private Long studentId; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentTeacherMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentTeacherMapper deleted file mode 100644 index 8e2073f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/java/InfraStudentTeacherMapper +++ /dev/null @@ -1,28 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentTeacherDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 学生班主任 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentTeacherMapper extends BaseMapperX { - - default InfraStudentTeacherDO selectByStudentId(Long studentId) { - return selectOne(InfraStudentTeacherDO::getStudentId, studentId); - } - - default int deleteByStudentId(Long studentId) { - return delete(InfraStudentTeacherDO::getStudentId, studentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/sql/h2 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/sql/h2 deleted file mode 100644 index 9150b93..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/sql/h2 +++ /dev/null @@ -1,17 +0,0 @@ --- 将该建表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "infra_student" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar NOT NULL, - "description" varchar NOT NULL, - "birthday" varchar NOT NULL, - "sex" int NOT NULL, - "enabled" bit NOT NULL, - "avatar" varchar NOT NULL, - "video" varchar NOT NULL, - "memo" varchar NOT NULL, - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ("id") -) COMMENT '学生表'; - --- 将该删表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "infra_student"; \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/sql/sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/sql/sql deleted file mode 100644 index 83df279..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/sql/sql +++ /dev/null @@ -1,55 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '学生管理', '', 2, 0, 888, - 'student', '', 'infra/demo/index', 0, 'InfraStudent' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生查询', 'infra:student:query', 3, 1, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生创建', 'infra:student:create', 3, 2, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生更新', 'infra:student:update', 3, 3, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生删除', 'infra:student:delete', 3, 4, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生导出', 'infra:student:export', 3, 5, @parentId, - '', '', '', 0 -); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/ts/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/ts/index deleted file mode 100644 index 6112800..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/ts/index +++ /dev/null @@ -1,57 +0,0 @@ -import request from '@/config/axios' - -export interface StudentVO { - id: number - name: string - description: string - birthday: Date - sex: number - enabled: boolean - avatar: string - video: string - memo: string -} - -// 查询学生分页 -export const getStudentPage = async (params) => { - return await request.get({ url: `/infra/student/page`, params }) -} - -// 查询学生详情 -export const getStudent = async (id: number) => { - return await request.get({ url: `/infra/student/get?id=` + id }) -} - -// 新增学生 -export const createStudent = async (data: StudentVO) => { - return await request.post({ url: `/infra/student/create`, data }) -} - -// 修改学生 -export const updateStudent = async (data: StudentVO) => { - return await request.put({ url: `/infra/student/update`, data }) -} - -// 删除学生 -export const deleteStudent = async (id: number) => { - return await request.delete({ url: `/infra/student/delete?id=` + id }) -} - -// 导出学生 Excel -export const exportStudent = async (params) => { - return await request.download({ url: `/infra/student/export-excel`, params }) -} - -// ==================== 子表(学生联系人) ==================== - -// 获得学生联系人列表 -export const getStudentContactListByStudentId = async (studentId) => { - return await request.get({ url: `/infra/student/student-contact/list-by-student-id?studentId=` + studentId }) -} - -// ==================== 子表(学生班主任) ==================== - -// 获得学生班主任 -export const getStudentTeacherByStudentId = async (studentId) => { - return await request.get({ url: `/infra/student/student-teacher/get-by-student-id?studentId=` + studentId }) -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentContactForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentContactForm deleted file mode 100644 index 55ca994..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentContactForm +++ /dev/null @@ -1,174 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentForm deleted file mode 100644 index d8e7bc3..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentForm +++ /dev/null @@ -1,184 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentTeacherForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentTeacherForm deleted file mode 100644 index b22a480..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/StudentTeacherForm +++ /dev/null @@ -1,122 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/xml/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/xml/InfraStudentMapper deleted file mode 100644 index 12bfc1f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/xml/InfraStudentMapper +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/assert.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/assert.json deleted file mode 100644 index 77ffe6d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/assert.json +++ /dev/null @@ -1,49 +0,0 @@ -[ { - "contentPath" : "java/InfraStudentPageReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentPageReqVO.java" -}, { - "contentPath" : "java/InfraStudentRespVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentRespVO.java" -}, { - "contentPath" : "java/InfraStudentSaveReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraStudentSaveReqVO.java" -}, { - "contentPath" : "java/InfraStudentController", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/InfraStudentController.java" -}, { - "contentPath" : "java/InfraStudentDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraStudentDO.java" -}, { - "contentPath" : "java/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraStudentMapper.java" -}, { - "contentPath" : "xml/InfraStudentMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/resources/mapper/demo/InfraStudentMapper.xml" -}, { - "contentPath" : "java/InfraStudentServiceImpl", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImpl.java" -}, { - "contentPath" : "java/InfraStudentService", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraStudentService.java" -}, { - "contentPath" : "java/InfraStudentServiceImplTest", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/test/java/cn.hangtag/module/infra/service/demo/InfraStudentServiceImplTest.java" -}, { - "contentPath" : "java/ErrorCodeConstants_手动操作", - "filePath" : "hangtag-module-infra/hangtag-module-infra-api/src/main/java/cn.hangtag/module/infra/enums/ErrorCodeConstants_手动操作.java" -}, { - "contentPath" : "sql/sql", - "filePath" : "sql/sql.sql" -}, { - "contentPath" : "sql/h2", - "filePath" : "sql/h2.sql" -}, { - "contentPath" : "vue/index", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/index.vue" -}, { - "contentPath" : "vue/StudentForm", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/StudentForm.vue" -}, { - "contentPath" : "ts/index", - "filePath" : "hangtag-ui-admin-vue3/src/api/infra/demo/index.ts" -} ] \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/ErrorCodeConstants_手动操作 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/ErrorCodeConstants_手动操作 deleted file mode 100644 index 4d16bed..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/ErrorCodeConstants_手动操作 +++ /dev/null @@ -1,3 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 hangtag-module-infra-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== 学生 TODO 补充编号 ========== -ErrorCode STUDENT_NOT_EXISTS = new ErrorCode(TODO 补充编号, "学生不存在"); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentController b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentController deleted file mode 100644 index 442f9eb..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentController +++ /dev/null @@ -1,95 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.CommonResult; -import cn.hangtag.framework.common.util.object.BeanUtils; -import static cn.hangtag.framework.common.pojo.CommonResult.success; - -import cn.hangtag.framework.excel.core.util.ExcelUtils; - -import cn.hangtag.framework.operatelog.core.annotations.OperateLog; -import static cn.hangtag.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.service.demo.InfraStudentService; - -@Tag(name = "管理后台 - 学生") -@RestController -@RequestMapping("/infra/student") -@Validated -public class InfraStudentController { - - @Resource - private InfraStudentService studentService; - - @PostMapping("/create") - @Operation(summary = "创建学生") - @PreAuthorize("@ss.hasPermission('infra:student:create')") - public CommonResult createStudent(@Valid @RequestBody InfraStudentSaveReqVO createReqVO) { - return success(studentService.createStudent(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新学生") - @PreAuthorize("@ss.hasPermission('infra:student:update')") - public CommonResult updateStudent(@Valid @RequestBody InfraStudentSaveReqVO updateReqVO) { - studentService.updateStudent(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除学生") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:student:delete')") - public CommonResult deleteStudent(@RequestParam("id") Long id) { - studentService.deleteStudent(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得学生") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult getStudent(@RequestParam("id") Long id) { - InfraStudentDO student = studentService.getStudent(id); - return success(BeanUtils.toBean(student, InfraStudentRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得学生分页") - @PreAuthorize("@ss.hasPermission('infra:student:query')") - public CommonResult> getStudentPage(@Valid InfraStudentPageReqVO pageReqVO) { - PageResult pageResult = studentService.getStudentPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, InfraStudentRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出学生 Excel") - @PreAuthorize("@ss.hasPermission('infra:student:export')") - @OperateLog(type = EXPORT) - public void exportStudentExcel(@Valid InfraStudentPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = studentService.getStudentPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "学生.xls", "数据", InfraStudentRespVO.class, - BeanUtils.toBean(list, InfraStudentRespVO.class)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentDO deleted file mode 100644 index f0b605d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentDO +++ /dev/null @@ -1,67 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 学生 DO - * - * @author 芋道源码 - */ -@TableName("infra_student") -@KeySequence("infra_student_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraStudentDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 简介 - */ - private String description; - /** - * 出生日期 - */ - private LocalDateTime birthday; - /** - * 性别 - * - * 枚举 {@link TODO system_user_sex 对应的类} - */ - private Integer sex; - /** - * 是否有效 - * - * 枚举 {@link TODO infra_boolean_string 对应的类} - */ - private Boolean enabled; - /** - * 头像 - */ - private String avatar; - /** - * 附件 - */ - private String video; - /** - * 备注 - */ - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentMapper deleted file mode 100644 index ba82b63..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentMapper +++ /dev/null @@ -1,30 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import org.apache.ibatis.annotations.Mapper; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; - -/** - * 学生 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraStudentMapper extends BaseMapperX { - - default PageResult selectPage(InfraStudentPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(InfraStudentDO::getName, reqVO.getName()) - .eqIfPresent(InfraStudentDO::getBirthday, reqVO.getBirthday()) - .eqIfPresent(InfraStudentDO::getSex, reqVO.getSex()) - .eqIfPresent(InfraStudentDO::getEnabled, reqVO.getEnabled()) - .betweenIfPresent(InfraStudentDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(InfraStudentDO::getId)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentPageReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentPageReqVO deleted file mode 100644 index d55baae..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentPageReqVO +++ /dev/null @@ -1,34 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.hangtag.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 学生分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class InfraStudentPageReqVO extends PageParam { - - @Schema(description = "名字", example = "芋头") - private String name; - - @Schema(description = "出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", example = "1") - private Integer sex; - - @Schema(description = "是否有效", example = "true") - private Boolean enabled; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentRespVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentRespVO deleted file mode 100644 index 8e6a44d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentRespVO +++ /dev/null @@ -1,60 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import cn.hangtag.framework.excel.core.annotations.DictFormat; -import cn.hangtag.framework.excel.core.convert.DictConvert; - -@Schema(description = "管理后台 - 学生 Response VO") -@Data -@ExcelIgnoreUnannotated -public class InfraStudentRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @ExcelProperty("名字") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @ExcelProperty("简介") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("出生日期") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty(value = "性别", converter = DictConvert.class) - @DictFormat("system_user_sex") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @ExcelProperty(value = "是否有效", converter = DictConvert.class) - @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @ExcelProperty("头像") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @ExcelProperty("附件") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @ExcelProperty("备注") - private String memo; - - @Schema(description = "创建时间") - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentSaveReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentSaveReqVO deleted file mode 100644 index 627fac5..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentSaveReqVO +++ /dev/null @@ -1,50 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 学生新增/修改 Request VO") -@Data -public class InfraStudentSaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @NotEmpty(message = "名字不能为空") - private String name; - - @Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是介绍") - @NotEmpty(message = "简介不能为空") - private String description; - - @Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "出生日期不能为空") - private LocalDateTime birthday; - - @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "性别不能为空") - private Integer sex; - - @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") - @NotNull(message = "是否有效不能为空") - private Boolean enabled; - - @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") - @NotEmpty(message = "头像不能为空") - private String avatar; - - @Schema(description = "附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.mp4") - @NotEmpty(message = "附件不能为空") - private String video; - - @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "我是备注") - @NotEmpty(message = "备注不能为空") - private String memo; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentService b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentService deleted file mode 100644 index 615648f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentService +++ /dev/null @@ -1,55 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import java.util.*; -import javax.validation.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; - -/** - * 学生 Service 接口 - * - * @author 芋道源码 - */ -public interface InfraStudentService { - - /** - * 创建学生 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createStudent(@Valid InfraStudentSaveReqVO createReqVO); - - /** - * 更新学生 - * - * @param updateReqVO 更新信息 - */ - void updateStudent(@Valid InfraStudentSaveReqVO updateReqVO); - - /** - * 删除学生 - * - * @param id 编号 - */ - void deleteStudent(Long id); - - /** - * 获得学生 - * - * @param id 编号 - * @return 学生 - */ - InfraStudentDO getStudent(Long id); - - /** - * 获得学生分页 - * - * @param pageReqVO 分页查询 - * @return 学生分页 - */ - PageResult getStudentPage(InfraStudentPageReqVO pageReqVO); - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentServiceImpl b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentServiceImpl deleted file mode 100644 index 337f64a..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentServiceImpl +++ /dev/null @@ -1,74 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.util.object.BeanUtils; - -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; - -import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; - -/** - * 学生 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class InfraStudentServiceImpl implements InfraStudentService { - - @Resource - private InfraStudentMapper studentMapper; - - @Override - public Long createStudent(InfraStudentSaveReqVO createReqVO) { - // 插入 - InfraStudentDO student = BeanUtils.toBean(createReqVO, InfraStudentDO.class); - studentMapper.insert(student); - // 返回 - return student.getId(); - } - - @Override - public void updateStudent(InfraStudentSaveReqVO updateReqVO) { - // 校验存在 - validateStudentExists(updateReqVO.getId()); - // 更新 - InfraStudentDO updateObj = BeanUtils.toBean(updateReqVO, InfraStudentDO.class); - studentMapper.updateById(updateObj); - } - - @Override - public void deleteStudent(Long id) { - // 校验存在 - validateStudentExists(id); - // 删除 - studentMapper.deleteById(id); - } - - private void validateStudentExists(Long id) { - if (studentMapper.selectById(id) == null) { - throw exception(STUDENT_NOT_EXISTS); - } - } - - @Override - public InfraStudentDO getStudent(Long id) { - return studentMapper.selectById(id); - } - - @Override - public PageResult getStudentPage(InfraStudentPageReqVO pageReqVO) { - return studentMapper.selectPage(pageReqVO); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentServiceImplTest b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentServiceImplTest deleted file mode 100644 index 4fdc060..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/java/InfraStudentServiceImplTest +++ /dev/null @@ -1,146 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import javax.annotation.Resource; - -import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraStudentDO; -import cn.hangtag.module.infra.dal.mysql.demo.InfraStudentMapper; -import cn.hangtag.framework.common.pojo.PageResult; - -import javax.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; -import static cn.hangtag.framework.test.core.util.AssertUtils.*; -import static cn.hangtag.framework.test.core.util.RandomUtils.*; -import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; -import static cn.hangtag.framework.common.util.object.ObjectUtils.*; -import static cn.hangtag.framework.common.util.date.DateUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -/** - * {@link InfraStudentServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(InfraStudentServiceImpl.class) -public class InfraStudentServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfraStudentServiceImpl studentService; - - @Resource - private InfraStudentMapper studentMapper; - - @Test - public void testCreateStudent_success() { - // 准备参数 - InfraStudentSaveReqVO createReqVO = randomPojo(InfraStudentSaveReqVO.class).setId(null); - - // 调用 - Long studentId = studentService.createStudent(createReqVO); - // 断言 - assertNotNull(studentId); - // 校验记录的属性是否正确 - InfraStudentDO student = studentMapper.selectById(studentId); - assertPojoEquals(createReqVO, student, "id"); - } - - @Test - public void testUpdateStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class, o -> { - o.setId(dbStudent.getId()); // 设置更新的 ID - }); - - // 调用 - studentService.updateStudent(updateReqVO); - // 校验是否更新正确 - InfraStudentDO student = studentMapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, student); - } - - @Test - public void testUpdateStudent_notExists() { - // 准备参数 - InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.updateStudent(updateReqVO), STUDENT_NOT_EXISTS); - } - - @Test - public void testDeleteStudent_success() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class); - studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbStudent.getId(); - - // 调用 - studentService.deleteStudent(id); - // 校验数据不存在了 - assertNull(studentMapper.selectById(id)); - } - - @Test - public void testDeleteStudent_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> studentService.deleteStudent(id), STUDENT_NOT_EXISTS); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGetStudentPage() { - // mock 数据 - InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class, o -> { // 等会查询到 - o.setName(null); - o.setBirthday(null); - o.setSex(null); - o.setEnabled(null); - o.setCreateTime(null); - }); - studentMapper.insert(dbStudent); - // 测试 name 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setName(null))); - // 测试 birthday 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setBirthday(null))); - // 测试 sex 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setSex(null))); - // 测试 enabled 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setEnabled(null))); - // 测试 createTime 不匹配 - studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setCreateTime(null))); - // 准备参数 - InfraStudentPageReqVO reqVO = new InfraStudentPageReqVO(); - reqVO.setName(null); - reqVO.setBirthday(null); - reqVO.setSex(null); - reqVO.setEnabled(null); - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); - - // 调用 - PageResult pageResult = studentService.getStudentPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbStudent, pageResult.getList().get(0)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/sql/h2 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/sql/h2 deleted file mode 100644 index 9150b93..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/sql/h2 +++ /dev/null @@ -1,17 +0,0 @@ --- 将该建表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "infra_student" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar NOT NULL, - "description" varchar NOT NULL, - "birthday" varchar NOT NULL, - "sex" int NOT NULL, - "enabled" bit NOT NULL, - "avatar" varchar NOT NULL, - "video" varchar NOT NULL, - "memo" varchar NOT NULL, - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY ("id") -) COMMENT '学生表'; - --- 将该删表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "infra_student"; \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/sql/sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/sql/sql deleted file mode 100644 index 83df279..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/sql/sql +++ /dev/null @@ -1,55 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '学生管理', '', 2, 0, 888, - 'student', '', 'infra/demo/index', 0, 'InfraStudent' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生查询', 'infra:student:query', 3, 1, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生创建', 'infra:student:create', 3, 2, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生更新', 'infra:student:update', 3, 3, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生删除', 'infra:student:delete', 3, 4, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '学生导出', 'infra:student:export', 3, 5, @parentId, - '', '', '', 0 -); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/ts/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/ts/index deleted file mode 100644 index 8cdf254..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/ts/index +++ /dev/null @@ -1,43 +0,0 @@ -import request from '@/config/axios' - -export interface StudentVO { - id: number - name: string - description: string - birthday: Date - sex: number - enabled: boolean - avatar: string - video: string - memo: string -} - -// 查询学生分页 -export const getStudentPage = async (params) => { - return await request.get({ url: `/infra/student/page`, params }) -} - -// 查询学生详情 -export const getStudent = async (id: number) => { - return await request.get({ url: `/infra/student/get?id=` + id }) -} - -// 新增学生 -export const createStudent = async (data: StudentVO) => { - return await request.post({ url: `/infra/student/create`, data }) -} - -// 修改学生 -export const updateStudent = async (data: StudentVO) => { - return await request.put({ url: `/infra/student/update`, data }) -} - -// 删除学生 -export const deleteStudent = async (id: number) => { - return await request.delete({ url: `/infra/student/delete?id=` + id }) -} - -// 导出学生 Excel -export const exportStudent = async (params) => { - return await request.download({ url: `/infra/student/export-excel`, params }) -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/vue/StudentForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/vue/StudentForm deleted file mode 100644 index 0dabcb5..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/vue/StudentForm +++ /dev/null @@ -1,152 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/vue/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/vue/index deleted file mode 100644 index b115b13..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/vue/index +++ /dev/null @@ -1,252 +0,0 @@ - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/xml/InfraStudentMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/xml/InfraStudentMapper deleted file mode 100644 index 12bfc1f..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_one/xml/InfraStudentMapper +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/assert.json b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/assert.json deleted file mode 100644 index ec327e0..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/assert.json +++ /dev/null @@ -1,49 +0,0 @@ -[ { - "contentPath" : "java/InfraCategoryListReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraCategoryListReqVO.java" -}, { - "contentPath" : "java/InfraCategoryRespVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraCategoryRespVO.java" -}, { - "contentPath" : "java/InfraCategorySaveReqVO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/vo/InfraCategorySaveReqVO.java" -}, { - "contentPath" : "java/InfraCategoryController", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/controller/admin/demo/InfraCategoryController.java" -}, { - "contentPath" : "java/InfraCategoryDO", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/dataobject/demo/InfraCategoryDO.java" -}, { - "contentPath" : "java/InfraCategoryMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/dal/mysql/demo/InfraCategoryMapper.java" -}, { - "contentPath" : "xml/InfraCategoryMapper", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/resources/mapper/demo/InfraCategoryMapper.xml" -}, { - "contentPath" : "java/InfraCategoryServiceImpl", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraCategoryServiceImpl.java" -}, { - "contentPath" : "java/InfraCategoryService", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/main/java/cn.hangtag/module/infra/service/demo/InfraCategoryService.java" -}, { - "contentPath" : "java/InfraCategoryServiceImplTest", - "filePath" : "hangtag-module-infra/hangtag-module-infra-biz/src/test/java/cn.hangtag/module/infra/service/demo/InfraCategoryServiceImplTest.java" -}, { - "contentPath" : "java/ErrorCodeConstants_手动操作", - "filePath" : "hangtag-module-infra/hangtag-module-infra-api/src/main/java/cn.hangtag/module/infra/enums/ErrorCodeConstants_手动操作.java" -}, { - "contentPath" : "sql/sql", - "filePath" : "sql/sql.sql" -}, { - "contentPath" : "sql/h2", - "filePath" : "sql/h2.sql" -}, { - "contentPath" : "vue/index", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/index.vue" -}, { - "contentPath" : "vue/CategoryForm", - "filePath" : "hangtag-ui-admin-vue3/src/views/infra/demo/CategoryForm.vue" -}, { - "contentPath" : "ts/index", - "filePath" : "hangtag-ui-admin-vue3/src/api/infra/demo/index.ts" -} ] \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/ErrorCodeConstants_手动操作 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/ErrorCodeConstants_手动操作 deleted file mode 100644 index fea2fd6..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/ErrorCodeConstants_手动操作 +++ /dev/null @@ -1,8 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 hangtag-module-infra-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== 分类 TODO 补充编号 ========== -ErrorCode CATEGORY_NOT_EXISTS = new ErrorCode(TODO 补充编号, "分类不存在"); -ErrorCode CATEGORY_EXITS_CHILDREN = new ErrorCode(TODO 补充编号, "存在存在子分类,无法删除"); -ErrorCode CATEGORY_PARENT_NOT_EXITS = new ErrorCode(TODO 补充编号,"父级分类不存在"); -ErrorCode CATEGORY_PARENT_ERROR = new ErrorCode(TODO 补充编号, "不能设置自己为父分类"); -ErrorCode CATEGORY_NAME_DUPLICATE = new ErrorCode(TODO 补充编号, "已经存在该名字的分类"); -ErrorCode CATEGORY_PARENT_IS_CHILD = new ErrorCode(TODO 补充编号, "不能设置自己的子InfraCategory为父InfraCategory"); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryController b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryController deleted file mode 100644 index dc7a33a..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryController +++ /dev/null @@ -1,94 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.CommonResult; -import cn.hangtag.framework.common.util.object.BeanUtils; -import static cn.hangtag.framework.common.pojo.CommonResult.success; - -import cn.hangtag.framework.excel.core.util.ExcelUtils; - -import cn.hangtag.framework.operatelog.core.annotations.OperateLog; -import static cn.hangtag.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraCategoryDO; -import cn.hangtag.module.infra.service.demo.InfraCategoryService; - -@Tag(name = "管理后台 - 分类") -@RestController -@RequestMapping("/infra/category") -@Validated -public class InfraCategoryController { - - @Resource - private InfraCategoryService categoryService; - - @PostMapping("/create") - @Operation(summary = "创建分类") - @PreAuthorize("@ss.hasPermission('infra:category:create')") - public CommonResult createCategory(@Valid @RequestBody InfraCategorySaveReqVO createReqVO) { - return success(categoryService.createCategory(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新分类") - @PreAuthorize("@ss.hasPermission('infra:category:update')") - public CommonResult updateCategory(@Valid @RequestBody InfraCategorySaveReqVO updateReqVO) { - categoryService.updateCategory(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除分类") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:category:delete')") - public CommonResult deleteCategory(@RequestParam("id") Long id) { - categoryService.deleteCategory(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得分类") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:category:query')") - public CommonResult getCategory(@RequestParam("id") Long id) { - InfraCategoryDO category = categoryService.getCategory(id); - return success(BeanUtils.toBean(category, InfraCategoryRespVO.class)); - } - - @GetMapping("/list") - @Operation(summary = "获得分类列表") - @PreAuthorize("@ss.hasPermission('infra:category:query')") - public CommonResult> getCategoryList(@Valid InfraCategoryListReqVO listReqVO) { - List list = categoryService.getCategoryList(listReqVO); - return success(BeanUtils.toBean(list, InfraCategoryRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出分类 Excel") - @PreAuthorize("@ss.hasPermission('infra:category:export')") - @OperateLog(type = EXPORT) - public void exportCategoryExcel(@Valid InfraCategoryListReqVO listReqVO, - HttpServletResponse response) throws IOException { - List list = categoryService.getCategoryList(listReqVO); - // 导出 Excel - ExcelUtils.write(response, "分类.xls", "数据", InfraCategoryRespVO.class, - BeanUtils.toBean(list, InfraCategoryRespVO.class)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryDO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryDO deleted file mode 100644 index 7fe7a2b..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryDO +++ /dev/null @@ -1,39 +0,0 @@ -package cn.hangtag.module.infra.dal.dataobject.demo; - -import lombok.*; -import java.util.*; -import com.baomidou.mybatisplus.annotation.*; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; - -/** - * 分类 DO - * - * @author 芋道源码 - */ -@TableName("infra_category") -@KeySequence("infra_category_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class InfraCategoryDO extends BaseDO { - - public static final Long PARENT_ID_ROOT = 0L; - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 父编号 - */ - private Long parentId; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryListReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryListReqVO deleted file mode 100644 index 77a6748..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryListReqVO +++ /dev/null @@ -1,15 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.hangtag.framework.common.pojo.PageParam; - -@Schema(description = "管理后台 - 分类列表 Request VO") -@Data -public class InfraCategoryListReqVO { - - @Schema(description = "名字", example = "芋头") - private String name; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryMapper deleted file mode 100644 index 3c89631..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryMapper +++ /dev/null @@ -1,34 +0,0 @@ -package cn.hangtag.module.infra.dal.mysql.demo; - -import java.util.*; - -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraCategoryDO; -import org.apache.ibatis.annotations.Mapper; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; - -/** - * 分类 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface InfraCategoryMapper extends BaseMapperX { - - default List selectList(InfraCategoryListReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .likeIfPresent(InfraCategoryDO::getName, reqVO.getName()) - .orderByDesc(InfraCategoryDO::getId)); - } - - default InfraCategoryDO selectByParentIdAndName(Long parentId, String name) { - return selectOne(InfraCategoryDO::getParentId, parentId, InfraCategoryDO::getName, name); - } - - default Long selectCountByParentId(Long parentId) { - return selectCount(InfraCategoryDO::getParentId, parentId); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryRespVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryRespVO deleted file mode 100644 index a568538..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryRespVO +++ /dev/null @@ -1,26 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; -import com.alibaba.excel.annotation.*; - -@Schema(description = "管理后台 - 分类 Response VO") -@Data -@ExcelIgnoreUnannotated -public class InfraCategoryRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @ExcelProperty("名字") - private String name; - - @Schema(description = "父编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048") - @ExcelProperty("父编号") - private Long parentId; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategorySaveReqVO b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategorySaveReqVO deleted file mode 100644 index a946c68..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategorySaveReqVO +++ /dev/null @@ -1,24 +0,0 @@ -package cn.hangtag.module.infra.controller.admin.demo.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -import java.util.*; - -@Schema(description = "管理后台 - 分类新增/修改 Request VO") -@Data -public class InfraCategorySaveReqVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋头") - @NotEmpty(message = "名字不能为空") - private String name; - - @Schema(description = "父编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048") - @NotNull(message = "父编号不能为空") - private Long parentId; - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryService b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryService deleted file mode 100644 index b1dc148..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryService +++ /dev/null @@ -1,55 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import java.util.*; -import javax.validation.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraCategoryDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; - -/** - * 分类 Service 接口 - * - * @author 芋道源码 - */ -public interface InfraCategoryService { - - /** - * 创建分类 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createCategory(@Valid InfraCategorySaveReqVO createReqVO); - - /** - * 更新分类 - * - * @param updateReqVO 更新信息 - */ - void updateCategory(@Valid InfraCategorySaveReqVO updateReqVO); - - /** - * 删除分类 - * - * @param id 编号 - */ - void deleteCategory(Long id); - - /** - * 获得分类 - * - * @param id 编号 - * @return 分类 - */ - InfraCategoryDO getCategory(Long id); - - /** - * 获得分类列表 - * - * @param listReqVO 查询条件 - * @return 分类列表 - */ - List getCategoryList(InfraCategoryListReqVO listReqVO); - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryServiceImpl b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryServiceImpl deleted file mode 100644 index 15f36f5..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryServiceImpl +++ /dev/null @@ -1,136 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraCategoryDO; -import cn.hangtag.framework.common.pojo.PageResult; -import cn.hangtag.framework.common.pojo.PageParam; -import cn.hangtag.framework.common.util.object.BeanUtils; - -import cn.hangtag.module.infra.dal.mysql.demo.InfraCategoryMapper; - -import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; - -/** - * 分类 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class InfraCategoryServiceImpl implements InfraCategoryService { - - @Resource - private InfraCategoryMapper categoryMapper; - - @Override - public Long createCategory(InfraCategorySaveReqVO createReqVO) { - // 校验父编号的有效性 - validateParentCategory(null, createReqVO.getParentId()); - // 校验名字的唯一性 - validateCategoryNameUnique(null, createReqVO.getParentId(), createReqVO.getName()); - - // 插入 - InfraCategoryDO category = BeanUtils.toBean(createReqVO, InfraCategoryDO.class); - categoryMapper.insert(category); - // 返回 - return category.getId(); - } - - @Override - public void updateCategory(InfraCategorySaveReqVO updateReqVO) { - // 校验存在 - validateCategoryExists(updateReqVO.getId()); - // 校验父编号的有效性 - validateParentCategory(updateReqVO.getId(), updateReqVO.getParentId()); - // 校验名字的唯一性 - validateCategoryNameUnique(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getName()); - - // 更新 - InfraCategoryDO updateObj = BeanUtils.toBean(updateReqVO, InfraCategoryDO.class); - categoryMapper.updateById(updateObj); - } - - @Override - public void deleteCategory(Long id) { - // 校验存在 - validateCategoryExists(id); - // 校验是否有子分类 - if (categoryMapper.selectCountByParentId(id) > 0) { - throw exception(CATEGORY_EXITS_CHILDREN); - } - // 删除 - categoryMapper.deleteById(id); - } - - private void validateCategoryExists(Long id) { - if (categoryMapper.selectById(id) == null) { - throw exception(CATEGORY_NOT_EXISTS); - } - } - - private void validateParentCategory(Long id, Long parentId) { - if (parentId == null || CategoryDO.PARENT_ID_ROOT.equals(parentId)) { - return; - } - // 1. 不能设置自己为父分类 - if (Objects.equals(id, parentId)) { - throw exception(CATEGORY_PARENT_ERROR); - } - // 2. 父分类不存在 - CategoryDO parentCategory = categoryMapper.selectById(parentId); - if (parentCategory == null) { - throw exception(CATEGORY_PARENT_NOT_EXITS); - } - // 3. 递归校验父分类,如果父分类是自己的子分类,则报错,避免形成环路 - if (id == null) { // id 为空,说明新增,不需要考虑环路 - return; - } - for (int i = 0; i < Short.MAX_VALUE; i++) { - // 3.1 校验环路 - parentId = parentCategory.getParentId(); - if (Objects.equals(id, parentId)) { - throw exception(CATEGORY_PARENT_IS_CHILD); - } - // 3.2 继续递归下一级父分类 - if (parentId == null || CategoryDO.PARENT_ID_ROOT.equals(parentId)) { - break; - } - parentCategory = categoryMapper.selectById(parentId); - if (parentCategory == null) { - break; - } - } - } - - private void validateCategoryNameUnique(Long id, Long parentId, String name) { - CategoryDO category = categoryMapper.selectByParentIdAndName(parentId, name); - if (category == null) { - return; - } - // 如果 id 为空,说明不用比较是否为相同 id 的分类 - if (id == null) { - throw exception(CATEGORY_NAME_DUPLICATE); - } - if (!Objects.equals(category.getId(), id)) { - throw exception(CATEGORY_NAME_DUPLICATE); - } - } - - @Override - public InfraCategoryDO getCategory(Long id) { - return categoryMapper.selectById(id); - } - - @Override - public List getCategoryList(InfraCategoryListReqVO listReqVO) { - return categoryMapper.selectList(listReqVO); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryServiceImplTest b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryServiceImplTest deleted file mode 100644 index 7f7623b..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/java/InfraCategoryServiceImplTest +++ /dev/null @@ -1,129 +0,0 @@ -package cn.hangtag.module.infra.service.demo; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import javax.annotation.Resource; - -import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; - -import cn.hangtag.module.infra.controller.admin.demo.vo.*; -import cn.hangtag.module.infra.dal.dataobject.demo.InfraCategoryDO; -import cn.hangtag.module.infra.dal.mysql.demo.InfraCategoryMapper; -import cn.hangtag.framework.common.pojo.PageResult; - -import javax.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static cn.hangtag.module.infra.enums.ErrorCodeConstants.*; -import static cn.hangtag.framework.test.core.util.AssertUtils.*; -import static cn.hangtag.framework.test.core.util.RandomUtils.*; -import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; -import static cn.hangtag.framework.common.util.object.ObjectUtils.*; -import static cn.hangtag.framework.common.util.date.DateUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -/** - * {@link InfraCategoryServiceImpl} 的单元测试类 - * - * @author 芋道源码 - */ -@Import(InfraCategoryServiceImpl.class) -public class InfraCategoryServiceImplTest extends BaseDbUnitTest { - - @Resource - private InfraCategoryServiceImpl categoryService; - - @Resource - private InfraCategoryMapper categoryMapper; - - @Test - public void testCreateCategory_success() { - // 准备参数 - InfraCategorySaveReqVO createReqVO = randomPojo(InfraCategorySaveReqVO.class).setId(null); - - // 调用 - Long categoryId = categoryService.createCategory(createReqVO); - // 断言 - assertNotNull(categoryId); - // 校验记录的属性是否正确 - InfraCategoryDO category = categoryMapper.selectById(categoryId); - assertPojoEquals(createReqVO, category, "id"); - } - - @Test - public void testUpdateCategory_success() { - // mock 数据 - InfraCategoryDO dbCategory = randomPojo(InfraCategoryDO.class); - categoryMapper.insert(dbCategory);// @Sql: 先插入出一条存在的数据 - // 准备参数 - InfraCategorySaveReqVO updateReqVO = randomPojo(InfraCategorySaveReqVO.class, o -> { - o.setId(dbCategory.getId()); // 设置更新的 ID - }); - - // 调用 - categoryService.updateCategory(updateReqVO); - // 校验是否更新正确 - InfraCategoryDO category = categoryMapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, category); - } - - @Test - public void testUpdateCategory_notExists() { - // 准备参数 - InfraCategorySaveReqVO updateReqVO = randomPojo(InfraCategorySaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> categoryService.updateCategory(updateReqVO), CATEGORY_NOT_EXISTS); - } - - @Test - public void testDeleteCategory_success() { - // mock 数据 - InfraCategoryDO dbCategory = randomPojo(InfraCategoryDO.class); - categoryMapper.insert(dbCategory);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbCategory.getId(); - - // 调用 - categoryService.deleteCategory(id); - // 校验数据不存在了 - assertNull(categoryMapper.selectById(id)); - } - - @Test - public void testDeleteCategory_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> categoryService.deleteCategory(id), CATEGORY_NOT_EXISTS); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGetCategoryList() { - // mock 数据 - InfraCategoryDO dbCategory = randomPojo(InfraCategoryDO.class, o -> { // 等会查询到 - o.setName(null); - }); - categoryMapper.insert(dbCategory); - // 测试 name 不匹配 - categoryMapper.insert(cloneIgnoreId(dbCategory, o -> o.setName(null))); - // 准备参数 - InfraCategoryListReqVO reqVO = new InfraCategoryListReqVO(); - reqVO.setName(null); - - // 调用 - List list = categoryService.getCategoryList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbCategory, list.get(0)); - } - -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/sql/h2 b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/sql/h2 deleted file mode 100644 index 1cf0f5d..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/sql/h2 +++ /dev/null @@ -1,10 +0,0 @@ --- 将该建表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "infra_category" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar NOT NULL, - "description" bigint NOT NULL, - PRIMARY KEY ("id") -) COMMENT '分类表'; - --- 将该删表 SQL 语句,添加到 hangtag-module-infra-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "infra_category"; \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/sql/sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/sql/sql deleted file mode 100644 index 8140948..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/sql/sql +++ /dev/null @@ -1,55 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '分类管理', '', 2, 0, 888, - 'category', '', 'infra/demo/index', 0, 'InfraCategory' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '分类查询', 'infra:category:query', 3, 1, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '分类创建', 'infra:category:create', 3, 2, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '分类更新', 'infra:category:update', 3, 3, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '分类删除', 'infra:category:delete', 3, 4, @parentId, - '', '', '', 0 -); -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '分类导出', 'infra:category:export', 3, 5, @parentId, - '', '', '', 0 -); \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/ts/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/ts/index deleted file mode 100644 index 453c885..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/ts/index +++ /dev/null @@ -1,37 +0,0 @@ -import request from '@/config/axios' - -export interface CategoryVO { - id: number - name: string - parentId: number -} - -// 查询分类列表 -export const getCategoryList = async (params) => { - return await request.get({ url: `/infra/category/list`, params }) -} - -// 查询分类详情 -export const getCategory = async (id: number) => { - return await request.get({ url: `/infra/category/get?id=` + id }) -} - -// 新增分类 -export const createCategory = async (data: CategoryVO) => { - return await request.post({ url: `/infra/category/create`, data }) -} - -// 修改分类 -export const updateCategory = async (data: CategoryVO) => { - return await request.put({ url: `/infra/category/update`, data }) -} - -// 删除分类 -export const deleteCategory = async (id: number) => { - return await request.delete({ url: `/infra/category/delete?id=` + id }) -} - -// 导出分类 Excel -export const exportCategory = async (params) => { - return await request.download({ url: `/infra/category/export-excel`, params }) -} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/vue/CategoryForm b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/vue/CategoryForm deleted file mode 100644 index 8e139fb..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/vue/CategoryForm +++ /dev/null @@ -1,114 +0,0 @@ - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/vue/index b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/vue/index deleted file mode 100644 index 46902e7..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/vue/index +++ /dev/null @@ -1,185 +0,0 @@ - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/xml/InfraCategoryMapper b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/xml/InfraCategoryMapper deleted file mode 100644 index 4d70ade..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_tree/xml/InfraCategoryMapper +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/logback.xml b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/logback.xml deleted file mode 100644 index daf756b..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/logback.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/sql/clean.sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/sql/clean.sql deleted file mode 100644 index 58345ed..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/sql/clean.sql +++ /dev/null @@ -1,11 +0,0 @@ -DELETE FROM "infra_config"; -DELETE FROM "infra_file_config"; -DELETE FROM "infra_file"; -DELETE FROM "infra_job"; -DELETE FROM "infra_job_log"; -DELETE FROM "infra_api_access_log"; -DELETE FROM "infra_api_error_log"; -DELETE FROM "infra_file_config"; -DELETE FROM "infra_data_source_config"; -DELETE FROM "infra_codegen_table"; -DELETE FROM "infra_codegen_column"; diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/sql/create_tables.sql b/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/sql/create_tables.sql deleted file mode 100644 index d4b19c9..0000000 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/sql/create_tables.sql +++ /dev/null @@ -1,216 +0,0 @@ - -CREATE TABLE IF NOT EXISTS "infra_config" ( - "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', - "category" varchar(50) NOT NULL, - "type" tinyint NOT NULL, - "name" varchar(100) NOT NULL DEFAULT '' COMMENT '名字', - "config_key" varchar(100) NOT NULL DEFAULT '', - "value" varchar(500) NOT NULL DEFAULT '', - "visible" bit NOT NULL, - "remark" varchar(500) DEFAULT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") -) COMMENT '参数配置表'; - -CREATE TABLE IF NOT EXISTS "infra_file_config" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar(63) NOT NULL, - "storage" tinyint NOT NULL, - "remark" varchar(255), - "master" bit(1) NOT NULL, - "config" varchar(4096) NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") -) COMMENT '文件配置表'; - -CREATE TABLE IF NOT EXISTS "infra_file" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "config_id" bigint NOT NULL, - "name" varchar(256), - "path" varchar(512), - "url" varchar(1024), - "type" varchar(63) DEFAULT NULL, - "size" bigint NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - "tenant_id" bigint not null default '0', - PRIMARY KEY ("id") -) COMMENT '文件表'; - -CREATE TABLE IF NOT EXISTS "infra_job" ( - "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '任务编号', - "name" varchar(32) NOT NULL COMMENT '任务名称', - "status" tinyint(4) NOT NULL COMMENT '任务状态', - "handler_name" varchar(64) NOT NULL COMMENT '处理器的名字', - "handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数', - "cron_expression" varchar(32) NOT NULL COMMENT 'CRON 表达式', - "retry_count" int(11) NOT NULL DEFAULT '0' COMMENT '重试次数', - "retry_interval" int(11) NOT NULL DEFAULT '0' COMMENT '重试间隔', - "monitor_timeout" int(11) NOT NULL DEFAULT '0' COMMENT '监控超时时间', - "creator" varchar(64) DEFAULT '' COMMENT '创建者', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - "updater" varchar(64) DEFAULT '' COMMENT '更新者', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - "deleted" bit NOT NULL DEFAULT FALSE COMMENT '是否删除', - PRIMARY KEY ("id") -) COMMENT='定时任务表'; - -CREATE TABLE IF NOT EXISTS "infra_job_log" ( - "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '日志编号', - "job_id" bigint(20) NOT NULL COMMENT '任务编号', - "handler_name" varchar(64) NOT NULL COMMENT '处理器的名字', - "handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数', - "execute_index" tinyint(4) NOT NULL DEFAULT '1' COMMENT '第几次执行', - "begin_time" datetime NOT NULL COMMENT '开始执行时间', - "end_time" datetime DEFAULT NULL COMMENT '结束执行时间', - "duration" int(11) DEFAULT NULL COMMENT '执行时长', - "status" tinyint(4) NOT NULL COMMENT '任务状态', - "result" varchar(4000) DEFAULT '' COMMENT '结果数据', - "creator" varchar(64) DEFAULT '' COMMENT '创建者', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - "updater" varchar(64) DEFAULT '' COMMENT '更新者', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - "deleted" bit(1) NOT NULL DEFAULT FALSE COMMENT '是否删除', - PRIMARY KEY ("id") -)COMMENT='定时任务日志表'; - -CREATE TABLE IF NOT EXISTS "infra_api_access_log" ( - "id" bigint not null GENERATED BY DEFAULT AS IDENTITY, - "trace_id" varchar(64) not null default '', - "user_id" bigint not null default '0', - "user_type" tinyint not null default '0', - "application_name" varchar(50) not null, - "request_method" varchar(16) not null default '', - "request_url" varchar(255) not null default '', - "request_params" varchar(8000) not null default '', - "response_body" varchar(8000) not null default '', - "user_ip" varchar(50) not null, - "user_agent" varchar(512) not null, - `operate_module` varchar(50) NOT NULL, - `operate_name` varchar(50) NOT NULL, - `operate_type` bigint(4) NOT NULL DEFAULT '0', - "begin_time" timestamp not null, - "end_time" timestamp not null, - "duration" integer not null, - "result_code" integer not null default '0', - "result_msg" varchar(512) default '', - "creator" varchar(64) default '', - "create_time" timestamp not null default current_timestamp, - "updater" varchar(64) default '', - "update_time" timestamp not null default current_timestamp, - "deleted" bit not null default false, - "tenant_id" bigint not null default '0', - primary key ("id") -) COMMENT 'API 访问日志表'; - -CREATE TABLE IF NOT EXISTS "infra_api_error_log" ( - "id" bigint not null GENERATED BY DEFAULT AS IDENTITY, - "trace_id" varchar(64) not null, - "user_id" bigint not null default '0', - "user_type" tinyint not null default '0', - "application_name" varchar(50) not null, - "request_method" varchar(16) not null, - "request_url" varchar(255) not null, - "request_params" varchar(8000) not null, - "user_ip" varchar(50) not null, - "user_agent" varchar(512) not null, - "exception_time" timestamp not null, - "exception_name" varchar(128) not null default '', - "exception_message" clob not null, - "exception_root_cause_message" clob not null, - "exception_stack_trace" clob not null, - "exception_class_name" varchar(512) not null, - "exception_file_name" varchar(512) not null, - "exception_method_name" varchar(512) not null, - "exception_line_number" integer not null, - "process_status" tinyint not null, - "process_time" timestamp default null, - "process_user_id" bigint default '0', - "creator" varchar(64) default '', - "create_time" timestamp not null default current_timestamp, - "updater" varchar(64) default '', - "update_time" timestamp not null default current_timestamp, - "deleted" bit not null default false, - "tenant_id" bigint not null default '0', - primary key ("id") -) COMMENT '系统异常日志'; - -CREATE TABLE IF NOT EXISTS "infra_data_source_config" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar(100) NOT NULL, - "url" varchar(1024) NOT NULL, - "username" varchar(255) NOT NULL, - "password" varchar(255) NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") -) COMMENT '数据源配置表'; - -CREATE TABLE IF NOT EXISTS "infra_codegen_table" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "data_source_config_id" bigint not null, - "scene" tinyint not null DEFAULT 1, - "table_name" varchar(200) NOT NULL, - "table_comment" varchar(500) NOT NULL, - "remark" varchar(500) NOT NULL, - "module_name" varchar(30) NOT NULL, - "business_name" varchar(30) NOT NULL, - "class_name" varchar(100) NOT NULL, - "class_comment" varchar(50) NOT NULL, - "author" varchar(50) NOT NULL, - "template_type" tinyint not null DEFAULT 1, - "front_type" tinyint not null, - "parent_menu_id" bigint not null, - "master_table_id" bigint not null, - "sub_join_column_id" bigint not null, - "sub_join_many" bit not null, - "tree_parent_column_id" bigint not null, - "tree_name_column_id" bigint not null, - "creator" varchar(64) DEFAULT '', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") -) COMMENT '代码生成表定义表'; - -CREATE TABLE IF NOT EXISTS "infra_codegen_column" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "table_id" bigint not null, - "column_name" varchar(200) NOT NULL, - "data_type" varchar(100) NOT NULL, - "column_comment" varchar(500) NOT NULL, - "nullable" tinyint not null, - "primary_key" tinyint not null, - "ordinal_position" int not null, - "java_type" varchar(32) NOT NULL, - "java_field" varchar(64) NOT NULL, - "dict_type" varchar(200) NOT NULL, - "example" varchar(64) NOT NULL, - "create_operation" bit not null, - "update_operation" bit not null, - "list_operation" bit not null, - "list_operation_condition" varchar(32) not null, - "list_operation_result" bit not null, - "html_type" varchar(32) NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") -) COMMENT '代码生成表字段定义表'; \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java index d2a12b4..6976311 100644 --- a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java @@ -6,4 +6,6 @@ public interface ErrorCodeConstants extends cn.hangtag.module.system.enums.Erro // ========== 产品资料 TODO 补充编号 ========== ErrorCode PRODUCT_INFO_NOT_EXISTS = new ErrorCode(3200, "产品资料 不存在"); + ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(3300, "客户不存在"); + } diff --git a/hangtag-module-oms/hangtag-module-oms-biz/pom.xml b/hangtag-module-oms/hangtag-module-oms-biz/pom.xml index 34cc8e3..1f643c7 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/pom.xml +++ b/hangtag-module-oms/hangtag-module-oms-biz/pom.xml @@ -58,6 +58,12 @@ 2.1.0-jdk8-snapshot compile + + cn.hangtag + hangtag-module-system-biz + 2.1.0-jdk8-snapshot + compile + diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/CustomerController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/CustomerController.java new file mode 100644 index 0000000..e652b11 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/CustomerController.java @@ -0,0 +1,106 @@ +package cn.hangtag.module.oms.controller.admin.customer; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.CommonResult; +import cn.hangtag.framework.common.util.object.BeanUtils; +import static cn.hangtag.framework.common.pojo.CommonResult.success; + +import cn.hangtag.framework.excel.core.util.ExcelUtils; + +import cn.hangtag.framework.apilog.core.annotation.ApiAccessLog; +import static cn.hangtag.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.hangtag.module.oms.controller.admin.customer.vo.*; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerAddressDO; +import cn.hangtag.module.oms.service.customer.CustomerService; + +@Tag(name = "管理后台 - 客户") +@RestController +@RequestMapping("/oms/customer") +@Validated +public class CustomerController { + + @Resource + private CustomerService customerService; + + @PostMapping("/create") + @Operation(summary = "创建客户") + @PreAuthorize("@ss.hasPermission('oms:customer:create')") + public CommonResult createCustomer(@Valid @RequestBody CustomerSaveReqVO createReqVO) { + return success(customerService.createCustomer(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新客户") + @PreAuthorize("@ss.hasPermission('oms:customer:update')") + public CommonResult updateCustomer(@Valid @RequestBody CustomerSaveReqVO updateReqVO) { + customerService.updateCustomer(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除客户") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('oms:customer:delete')") + public CommonResult deleteCustomer(@RequestParam("id") Long id) { + customerService.deleteCustomer(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得客户") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('oms:customer:query')") + public CommonResult getCustomer(@RequestParam("id") Long id) { + CustomerDO customer = customerService.getCustomer(id); + return success(BeanUtils.toBean(customer, CustomerRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得客户分页") + @PreAuthorize("@ss.hasPermission('oms:customer:query')") + public CommonResult> getCustomerPage(@Valid CustomerPageReqVO pageReqVO) { + PageResult pageResult = customerService.getCustomerPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, CustomerRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出客户 Excel") + @PreAuthorize("@ss.hasPermission('oms:customer:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportCustomerExcel(@Valid CustomerPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = customerService.getCustomerPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "客户.xls", "数据", CustomerRespVO.class, + BeanUtils.toBean(list, CustomerRespVO.class)); + } + + // ==================== 子表(用户地址) ==================== + + @GetMapping("/customer-address/list-by-customer-id") + @Operation(summary = "获得用户地址列表") + @Parameter(name = "customerId", description = "关联到客户的ID,外键指向客户表") + @PreAuthorize("@ss.hasPermission('oms:customer:query')") + public CommonResult> getCustomerAddressListByCustomerId(@RequestParam("customerId") Long customerId) { + return success(customerService.getCustomerAddressListByCustomerId(customerId)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerPageReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerPageReqVO.java new file mode 100644 index 0000000..a5819ce --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerPageReqVO.java @@ -0,0 +1,30 @@ +package cn.hangtag.module.oms.controller.admin.customer.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.hangtag.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 客户分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class CustomerPageReqVO extends PageParam { + + @Schema(description = "ID", example = "21486") + private Long id; + + @Schema(description = "名称", example = "赵六") + private String name; + + @Schema(description = "类型", example = "2") + private String type; + + @Schema(description = "数据状态", example = "2") + private String status; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java new file mode 100644 index 0000000..4194669 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java @@ -0,0 +1,58 @@ +package cn.hangtag.module.oms.controller.admin.customer.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.hangtag.framework.excel.core.annotations.DictFormat; +import cn.hangtag.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 客户 Response VO") +@Data +@ExcelIgnoreUnannotated +public class CustomerRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21486") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "名称", example = "赵六") + @ExcelProperty("名称") + private String name; + + @Schema(description = "邮箱") + @ExcelProperty("邮箱") + private String email; + + @Schema(description = "联系人") + @ExcelProperty("联系人") + private String contacts; + + @Schema(description = "联系人手机号") + @ExcelProperty("联系人手机号") + private String phone; + + @Schema(description = "所属地区") + @ExcelProperty("所属地区") + private String district; + + @Schema(description = "类型", example = "2") + @ExcelProperty("类型") + private String type; + + @Schema(description = "数据状态", example = "2") + @ExcelProperty(value = "数据状态", converter = DictConvert.class) + @DictFormat("oms_data_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式") + @ExcelProperty("更新时间") + private LocalDateTime updateTime; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java new file mode 100644 index 0000000..8f87ef3 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java @@ -0,0 +1,45 @@ +package cn.hangtag.module.oms.controller.admin.customer.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerAddressDO; + +@Schema(description = "管理后台 - 客户新增/修改 Request VO") +@Data +public class CustomerSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21486") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "名称", example = "赵六") + private String name; + + @Schema(description = "邮箱") + private String email; + + @Schema(description = "联系人") + private String contacts; + + @Schema(description = "联系人手机号") + private String phone; + + @Schema(description = "所属地区") + private String district; + + @Schema(description = "数据状态", example = "2") + private String status; + + @Schema(description = "类型", example = "2") + private String type; + + @Schema(description = "备注") + private String remarks; + + @Schema(description = "用户地址列表") + private List customerAddresss; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerAddressDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerAddressDO.java new file mode 100644 index 0000000..029bdf8 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerAddressDO.java @@ -0,0 +1,63 @@ +package cn.hangtag.module.oms.dal.dataobject.customer; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; + +/** + * 用户地址 DO + * + * @author wwb + */ +@TableName("oms_customer_address") +@KeySequence("oms_customer_address_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CustomerAddressDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 关联到客户的ID,外键指向客户表 + */ + private Long customerId; + /** + * 收货人姓名 + */ + private String name; + /** + * 联系电话 + */ + private String phone; + /** + * 省份 + */ + private String province; + /** + * 城市 + */ + private String city; + /** + * 区/县 + */ + private String district; + /** + * 详细地址 + */ + private String address; + /** + * 是否为默认地址,0表示否,1表示是 + */ + private Boolean isDefault; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java new file mode 100644 index 0000000..fc0796c --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java @@ -0,0 +1,69 @@ +package cn.hangtag.module.oms.dal.dataobject.customer; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; + +/** + * 客户 DO + * + * @author wwb + */ +@TableName("oms_customer") +@KeySequence("oms_customer_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CustomerDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 系统用户Id + */ + private Long userId; + /** + * 名称 + */ + private String name; + /** + * 邮箱 + */ + private String email; + /** + * 联系人 + */ + private String contacts; + /** + * 联系人手机号 + */ + private String phone; + /** + * 所属地区 + */ + private String district; + /** + * 类型 + */ + private String type; + /** + * 备注 + */ + private String remarks; + /** + * 数据状态 + * + * 枚举 {@link TODO oms_data_status 对应的类} + */ + private String status; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerAddressMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerAddressMapper.java new file mode 100644 index 0000000..b607425 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerAddressMapper.java @@ -0,0 +1,28 @@ +package cn.hangtag.module.oms.dal.mysql.customer; + +import java.util.*; + +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerAddressDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 用户地址 Mapper + * + * @author wwb + */ +@Mapper +public interface CustomerAddressMapper extends BaseMapperX { + + default List selectListByCustomerId(Long customerId) { + return selectList(CustomerAddressDO::getCustomerId, customerId); + } + + default int deleteByCustomerId(Long customerId) { + return delete(CustomerAddressDO::getCustomerId, customerId); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerMapper.java new file mode 100644 index 0000000..c98339f --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerMapper.java @@ -0,0 +1,29 @@ +package cn.hangtag.module.oms.dal.mysql.customer; + +import java.util.*; + +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; +import org.apache.ibatis.annotations.Mapper; +import cn.hangtag.module.oms.controller.admin.customer.vo.*; + +/** + * 客户 Mapper + * + * @author wwb + */ +@Mapper +public interface CustomerMapper extends BaseMapperX { + + default PageResult selectPage(CustomerPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(CustomerDO::getId, reqVO.getId()) + .likeIfPresent(CustomerDO::getName, reqVO.getName()) + .eqIfPresent(CustomerDO::getType, reqVO.getType()) + .eqIfPresent(CustomerDO::getStatus, reqVO.getStatus()) + .orderByDesc(CustomerDO::getId)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerService.java new file mode 100644 index 0000000..5374810 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerService.java @@ -0,0 +1,66 @@ +package cn.hangtag.module.oms.service.customer; + +import java.util.*; +import javax.validation.*; +import cn.hangtag.module.oms.controller.admin.customer.vo.*; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerAddressDO; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; + +/** + * 客户 Service 接口 + * + * @author wwb + */ +public interface CustomerService { + + /** + * 创建客户 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createCustomer(@Valid CustomerSaveReqVO createReqVO); + + /** + * 更新客户 + * + * @param updateReqVO 更新信息 + */ + void updateCustomer(@Valid CustomerSaveReqVO updateReqVO); + + /** + * 删除客户 + * + * @param id 编号 + */ + void deleteCustomer(Long id); + + /** + * 获得客户 + * + * @param id 编号 + * @return 客户 + */ + CustomerDO getCustomer(Long id); + + /** + * 获得客户分页 + * + * @param pageReqVO 分页查询 + * @return 客户分页 + */ + PageResult getCustomerPage(CustomerPageReqVO pageReqVO); + + // ==================== 子表(用户地址) ==================== + + /** + * 获得用户地址列表 + * + * @param customerId 关联到客户的ID,外键指向客户表 + * @return 用户地址列表 + */ + List getCustomerAddressListByCustomerId(Long customerId); + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java new file mode 100644 index 0000000..1108dcc --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java @@ -0,0 +1,130 @@ +package cn.hangtag.module.oms.service.customer; + +import cn.hangtag.module.system.controller.admin.user.vo.user.UserSaveReqVO; +import cn.hangtag.module.system.service.user.AdminUserService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.hangtag.module.oms.controller.admin.customer.vo.*; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerAddressDO; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.util.object.BeanUtils; + +import cn.hangtag.module.oms.dal.mysql.customer.CustomerMapper; +import cn.hangtag.module.oms.dal.mysql.customer.CustomerAddressMapper; + +import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; + +/** + * 客户 Service 实现类 + * + * @author wwb + */ +@Service +@Validated +public class CustomerServiceImpl implements CustomerService { + + @Value("${sys.user.init-password:hangtagyuanma}") + private String userInitPassword; + @Resource + private CustomerMapper customerMapper; + @Resource + private CustomerAddressMapper customerAddressMapper; + + @Resource + private AdminUserService userService; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createCustomer(CustomerSaveReqVO createReqVO) { + // 插入 + CustomerDO customer = BeanUtils.toBean(createReqVO, CustomerDO.class); + + //新增用户账号 + UserSaveReqVO userSaveReqVO = new UserSaveReqVO(); + userSaveReqVO.setUsername(createReqVO.getPhone()); + userSaveReqVO.setNickname(createReqVO.getName()); + userSaveReqVO.setMobile(createReqVO.getPhone()); + userSaveReqVO.setPassword(userInitPassword); + userSaveReqVO.setDeptId(999L); // 固定为用户分类 + Long userId = userService.createUser(userSaveReqVO); + customer.setUserId(userId); + customerMapper.insert(customer); + // 插入子表 + createCustomerAddressList(customer.getId(), createReqVO.getCustomerAddresss()); + // 返回 + return customer.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateCustomer(CustomerSaveReqVO updateReqVO) { + // 校验存在 + validateCustomerExists(updateReqVO.getId()); + // 更新 + CustomerDO updateObj = BeanUtils.toBean(updateReqVO, CustomerDO.class); + customerMapper.updateById(updateObj); + + // 更新子表 + updateCustomerAddressList(updateReqVO.getId(), updateReqVO.getCustomerAddresss()); + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteCustomer(Long id) { + // 校验存在 + validateCustomerExists(id); + // 删除 + customerMapper.deleteById(id); + + // 删除子表 + deleteCustomerAddressByCustomerId(id); + } + + private void validateCustomerExists(Long id) { + if (customerMapper.selectById(id) == null) { + throw exception(CUSTOMER_NOT_EXISTS); + } + } + + @Override + public CustomerDO getCustomer(Long id) { + return customerMapper.selectById(id); + } + + @Override + public PageResult getCustomerPage(CustomerPageReqVO pageReqVO) { + return customerMapper.selectPage(pageReqVO); + } + + // ==================== 子表(用户地址) ==================== + + @Override + public List getCustomerAddressListByCustomerId(Long customerId) { + return customerAddressMapper.selectListByCustomerId(customerId); + } + + private void createCustomerAddressList(Long customerId, List list) { + list.forEach(o -> o.setCustomerId(customerId)); + customerAddressMapper.insertBatch(list); + } + + private void updateCustomerAddressList(Long customerId, List list) { + deleteCustomerAddressByCustomerId(customerId); + list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + createCustomerAddressList(customerId, list); + } + + private void deleteCustomerAddressByCustomerId(Long customerId) { + customerAddressMapper.deleteByCustomerId(customerId); + } + +} \ No newline at end of file diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/xml/InfraStudentMapper b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/customer/CustomerMapper.xml similarity index 85% rename from hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/xml/InfraStudentMapper rename to hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/customer/CustomerMapper.xml index 12bfc1f..c7f8ab0 100644 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue2_one/xml/InfraStudentMapper +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/customer/CustomerMapper.xml @@ -1,6 +1,6 @@ - + + + + + + + + + + diff --git a/hangtag-ui/src/views/oms/customer/components/CustomerAddressForm.vue b/hangtag-ui/src/views/oms/customer/components/CustomerAddressForm.vue new file mode 100644 index 0000000..048a5f4 --- /dev/null +++ b/hangtag-ui/src/views/oms/customer/components/CustomerAddressForm.vue @@ -0,0 +1,167 @@ + + diff --git a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/index b/hangtag-ui/src/views/oms/customer/index.vue similarity index 56% rename from hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/index rename to hangtag-ui/src/views/oms/customer/index.vue index b115b13..6c13192 100644 --- a/hangtag-module-infra/hangtag-module-infra-biz/target/test-classes/codegen/windows10/vue3_master_normal/vue/index +++ b/hangtag-ui/src/views/oms/customer/index.vue @@ -2,122 +2,115 @@ - + - - + - + + + + + + - - - - - - - - 搜索 重置 + + + + 新增 + + 导出 - - + + + + 删除 + + + - - - - - - + + + + + + + + + + - - - - - - + \ No newline at end of file + diff --git a/hangtag-ui/src/views/system/user/DeptTree.vue b/hangtag-ui/src/views/system/user/DeptTree.vue index ab8ba06..2547a35 100644 --- a/hangtag-ui/src/views/system/user/DeptTree.vue +++ b/hangtag-ui/src/views/system/user/DeptTree.vue @@ -1,6 +1,6 @@