From f5a0a1b00de177d0790feed260e5d3dd07b88b3b Mon Sep 17 00:00:00 2001 From: Y1NanPing <735289578@qq.com> Date: Fri, 18 Jul 2025 16:53:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/common-log/pom.xml | 38 +++ .../tingshu/common/annotation/Log.java | 39 +++ .../tingshu/common/aspect/LogAspect.java | 184 ++++++++++ .../tingshu/common/enums/BusinessType.java | 52 +++ .../tingshu/common/enums/OperatorType.java | 21 ++ common/common-util/pom.xml | 47 +++ .../atguigu/tingshu/common/result/Result.java | 85 +++++ .../tingshu/common/result/ResultCodeEnum.java | 59 ++++ .../common/util/AuthContextHolder.java | 22 ++ .../common/util/Decimal2Serializer.java | 31 ++ .../tingshu/common/util/ExceptionUtil.java | 38 +++ .../tingshu/common/util/HttpClientUtils.java | 318 ++++++++++++++++++ .../atguigu/tingshu/common/util/IpUtil.java | 82 +++++ .../com/atguigu/tingshu/common/util/MD5.java | 39 +++ .../tingshu/common/util/MongoUtil.java | 38 +++ .../tingshu/common/util/RandomUtil.java | 65 ++++ .../tingshu/common/util/ResponseUtil.java | 23 ++ .../common/util/SensitiveWordFilterUtil.java | 191 +++++++++++ .../tingshu/common/util/UploadFileUtil.java | 31 ++ .../tingshu/common/result/Result.class | Bin 0 -> 5530 bytes .../common/result/ResultCodeEnum.class | Bin 0 -> 4365 bytes .../common/util/AuthContextHolder.class | Bin 0 -> 973 bytes .../common/util/Decimal2Serializer.class | Bin 0 -> 1354 bytes .../tingshu/common/util/ExceptionUtil.class | Bin 0 -> 1147 bytes .../atguigu/tingshu/common/util/IpUtil.class | Bin 0 -> 2775 bytes .../com/atguigu/tingshu/common/util/MD5.class | Bin 0 -> 2422 bytes .../util/MongoUtil$MongoCollectionEnum.class | Bin 0 -> 2272 bytes .../tingshu/common/util/MongoUtil.class | Bin 0 -> 1302 bytes .../tingshu/common/util/RandomUtil.class | Bin 0 -> 2645 bytes .../tingshu/common/util/ResponseUtil.class | Bin 0 -> 1445 bytes .../common/util/SensitiveWordFilterUtil.class | Bin 0 -> 5773 bytes .../tingshu/common/util/UploadFileUtil.class | Bin 0 -> 1953 bytes common/pom.xml | 22 ++ common/rabbit-util/pom.xml | 48 +++ .../RabbitInitConfigApplicationListener.java | 139 ++++++++ .../common/rabbit/constant/MqConst.java | 80 +++++ .../rabbit/entity/GuiguCorrelationData.java | 21 ++ .../common/rabbit/service/RabbitService.java | 74 ++++ .../RabbitInitConfigApplicationListener.class | Bin 0 -> 7694 bytes .../common/rabbit/constant/MqConst.class | Bin 0 -> 2714 bytes .../rabbit/entity/GuiguCorrelationData.class | Bin 0 -> 3697 bytes .../common/rabbit/service/RabbitService.class | Bin 0 -> 4481 bytes common/service-util/pom.xml | 92 +++++ .../common/config/knife4j/Knife4jConfig.java | 49 +++ .../config/mybatisPlus/MybatisPlusConfig.java | 32 ++ .../common/config/redis/RedisConfig.java | 39 +++ .../common/constant/RedisConstant.java | 72 ++++ .../common/constant/SystemConstant.java | 74 ++++ .../common/execption/GuiguException.java | 45 +++ .../handler/GlobalExceptionHandler.java | 83 +++++ .../common/interceptor/FeignInterceptor.java | 25 ++ .../common/config/knife4j/Knife4jConfig.class | Bin 0 -> 2511 bytes .../mybatisPlus/MybatisPlusConfig.class | Bin 0 -> 1424 bytes .../common/config/redis/RedisConfig.class | Bin 0 -> 2190 bytes .../common/constant/RedisConstant.class | Bin 0 -> 1683 bytes .../common/constant/SystemConstant.class | Bin 0 -> 2328 bytes .../common/execption/GuiguException.class | Bin 0 -> 2744 bytes .../handler/GlobalExceptionHandler.class | Bin 0 -> 5594 bytes .../common/interceptor/FeignInterceptor.class | Bin 0 -> 1657 bytes model/pom.xml | 58 ++++ .../tingshu/model/account/RechargeInfo.java | 38 +++ .../tingshu/model/account/UserAccount.java | 42 +++ .../model/account/UserAccountDetail.java | 38 +++ .../model/album/AlbumAttributeValue.java | 35 ++ .../tingshu/model/album/AlbumInfo.java | 106 ++++++ .../tingshu/model/album/AlbumStat.java | 28 ++ .../tingshu/model/album/BaseAttribute.java | 29 ++ .../model/album/BaseAttributeValue.java | 24 ++ .../tingshu/model/album/BaseCategory1.java | 24 ++ .../tingshu/model/album/BaseCategory2.java | 28 ++ .../tingshu/model/album/BaseCategory3.java | 31 ++ .../tingshu/model/album/BaseCategoryView.java | 50 +++ .../atguigu/tingshu/model/album/BaseDic.java | 28 ++ .../tingshu/model/album/TrackInfo.java | 81 +++++ .../tingshu/model/album/TrackStat.java | 28 ++ .../tingshu/model/base/BaseEntity.java | 36 ++ .../tingshu/model/comment/Comment.java | 55 +++ .../tingshu/model/comment/CommentPraise.java | 39 +++ .../tingshu/model/dispatch/XxlJobConfig.java | 44 +++ .../tingshu/model/dispatch/XxlJobLog.java | 32 ++ .../atguigu/tingshu/model/live/FromUser.java | 14 + .../atguigu/tingshu/model/live/LiveRoom.java | 74 ++++ .../atguigu/tingshu/model/live/LiveTag.java | 28 ++ .../atguigu/tingshu/model/live/SocketMsg.java | 49 +++ .../tingshu/model/order/OrderDerate.java | 34 ++ .../tingshu/model/order/OrderDetail.java | 38 +++ .../tingshu/model/order/OrderInfo.java | 69 ++++ .../tingshu/model/payment/PaymentInfo.java | 59 ++++ .../tingshu/model/search/AlbumInfoIndex.java | 89 +++++ .../model/search/AttributeValueIndex.java | 18 + .../tingshu/model/search/SuggestIndex.java | 32 ++ .../atguigu/tingshu/model/system/SysDept.java | 50 +++ .../tingshu/model/system/SysLoginLog.java | 38 +++ .../atguigu/tingshu/model/system/SysMenu.java | 61 ++++ .../tingshu/model/system/SysOperLog.java | 74 ++++ .../atguigu/tingshu/model/system/SysPost.java | 32 ++ .../atguigu/tingshu/model/system/SysRole.java | 31 ++ .../tingshu/model/system/SysRoleMenu.java | 25 ++ .../atguigu/tingshu/model/system/SysUser.java | 66 ++++ .../tingshu/model/system/SysUserRole.java | 24 ++ .../tingshu/model/user/UserCertification.java | 40 +++ .../tingshu/model/user/UserCollect.java | 28 ++ .../atguigu/tingshu/model/user/UserInfo.java | 70 ++++ .../tingshu/model/user/UserListenProcess.java | 41 +++ .../tingshu/model/user/UserPaidAlbum.java | 28 ++ .../tingshu/model/user/UserPaidTrack.java | 32 ++ .../atguigu/tingshu/model/user/UserStat.java | 28 ++ .../tingshu/model/user/UserSubscribe.java | 28 ++ .../tingshu/model/user/UserVipService.java | 42 +++ .../tingshu/model/user/VipServiceConfig.java | 46 +++ .../tingshu/query/album/AlbumInfoQuery.java | 18 + .../tingshu/query/album/TrackInfoQuery.java | 18 + .../tingshu/query/order/OrderInfoQuery.java | 15 + .../tingshu/query/search/AlbumIndexQuery.java | 33 ++ .../tingshu/query/user/UserInfoQuery.java | 21 ++ .../tingshu/validation/NotEmptyPaid.java | 19 ++ .../validation/NotEmptyPaidValidator.java | 16 + .../tingshu/vo/account/AccountDeductVo.java | 24 ++ .../vo/account/AccountLockResultVo.java | 21 ++ .../tingshu/vo/account/AccountLockVo.java | 24 ++ .../tingshu/vo/account/RechargeInfoVo.java | 18 + .../vo/album/AlbumAttributeValueVo.java | 19 ++ .../atguigu/tingshu/vo/album/AlbumInfoVo.java | 91 +++++ .../atguigu/tingshu/vo/album/AlbumListVo.java | 40 +++ .../tingshu/vo/album/AlbumStatMqVo.java | 22 ++ .../atguigu/tingshu/vo/album/AlbumStatVo.java | 24 ++ .../tingshu/vo/album/AlbumTrackListVo.java | 37 ++ .../atguigu/tingshu/vo/album/TrackInfoVo.java | 40 +++ .../atguigu/tingshu/vo/album/TrackListVo.java | 45 +++ .../tingshu/vo/album/TrackMediaInfoVo.java | 21 ++ .../tingshu/vo/album/TrackStatMqVo.java | 25 ++ .../atguigu/tingshu/vo/album/TrackStatVo.java | 23 ++ .../com/atguigu/tingshu/vo/base/PageVo.java | 53 +++ .../atguigu/tingshu/vo/comment/CommentVo.java | 28 ++ .../atguigu/tingshu/vo/live/LiveRoomVo.java | 34 ++ .../tingshu/vo/live/TencentLiveAddressVo.java | 13 + .../tingshu/vo/order/OrderDerateVo.java | 24 ++ .../tingshu/vo/order/OrderDetailVo.java | 44 +++ .../atguigu/tingshu/vo/order/OrderInfoVo.java | 75 +++++ .../tingshu/vo/order/TradeResponeVo.java | 37 ++ .../com/atguigu/tingshu/vo/order/TradeVo.java | 23 ++ .../atguigu/tingshu/vo/payment/PaymentVo.java | 26 ++ .../tingshu/vo/search/AlbumInfoIndexVo.java | 55 +++ .../vo/search/AlbumSearchResponseVo.java | 21 ++ .../tingshu/vo/system/AssginMenuVo.java | 19 ++ .../tingshu/vo/system/AssginRoleVo.java | 19 ++ .../atguigu/tingshu/vo/system/LoginVo.java | 34 ++ .../com/atguigu/tingshu/vo/system/MetaVo.java | 33 ++ .../atguigu/tingshu/vo/system/RouterVo.java | 50 +++ .../tingshu/vo/system/SysLoginLogQueryVo.java | 16 + .../tingshu/vo/system/SysOperLogQueryVo.java | 15 + .../tingshu/vo/system/SysPostQueryVo.java | 19 ++ .../tingshu/vo/system/SysRoleQueryVo.java | 29 ++ .../tingshu/vo/system/SysUserQueryVo.java | 30 ++ .../com/atguigu/tingshu/vo/user/LoginVo.java | 15 + .../tingshu/vo/user/UserCollectVo.java | 27 ++ .../atguigu/tingshu/vo/user/UserInfoVo.java | 30 ++ .../vo/user/UserListenProcessListVo.java | 39 +++ .../tingshu/vo/user/UserListenProcessVo.java | 23 ++ .../tingshu/vo/user/UserPaidRecordVo.java | 14 + .../tingshu/vo/user/UserSubscribeVo.java | 30 ++ .../atguigu/tingshu/vo/user/UserUpdateVo.java | 15 + .../tingshu/model/account/RechargeInfo.class | Bin 0 -> 4502 bytes .../tingshu/model/account/UserAccount.class | Bin 0 -> 5039 bytes .../model/account/UserAccountDetail.class | Bin 0 -> 4364 bytes .../model/album/AlbumAttributeValue.class | Bin 0 -> 4383 bytes .../tingshu/model/album/AlbumInfo.class | Bin 0 -> 15026 bytes .../tingshu/model/album/AlbumStat.class | Bin 0 -> 3310 bytes .../tingshu/model/album/BaseAttribute.class | Bin 0 -> 3764 bytes .../model/album/BaseAttributeValue.class | Bin 0 -> 2851 bytes .../tingshu/model/album/BaseCategory1.class | Bin 0 -> 2755 bytes .../tingshu/model/album/BaseCategory2.class | Bin 0 -> 3335 bytes .../tingshu/model/album/BaseCategory3.class | Bin 0 -> 3820 bytes .../model/album/BaseCategoryView.class | Bin 0 -> 5036 bytes .../atguigu/tingshu/model/album/BaseDic.class | Bin 0 -> 3136 bytes .../tingshu/model/album/TrackInfo.class | Bin 0 -> 10655 bytes .../tingshu/model/album/TrackStat.class | Bin 0 -> 3310 bytes .../tingshu/model/base/BaseEntity.class | Bin 0 -> 4563 bytes .../tingshu/model/comment/Comment.class | Bin 0 -> 8561 bytes .../tingshu/model/comment/CommentPraise.class | Bin 0 -> 4046 bytes .../tingshu/model/dispatch/XxlJobConfig.class | Bin 0 -> 5408 bytes .../tingshu/model/dispatch/XxlJobLog.class | Bin 0 -> 3811 bytes .../atguigu/tingshu/model/live/FromUser.class | Bin 0 -> 2726 bytes .../atguigu/tingshu/model/live/LiveRoom.class | Bin 0 -> 9187 bytes .../atguigu/tingshu/model/live/LiveTag.class | Bin 0 -> 3205 bytes .../model/live/SocketMsg$MsgTypeEnum.class | Bin 0 -> 2178 bytes .../tingshu/model/live/SocketMsg.class | Bin 0 -> 3972 bytes .../tingshu/model/order/OrderDerate.class | Bin 0 -> 3906 bytes .../tingshu/model/order/OrderDetail.class | Bin 0 -> 4351 bytes .../tingshu/model/order/OrderInfo.class | Bin 0 -> 9537 bytes .../tingshu/model/payment/PaymentInfo.class | Bin 0 -> 7222 bytes .../tingshu/model/search/AlbumInfoIndex.class | Bin 0 -> 12350 bytes .../model/search/AttributeValueIndex.class | Bin 0 -> 2610 bytes .../tingshu/model/search/SuggestIndex.class | Bin 0 -> 4604 bytes .../tingshu/model/system/SysDept.class | Bin 0 -> 6091 bytes .../tingshu/model/system/SysLoginLog.class | Bin 0 -> 4277 bytes .../tingshu/model/system/SysMenu.class | Bin 0 -> 7349 bytes .../tingshu/model/system/SysOperLog.class | Bin 0 -> 9276 bytes .../tingshu/model/system/SysPost.class | Bin 0 -> 3702 bytes .../tingshu/model/system/SysRole.class | Bin 0 -> 3176 bytes .../tingshu/model/system/SysRoleMenu.class | Bin 0 -> 2694 bytes .../tingshu/model/system/SysUser.class | Bin 0 -> 8794 bytes .../tingshu/model/system/SysUserRole.class | Bin 0 -> 2694 bytes .../model/user/UserCertification.class | Bin 0 -> 4906 bytes .../tingshu/model/user/UserCollect.class | Bin 0 -> 3536 bytes .../atguigu/tingshu/model/user/UserInfo.class | Bin 0 -> 8655 bytes .../model/user/UserListenProcess.class | Bin 0 -> 5914 bytes .../tingshu/model/user/UserPaidAlbum.class | Bin 0 -> 3236 bytes .../tingshu/model/user/UserPaidTrack.class | Bin 0 -> 3721 bytes .../atguigu/tingshu/model/user/UserStat.class | Bin 0 -> 3250 bytes .../tingshu/model/user/UserSubscribe.class | Bin 0 -> 3544 bytes .../tingshu/model/user/UserVipService.class | Bin 0 -> 5013 bytes .../tingshu/model/user/VipServiceConfig.class | Bin 0 -> 5474 bytes .../tingshu/query/album/AlbumInfoQuery.class | Bin 0 -> 2946 bytes .../tingshu/query/album/TrackInfoQuery.class | Bin 0 -> 2946 bytes .../tingshu/query/order/OrderInfoQuery.class | Bin 0 -> 2513 bytes .../query/search/AlbumIndexQuery.class | Bin 0 -> 5970 bytes .../tingshu/query/user/UserInfoQuery.class | Bin 0 -> 3424 bytes .../tingshu/validation/NotEmptyPaid.class | Bin 0 -> 864 bytes .../validation/NotEmptyPaidValidator.class | Bin 0 -> 1267 bytes .../tingshu/vo/account/AccountDeductVo.class | Bin 0 -> 3497 bytes .../vo/account/AccountLockResultVo.class | Bin 0 -> 3051 bytes .../tingshu/vo/account/AccountLockVo.class | Bin 0 -> 3489 bytes .../tingshu/vo/account/RechargeInfoVo.class | Bin 0 -> 2527 bytes .../vo/album/AlbumAttributeValueVo.class | Bin 0 -> 2681 bytes .../tingshu/vo/album/AlbumInfoVo.class | Bin 0 -> 12536 bytes .../tingshu/vo/album/AlbumListVo.class | Bin 0 -> 6794 bytes .../tingshu/vo/album/AlbumStatMqVo.class | Bin 0 -> 3514 bytes .../tingshu/vo/album/AlbumStatVo.class | Bin 0 -> 4066 bytes .../tingshu/vo/album/AlbumTrackListVo.class | Bin 0 -> 6039 bytes .../tingshu/vo/album/TrackInfoVo.class | Bin 0 -> 6094 bytes .../tingshu/vo/album/TrackListVo.class | Bin 0 -> 7326 bytes .../tingshu/vo/album/TrackMediaInfoVo.class | Bin 0 -> 3515 bytes .../tingshu/vo/album/TrackStatMqVo.class | Bin 0 -> 3985 bytes .../tingshu/vo/album/TrackStatVo.class | Bin 0 -> 3546 bytes .../vo/base/PageVo$PageVoBuilder.class | Bin 0 -> 2757 bytes .../com/atguigu/tingshu/vo/base/PageVo.class | Bin 0 -> 6069 bytes .../tingshu/vo/comment/CommentVo.class | Bin 0 -> 4081 bytes .../atguigu/tingshu/vo/live/LiveRoomVo.class | Bin 0 -> 4893 bytes .../vo/live/TencentLiveAddressVo.class | Bin 0 -> 3739 bytes .../tingshu/vo/order/OrderDerateVo.class | Bin 0 -> 3199 bytes .../tingshu/vo/order/OrderDetailVo.class | Bin 0 -> 4317 bytes .../tingshu/vo/order/OrderInfoVo.class | Bin 0 -> 8957 bytes .../tingshu/vo/order/TradeResponeVo.class | Bin 0 -> 6054 bytes .../atguigu/tingshu/vo/order/TradeVo.class | Bin 0 -> 3620 bytes .../tingshu/vo/payment/PaymentVo.class | Bin 0 -> 3887 bytes .../tingshu/vo/search/AlbumInfoIndexVo.class | Bin 0 -> 8579 bytes .../vo/search/AlbumSearchResponseVo.class | Bin 0 -> 4082 bytes .../tingshu/vo/system/AssginMenuVo.class | Bin 0 -> 2700 bytes .../tingshu/vo/system/AssginRoleVo.class | Bin 0 -> 2700 bytes .../atguigu/tingshu/vo/system/LoginVo.class | Bin 0 -> 803 bytes .../atguigu/tingshu/vo/system/MetaVo.class | Bin 0 -> 2338 bytes .../atguigu/tingshu/vo/system/RouterVo.class | Bin 0 -> 4378 bytes .../vo/system/SysLoginLogQueryVo.class | Bin 0 -> 2916 bytes .../tingshu/vo/system/SysOperLogQueryVo.class | Bin 0 -> 3216 bytes .../tingshu/vo/system/SysPostQueryVo.class | Bin 0 -> 2725 bytes .../tingshu/vo/system/SysRoleQueryVo.class | Bin 0 -> 711 bytes .../tingshu/vo/system/SysUserQueryVo.class | Bin 0 -> 4234 bytes .../com/atguigu/tingshu/vo/user/LoginVo.class | Bin 0 -> 2359 bytes .../tingshu/vo/user/UserCollectVo.class | Bin 0 -> 4045 bytes .../atguigu/tingshu/vo/user/UserInfoVo.class | Bin 0 -> 4573 bytes .../vo/user/UserListenProcessListVo.class | Bin 0 -> 6298 bytes .../tingshu/vo/user/UserListenProcessVo.class | Bin 0 -> 3327 bytes .../tingshu/vo/user/UserPaidRecordVo.class | Bin 0 -> 3453 bytes .../tingshu/vo/user/UserSubscribeVo.class | Bin 0 -> 4745 bytes .../tingshu/vo/user/UserUpdateVo.class | Bin 0 -> 2250 bytes pom.xml | 183 ++++++++++ server-gateway/pom.xml | 71 ++++ .../tingshu/ServerGatewayApplication.java | 17 + .../tingshu/gateway/config/CorsConfig.java | 37 ++ .../gateway/filter/AuthGlobalFilter.java | 31 ++ .../src/main/resources/bootstrap.properties | 8 + .../target/classes/bootstrap.properties | 8 + .../tingshu/ServerGatewayApplication.class | Bin 0 -> 902 bytes .../tingshu/gateway/config/CorsConfig.class | Bin 0 -> 1523 bytes .../gateway/filter/AuthGlobalFilter.class | Bin 0 -> 1548 bytes service-client/pom.xml | 50 +++ service-client/service-account-client/pom.xml | 15 + .../tingshu/account/AccountFeignClient.java | 16 + .../impl/AccountDegradeFeignClient.java | 10 + .../tingshu/account/AccountFeignClient.class | Bin 0 -> 347 bytes .../impl/AccountDegradeFeignClient.class | Bin 0 -> 505 bytes service-client/service-album-client/pom.xml | 15 + .../tingshu/album/AlbumFeignClient.java | 16 + .../album/impl/AlbumDegradeFeignClient.java | 11 + .../tingshu/album/AlbumFeignClient.class | Bin 0 -> 335 bytes .../album/impl/AlbumDegradeFeignClient.class | Bin 0 -> 491 bytes service-client/service-order-client/pom.xml | 15 + .../order/client/OrderFeignClient.java | 17 + .../client/impl/OrderDegradeFeignClient.java | 10 + .../order/client/OrderFeignClient.class | Bin 0 -> 349 bytes .../client/impl/OrderDegradeFeignClient.class | Bin 0 -> 512 bytes service-client/service-search-client/pom.xml | 20 ++ .../search/client/SearchFeignClient.java | 17 + .../client/impl/SearchDegradeFeignClient.java | 15 + .../search/client/SearchFeignClient.class | Bin 0 -> 355 bytes .../impl/SearchDegradeFeignClient.class | Bin 0 -> 713 bytes service-client/service-user-client/pom.xml | 15 + .../tingshu/user/client/UserFeignClient.java | 16 + .../client/impl/UserDegradeFeignClient.java | 10 + .../tingshu/user/client/UserFeignClient.class | Bin 0 -> 343 bytes .../client/impl/UserDegradeFeignClient.class | Bin 0 -> 505 bytes service/pom.xml | 63 ++++ service/service-account/pom.xml | 37 ++ .../tingshu/ServiceAccountApplication.java | 16 + .../api/RechargeInfoApiController.java | 19 ++ .../account/api/UserAccountApiController.java | 19 ++ .../account/mapper/RechargeInfoMapper.java | 11 + .../mapper/UserAccountDetailMapper.java | 10 + .../account/mapper/UserAccountMapper.java | 10 + .../account/service/RechargeInfoService.java | 8 + .../account/service/UserAccountService.java | 9 + .../service/impl/RechargeInfoServiceImpl.java | 17 + .../service/impl/UserAccountServiceImpl.java | 19 ++ .../src/main/resources/bootstrap.properties | 8 + .../src/main/resources/logback-spring.xml | 65 ++++ .../mapper/UserAccountDetailMapper.xml | 15 + .../resources/mapper/UserAccountMapper.xml | 16 + .../target/classes/bootstrap.properties | 8 + .../tingshu/ServiceAccountApplication.class | Bin 0 -> 905 bytes .../api/RechargeInfoApiController.class | Bin 0 -> 791 bytes .../api/UserAccountApiController.class | Bin 0 -> 792 bytes .../account/mapper/RechargeInfoMapper.class | Bin 0 -> 428 bytes .../mapper/UserAccountDetailMapper.class | Bin 0 -> 443 bytes .../account/mapper/UserAccountMapper.class | Bin 0 -> 425 bytes .../account/service/RechargeInfoService.class | Bin 0 -> 358 bytes .../account/service/UserAccountService.class | Bin 0 -> 355 bytes .../impl/RechargeInfoServiceImpl.class | Bin 0 -> 969 bytes .../service/impl/UserAccountServiceImpl.class | Bin 0 -> 1154 bytes .../target/classes/logback-spring.xml | 65 ++++ .../mapper/UserAccountDetailMapper.xml | 15 + .../classes/mapper/UserAccountMapper.xml | 16 + service/service-album/pom.xml | 60 ++++ .../tingshu/ServiceAlbumApplication.java | 17 + .../album/api/AlbumInfoApiController.java | 20 ++ .../album/api/BaseCategoryApiController.java | 42 +++ .../album/api/FileUploadApiController.java | 14 + .../album/api/TrackInfoApiController.java | 19 ++ .../album/config/MinioConstantProperties.java | 16 + .../album/config/VodConstantProperties.java | 21 ++ .../mapper/AlbumAttributeValueMapper.java | 10 + .../tingshu/album/mapper/AlbumInfoMapper.java | 10 + .../tingshu/album/mapper/AlbumStatMapper.java | 11 + .../album/mapper/BaseAttributeMapper.java | 15 + .../mapper/BaseAttributeValueMapper.java | 11 + .../album/mapper/BaseCategory1Mapper.java | 11 + .../album/mapper/BaseCategory2Mapper.java | 10 + .../album/mapper/BaseCategory3Mapper.java | 11 + .../album/mapper/BaseCategoryViewMapper.java | 10 + .../tingshu/album/mapper/TrackInfoMapper.java | 11 + .../tingshu/album/mapper/TrackStatMapper.java | 11 + .../album/service/AlbumInfoService.java | 9 + .../album/service/BaseCategoryService.java | 17 + .../album/service/TrackInfoService.java | 8 + .../tingshu/album/service/VodService.java | 5 + .../service/impl/AlbumInfoServiceImpl.java | 18 + .../service/impl/BaseCategoryServiceImpl.java | 106 ++++++ .../service/impl/TrackInfoServiceImpl.java | 19 ++ .../album/service/impl/VodServiceImpl.java | 15 + .../src/main/resources/bootstrap.properties | 8 + .../src/main/resources/logback-spring.xml | 65 ++++ .../main/resources/mapper/AlbumInfoMapper.xml | 10 + .../resources/mapper/BaseAttributeMapper.xml | 29 ++ .../main/resources/mapper/TrackInfoMapper.xml | 9 + .../target/classes/bootstrap.properties | 8 + .../tingshu/ServiceAlbumApplication.class | Bin 0 -> 899 bytes .../album/api/AlbumInfoApiController.class | Bin 0 -> 768 bytes .../album/api/BaseCategoryApiController.class | Bin 0 -> 2396 bytes .../album/api/FileUploadApiController.class | Bin 0 -> 624 bytes .../album/api/TrackInfoApiController.class | Bin 0 -> 768 bytes .../config/MinioConstantProperties.class | Bin 0 -> 3420 bytes .../album/config/VodConstantProperties.class | Bin 0 -> 4786 bytes .../mapper/AlbumAttributeValueMapper.class | Bin 0 -> 445 bytes .../album/mapper/AlbumInfoMapper.class | Bin 0 -> 415 bytes .../album/mapper/AlbumStatMapper.class | Bin 0 -> 415 bytes .../album/mapper/BaseAttributeMapper.class | Bin 0 -> 729 bytes .../mapper/BaseAttributeValueMapper.class | Bin 0 -> 442 bytes .../album/mapper/BaseCategory1Mapper.class | Bin 0 -> 427 bytes .../album/mapper/BaseCategory2Mapper.class | Bin 0 -> 427 bytes .../album/mapper/BaseCategory3Mapper.class | Bin 0 -> 427 bytes .../album/mapper/BaseCategoryViewMapper.class | Bin 0 -> 436 bytes .../album/mapper/TrackInfoMapper.class | Bin 0 -> 415 bytes .../album/mapper/TrackStatMapper.class | Bin 0 -> 415 bytes .../album/service/AlbumInfoService.class | Bin 0 -> 345 bytes .../album/service/BaseCategoryService.class | Bin 0 -> 669 bytes .../album/service/TrackInfoService.class | Bin 0 -> 345 bytes .../tingshu/album/service/VodService.class | Bin 0 -> 135 bytes .../service/impl/AlbumInfoServiceImpl.class | Bin 0 -> 1122 bytes .../impl/BaseCategoryServiceImpl.class | Bin 0 -> 5736 bytes .../service/impl/TrackInfoServiceImpl.class | Bin 0 -> 1122 bytes .../album/service/impl/VodServiceImpl.class | Bin 0 -> 642 bytes .../target/classes/logback-spring.xml | 65 ++++ .../target/classes/mapper/AlbumInfoMapper.xml | 10 + .../classes/mapper/BaseAttributeMapper.xml | 29 ++ .../target/classes/mapper/TrackInfoMapper.xml | 9 + service/service-dispatch/pom.xml | 51 +++ .../tingshu/ServiceDispatchApplication.java | 19 ++ .../tingshu/dispatch/job/DispatchHandler.java | 10 + .../src/main/resources/bootstrap.properties | 8 + .../src/main/resources/logback-spring.xml | 65 ++++ .../target/classes/bootstrap.properties | 8 + .../tingshu/ServiceDispatchApplication.class | Bin 0 -> 1002 bytes .../dispatch/job/DispatchHandler.class | Bin 0 -> 615 bytes .../target/classes/logback-spring.xml | 65 ++++ service/service-order/pom.xml | 58 ++++ .../tingshu/ServiceOrderApplication.java | 16 + .../order/api/OrderInfoApiController.java | 20 ++ .../tingshu/order/helper/SignHelper.java | 80 +++++ .../order/mapper/OrderDerateMapper.java | 11 + .../order/mapper/OrderDetailMapper.java | 10 + .../tingshu/order/mapper/OrderInfoMapper.java | 10 + .../order/service/OrderInfoService.java | 9 + .../service/impl/OrderInfoServiceImpl.java | 20 ++ .../src/main/resources/bootstrap.properties | 8 + .../src/main/resources/logback-spring.xml | 65 ++++ .../main/resources/mapper/OrderInfoMapper.xml | 10 + .../target/classes/bootstrap.properties | 8 + .../tingshu/ServiceOrderApplication.class | Bin 0 -> 899 bytes .../order/api/OrderInfoApiController.class | Bin 0 -> 768 bytes .../tingshu/order/helper/SignHelper.class | Bin 0 -> 4026 bytes .../order/mapper/OrderDerateMapper.class | Bin 0 -> 421 bytes .../order/mapper/OrderDetailMapper.class | Bin 0 -> 421 bytes .../order/mapper/OrderInfoMapper.class | Bin 0 -> 415 bytes .../order/service/OrderInfoService.class | Bin 0 -> 345 bytes .../service/impl/OrderInfoServiceImpl.class | Bin 0 -> 1122 bytes .../target/classes/logback-spring.xml | 65 ++++ .../target/classes/mapper/OrderInfoMapper.xml | 10 + service/service-payment/pom.xml | 47 +++ .../tingshu/ServicePaymentApplication.java | 17 + .../payment/api/WxPayApiController.java | 19 ++ .../tingshu/payment/config/WxPayV3Config.java | 36 ++ .../payment/mapper/PaymentInfoMapper.java | 10 + .../payment/service/PaymentInfoService.java | 8 + .../tingshu/payment/service/WxPayService.java | 5 + .../service/impl/PaymentInfoServiceImpl.java | 13 + .../service/impl/WxPayServiceImpl.java | 16 + .../tingshu/payment/util/HttpClient.java | 169 ++++++++++ .../atguigu/tingshu/payment/util/PayUtil.java | 34 ++ .../src/main/resources/bootstrap.properties | 8 + .../src/main/resources/logback-spring.xml | 65 ++++ .../target/classes/bootstrap.properties | 8 + .../tingshu/ServicePaymentApplication.class | Bin 0 -> 905 bytes .../payment/api/WxPayApiController.class | Bin 0 -> 956 bytes .../payment/config/WxPayV3Config.class | Bin 0 -> 5043 bytes .../payment/mapper/PaymentInfoMapper.class | Bin 0 -> 425 bytes .../payment/service/PaymentInfoService.class | Bin 0 -> 355 bytes .../payment/service/WxPayService.class | Bin 0 -> 141 bytes .../service/impl/PaymentInfoServiceImpl.class | Bin 0 -> 804 bytes .../service/impl/WxPayServiceImpl.class | Bin 0 -> 847 bytes .../tingshu/payment/util/HttpClient$1.class | Bin 0 -> 1051 bytes .../tingshu/payment/util/HttpClient.class | Bin 0 -> 7033 bytes .../tingshu/payment/util/PayUtil.class | Bin 0 -> 1560 bytes .../target/classes/logback-spring.xml | 65 ++++ service/service-search/pom.xml | 50 +++ .../tingshu/ServiceSearchApplication.java | 20 ++ .../search/api/SearchApiController.java | 20 ++ .../tingshu/search/api/itemApiController.java | 19 ++ .../tingshu/search/service/ItemService.java | 7 + .../tingshu/search/service/SearchService.java | 7 + .../search/service/impl/ItemServiceImpl.java | 13 + .../service/impl/SearchServiceImpl.java | 14 + .../src/main/resources/bootstrap.properties | 8 + .../src/main/resources/logback-spring.xml | 65 ++++ .../target/classes/bootstrap.properties | 8 + .../tingshu/ServiceSearchApplication.class | Bin 0 -> 1058 bytes .../search/api/SearchApiController.class | Bin 0 -> 763 bytes .../search/api/itemApiController.class | Bin 0 -> 753 bytes .../tingshu/search/service/ItemService.class | Bin 0 -> 138 bytes .../search/service/SearchService.class | Bin 0 -> 142 bytes .../search/service/impl/ItemServiceImpl.class | Bin 0 -> 681 bytes .../service/impl/SearchServiceImpl.class | Bin 0 -> 689 bytes .../target/classes/logback-spring.xml | 65 ++++ service/service-user/pom.xml | 46 +++ .../tingshu/ServiceUserApplication.java | 16 + .../user/api/UserInfoApiController.java | 19 ++ .../api/UserListenProcessApiController.java | 19 ++ .../api/VipServiceConfigApiController.java | 19 ++ .../user/api/WxLoginApiController.java | 20 ++ .../user/mapper/UserCertificationMapper.java | 10 + .../tingshu/user/mapper/UserInfoMapper.java | 10 + .../user/mapper/UserPaidAlbumMapper.java | 10 + .../user/mapper/UserPaidTrackMapper.java | 11 + .../tingshu/user/mapper/UserStatMapper.java | 10 + .../user/mapper/UserVipServiceMapper.java | 10 + .../user/mapper/VipServiceConfigMapper.java | 10 + .../tingshu/user/service/UserInfoService.java | 8 + .../service/UserListenProcessService.java | 5 + .../user/service/UserPaidTrackService.java | 8 + .../user/service/VipServiceConfigService.java | 8 + .../service/impl/UserInfoServiceImpl.java | 19 ++ .../impl/UserListenProcessServiceImpl.java | 15 + .../impl/UserPaidTrackServiceImpl.java | 18 + .../impl/VipServiceConfigServiceImpl.java | 18 + .../src/main/resources/bootstrap.properties | 8 + .../src/main/resources/logback-spring.xml | 65 ++++ .../main/resources/mapper/UserInfoMapper.xml | 41 +++ .../target/classes/bootstrap.properties | 8 + .../tingshu/ServiceUserApplication.class | Bin 0 -> 896 bytes .../user/api/UserInfoApiController.class | Bin 0 -> 765 bytes .../api/UserListenProcessApiController.class | Bin 0 -> 828 bytes .../api/VipServiceConfigApiController.class | Bin 0 -> 814 bytes .../user/api/WxLoginApiController.class | Bin 0 -> 971 bytes .../user/mapper/UserCertificationMapper.class | Bin 0 -> 437 bytes .../tingshu/user/mapper/UserInfoMapper.class | Bin 0 -> 410 bytes .../user/mapper/UserPaidAlbumMapper.class | Bin 0 -> 425 bytes .../user/mapper/UserPaidTrackMapper.class | Bin 0 -> 425 bytes .../tingshu/user/mapper/UserStatMapper.class | Bin 0 -> 410 bytes .../user/mapper/UserVipServiceMapper.class | Bin 0 -> 428 bytes .../user/mapper/VipServiceConfigMapper.class | Bin 0 -> 434 bytes .../user/service/UserInfoService.class | Bin 0 -> 340 bytes .../service/UserListenProcessService.class | Bin 0 -> 162 bytes .../user/service/UserPaidTrackService.class | Bin 0 -> 355 bytes .../service/VipServiceConfigService.class | Bin 0 -> 364 bytes .../service/impl/UserInfoServiceImpl.class | Bin 0 -> 1106 bytes .../impl/UserListenProcessServiceImpl.class | Bin 0 -> 684 bytes .../impl/UserPaidTrackServiceImpl.class | Bin 0 -> 957 bytes .../impl/VipServiceConfigServiceImpl.class | Bin 0 -> 984 bytes .../target/classes/logback-spring.xml | 65 ++++ .../target/classes/mapper/UserInfoMapper.xml | 41 +++ 519 files changed, 9781 insertions(+) create mode 100644 common/common-log/pom.xml create mode 100644 common/common-log/src/main/java/com/atguigu/tingshu/common/annotation/Log.java create mode 100644 common/common-log/src/main/java/com/atguigu/tingshu/common/aspect/LogAspect.java create mode 100644 common/common-log/src/main/java/com/atguigu/tingshu/common/enums/BusinessType.java create mode 100644 common/common-log/src/main/java/com/atguigu/tingshu/common/enums/OperatorType.java create mode 100644 common/common-util/pom.xml create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/result/Result.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/result/ResultCodeEnum.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/util/Decimal2Serializer.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/util/ExceptionUtil.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/util/HttpClientUtils.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/util/IpUtil.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/util/MD5.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/util/MongoUtil.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/util/RandomUtil.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/util/ResponseUtil.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/util/SensitiveWordFilterUtil.java create mode 100644 common/common-util/src/main/java/com/atguigu/tingshu/common/util/UploadFileUtil.java create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/result/Result.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/result/ResultCodeEnum.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/util/AuthContextHolder.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/util/Decimal2Serializer.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/util/ExceptionUtil.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/util/IpUtil.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/util/MD5.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/util/MongoUtil$MongoCollectionEnum.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/util/MongoUtil.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/util/RandomUtil.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/util/ResponseUtil.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/util/SensitiveWordFilterUtil.class create mode 100644 common/common-util/target/classes/com/atguigu/tingshu/common/util/UploadFileUtil.class create mode 100644 common/pom.xml create mode 100644 common/rabbit-util/pom.xml create mode 100644 common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/config/RabbitInitConfigApplicationListener.java create mode 100644 common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/constant/MqConst.java create mode 100644 common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/entity/GuiguCorrelationData.java create mode 100644 common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/service/RabbitService.java create mode 100644 common/rabbit-util/target/classes/com/atguigu/tingshu/common/rabbit/config/RabbitInitConfigApplicationListener.class create mode 100644 common/rabbit-util/target/classes/com/atguigu/tingshu/common/rabbit/constant/MqConst.class create mode 100644 common/rabbit-util/target/classes/com/atguigu/tingshu/common/rabbit/entity/GuiguCorrelationData.class create mode 100644 common/rabbit-util/target/classes/com/atguigu/tingshu/common/rabbit/service/RabbitService.class create mode 100644 common/service-util/pom.xml create mode 100644 common/service-util/src/main/java/com/atguigu/tingshu/common/config/knife4j/Knife4jConfig.java create mode 100644 common/service-util/src/main/java/com/atguigu/tingshu/common/config/mybatisPlus/MybatisPlusConfig.java create mode 100644 common/service-util/src/main/java/com/atguigu/tingshu/common/config/redis/RedisConfig.java create mode 100644 common/service-util/src/main/java/com/atguigu/tingshu/common/constant/RedisConstant.java create mode 100644 common/service-util/src/main/java/com/atguigu/tingshu/common/constant/SystemConstant.java create mode 100644 common/service-util/src/main/java/com/atguigu/tingshu/common/execption/GuiguException.java create mode 100644 common/service-util/src/main/java/com/atguigu/tingshu/common/handler/GlobalExceptionHandler.java create mode 100644 common/service-util/src/main/java/com/atguigu/tingshu/common/interceptor/FeignInterceptor.java create mode 100644 common/service-util/target/classes/com/atguigu/tingshu/common/config/knife4j/Knife4jConfig.class create mode 100644 common/service-util/target/classes/com/atguigu/tingshu/common/config/mybatisPlus/MybatisPlusConfig.class create mode 100644 common/service-util/target/classes/com/atguigu/tingshu/common/config/redis/RedisConfig.class create mode 100644 common/service-util/target/classes/com/atguigu/tingshu/common/constant/RedisConstant.class create mode 100644 common/service-util/target/classes/com/atguigu/tingshu/common/constant/SystemConstant.class create mode 100644 common/service-util/target/classes/com/atguigu/tingshu/common/execption/GuiguException.class create mode 100644 common/service-util/target/classes/com/atguigu/tingshu/common/handler/GlobalExceptionHandler.class create mode 100644 common/service-util/target/classes/com/atguigu/tingshu/common/interceptor/FeignInterceptor.class create mode 100644 model/pom.xml create mode 100644 model/src/main/java/com/atguigu/tingshu/model/account/RechargeInfo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/account/UserAccount.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/account/UserAccountDetail.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/AlbumAttributeValue.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/AlbumInfo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/AlbumStat.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/BaseAttribute.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/BaseAttributeValue.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory1.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory2.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory3.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/BaseCategoryView.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/BaseDic.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/TrackInfo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/album/TrackStat.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/base/BaseEntity.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/comment/Comment.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/comment/CommentPraise.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/dispatch/XxlJobConfig.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/dispatch/XxlJobLog.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/live/FromUser.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/live/LiveRoom.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/live/LiveTag.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/live/SocketMsg.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/order/OrderDerate.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/order/OrderDetail.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/order/OrderInfo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/payment/PaymentInfo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/search/AlbumInfoIndex.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/search/AttributeValueIndex.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/search/SuggestIndex.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/system/SysDept.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/system/SysLoginLog.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/system/SysMenu.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/system/SysOperLog.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/system/SysPost.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/system/SysRole.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/system/SysRoleMenu.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/system/SysUser.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/system/SysUserRole.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/user/UserCertification.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/user/UserCollect.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/user/UserInfo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/user/UserListenProcess.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/user/UserPaidAlbum.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/user/UserPaidTrack.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/user/UserStat.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/user/UserSubscribe.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/user/UserVipService.java create mode 100644 model/src/main/java/com/atguigu/tingshu/model/user/VipServiceConfig.java create mode 100644 model/src/main/java/com/atguigu/tingshu/query/album/AlbumInfoQuery.java create mode 100644 model/src/main/java/com/atguigu/tingshu/query/album/TrackInfoQuery.java create mode 100644 model/src/main/java/com/atguigu/tingshu/query/order/OrderInfoQuery.java create mode 100644 model/src/main/java/com/atguigu/tingshu/query/search/AlbumIndexQuery.java create mode 100644 model/src/main/java/com/atguigu/tingshu/query/user/UserInfoQuery.java create mode 100644 model/src/main/java/com/atguigu/tingshu/validation/NotEmptyPaid.java create mode 100644 model/src/main/java/com/atguigu/tingshu/validation/NotEmptyPaidValidator.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/account/AccountDeductVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/account/AccountLockResultVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/account/AccountLockVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/account/RechargeInfoVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/album/AlbumAttributeValueVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/album/AlbumInfoVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/album/AlbumListVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/album/AlbumStatMqVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/album/AlbumStatVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/album/AlbumTrackListVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/album/TrackInfoVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/album/TrackListVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/album/TrackMediaInfoVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/album/TrackStatMqVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/album/TrackStatVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/base/PageVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/comment/CommentVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/live/LiveRoomVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/live/TencentLiveAddressVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/order/OrderDerateVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/order/OrderDetailVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/order/OrderInfoVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/order/TradeResponeVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/order/TradeVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/payment/PaymentVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/search/AlbumInfoIndexVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/search/AlbumSearchResponseVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/system/AssginMenuVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/system/AssginRoleVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/system/LoginVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/system/MetaVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/system/RouterVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/system/SysLoginLogQueryVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/system/SysOperLogQueryVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/system/SysPostQueryVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/system/SysRoleQueryVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/system/SysUserQueryVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/user/LoginVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/user/UserCollectVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/user/UserInfoVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/user/UserListenProcessListVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/user/UserListenProcessVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/user/UserPaidRecordVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/user/UserSubscribeVo.java create mode 100644 model/src/main/java/com/atguigu/tingshu/vo/user/UserUpdateVo.java create mode 100644 model/target/classes/com/atguigu/tingshu/model/account/RechargeInfo.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/account/UserAccount.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/account/UserAccountDetail.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/AlbumAttributeValue.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/AlbumInfo.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/AlbumStat.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/BaseAttribute.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/BaseAttributeValue.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/BaseCategory1.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/BaseCategory2.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/BaseCategory3.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/BaseCategoryView.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/BaseDic.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/TrackInfo.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/album/TrackStat.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/base/BaseEntity.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/comment/Comment.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/comment/CommentPraise.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/dispatch/XxlJobConfig.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/dispatch/XxlJobLog.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/live/FromUser.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/live/LiveRoom.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/live/LiveTag.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/live/SocketMsg$MsgTypeEnum.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/live/SocketMsg.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/order/OrderDerate.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/order/OrderDetail.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/order/OrderInfo.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/payment/PaymentInfo.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/search/AlbumInfoIndex.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/search/AttributeValueIndex.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/search/SuggestIndex.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/system/SysDept.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/system/SysLoginLog.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/system/SysMenu.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/system/SysOperLog.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/system/SysPost.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/system/SysRole.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/system/SysRoleMenu.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/system/SysUser.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/system/SysUserRole.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/user/UserCertification.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/user/UserCollect.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/user/UserInfo.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/user/UserListenProcess.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/user/UserPaidAlbum.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/user/UserPaidTrack.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/user/UserStat.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/user/UserSubscribe.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/user/UserVipService.class create mode 100644 model/target/classes/com/atguigu/tingshu/model/user/VipServiceConfig.class create mode 100644 model/target/classes/com/atguigu/tingshu/query/album/AlbumInfoQuery.class create mode 100644 model/target/classes/com/atguigu/tingshu/query/album/TrackInfoQuery.class create mode 100644 model/target/classes/com/atguigu/tingshu/query/order/OrderInfoQuery.class create mode 100644 model/target/classes/com/atguigu/tingshu/query/search/AlbumIndexQuery.class create mode 100644 model/target/classes/com/atguigu/tingshu/query/user/UserInfoQuery.class create mode 100644 model/target/classes/com/atguigu/tingshu/validation/NotEmptyPaid.class create mode 100644 model/target/classes/com/atguigu/tingshu/validation/NotEmptyPaidValidator.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/account/AccountDeductVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/account/AccountLockResultVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/account/AccountLockVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/account/RechargeInfoVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/album/AlbumAttributeValueVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/album/AlbumInfoVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/album/AlbumListVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/album/AlbumStatMqVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/album/AlbumStatVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/album/AlbumTrackListVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/album/TrackInfoVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/album/TrackListVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/album/TrackMediaInfoVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/album/TrackStatMqVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/album/TrackStatVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/base/PageVo$PageVoBuilder.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/base/PageVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/comment/CommentVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/live/LiveRoomVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/live/TencentLiveAddressVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/order/OrderDerateVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/order/OrderDetailVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/order/OrderInfoVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/order/TradeResponeVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/order/TradeVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/payment/PaymentVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/search/AlbumInfoIndexVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/search/AlbumSearchResponseVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/system/AssginMenuVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/system/AssginRoleVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/system/LoginVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/system/MetaVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/system/RouterVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/system/SysLoginLogQueryVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/system/SysOperLogQueryVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/system/SysPostQueryVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/system/SysRoleQueryVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/system/SysUserQueryVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/user/LoginVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/user/UserCollectVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/user/UserInfoVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/user/UserListenProcessListVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/user/UserListenProcessVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/user/UserPaidRecordVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/user/UserSubscribeVo.class create mode 100644 model/target/classes/com/atguigu/tingshu/vo/user/UserUpdateVo.class create mode 100644 pom.xml create mode 100644 server-gateway/pom.xml create mode 100644 server-gateway/src/main/java/com/atguigu/tingshu/ServerGatewayApplication.java create mode 100644 server-gateway/src/main/java/com/atguigu/tingshu/gateway/config/CorsConfig.java create mode 100644 server-gateway/src/main/java/com/atguigu/tingshu/gateway/filter/AuthGlobalFilter.java create mode 100644 server-gateway/src/main/resources/bootstrap.properties create mode 100644 server-gateway/target/classes/bootstrap.properties create mode 100644 server-gateway/target/classes/com/atguigu/tingshu/ServerGatewayApplication.class create mode 100644 server-gateway/target/classes/com/atguigu/tingshu/gateway/config/CorsConfig.class create mode 100644 server-gateway/target/classes/com/atguigu/tingshu/gateway/filter/AuthGlobalFilter.class create mode 100644 service-client/pom.xml create mode 100644 service-client/service-account-client/pom.xml create mode 100644 service-client/service-account-client/src/main/java/com/atguigu/tingshu/account/AccountFeignClient.java create mode 100644 service-client/service-account-client/src/main/java/com/atguigu/tingshu/account/impl/AccountDegradeFeignClient.java create mode 100644 service-client/service-account-client/target/classes/com/atguigu/tingshu/account/AccountFeignClient.class create mode 100644 service-client/service-account-client/target/classes/com/atguigu/tingshu/account/impl/AccountDegradeFeignClient.class create mode 100644 service-client/service-album-client/pom.xml create mode 100644 service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/AlbumFeignClient.java create mode 100644 service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.java create mode 100644 service-client/service-album-client/target/classes/com/atguigu/tingshu/album/AlbumFeignClient.class create mode 100644 service-client/service-album-client/target/classes/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.class create mode 100644 service-client/service-order-client/pom.xml create mode 100644 service-client/service-order-client/src/main/java/com/atguigu/tingshu/order/client/OrderFeignClient.java create mode 100644 service-client/service-order-client/src/main/java/com/atguigu/tingshu/order/client/impl/OrderDegradeFeignClient.java create mode 100644 service-client/service-order-client/target/classes/com/atguigu/tingshu/order/client/OrderFeignClient.class create mode 100644 service-client/service-order-client/target/classes/com/atguigu/tingshu/order/client/impl/OrderDegradeFeignClient.class create mode 100644 service-client/service-search-client/pom.xml create mode 100644 service-client/service-search-client/src/main/java/com/atguigu/tingshu/search/client/SearchFeignClient.java create mode 100644 service-client/service-search-client/src/main/java/com/atguigu/tingshu/search/client/impl/SearchDegradeFeignClient.java create mode 100644 service-client/service-search-client/target/classes/com/atguigu/tingshu/search/client/SearchFeignClient.class create mode 100644 service-client/service-search-client/target/classes/com/atguigu/tingshu/search/client/impl/SearchDegradeFeignClient.class create mode 100644 service-client/service-user-client/pom.xml create mode 100644 service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/UserFeignClient.java create mode 100644 service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.java create mode 100644 service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/UserFeignClient.class create mode 100644 service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.class create mode 100644 service/pom.xml create mode 100644 service/service-account/pom.xml create mode 100644 service/service-account/src/main/java/com/atguigu/tingshu/ServiceAccountApplication.java create mode 100644 service/service-account/src/main/java/com/atguigu/tingshu/account/api/RechargeInfoApiController.java create mode 100644 service/service-account/src/main/java/com/atguigu/tingshu/account/api/UserAccountApiController.java create mode 100644 service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/RechargeInfoMapper.java create mode 100644 service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/UserAccountDetailMapper.java create mode 100644 service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/UserAccountMapper.java create mode 100644 service/service-account/src/main/java/com/atguigu/tingshu/account/service/RechargeInfoService.java create mode 100644 service/service-account/src/main/java/com/atguigu/tingshu/account/service/UserAccountService.java create mode 100644 service/service-account/src/main/java/com/atguigu/tingshu/account/service/impl/RechargeInfoServiceImpl.java create mode 100644 service/service-account/src/main/java/com/atguigu/tingshu/account/service/impl/UserAccountServiceImpl.java create mode 100644 service/service-account/src/main/resources/bootstrap.properties create mode 100644 service/service-account/src/main/resources/logback-spring.xml create mode 100644 service/service-account/src/main/resources/mapper/UserAccountDetailMapper.xml create mode 100644 service/service-account/src/main/resources/mapper/UserAccountMapper.xml create mode 100644 service/service-account/target/classes/bootstrap.properties create mode 100644 service/service-account/target/classes/com/atguigu/tingshu/ServiceAccountApplication.class create mode 100644 service/service-account/target/classes/com/atguigu/tingshu/account/api/RechargeInfoApiController.class create mode 100644 service/service-account/target/classes/com/atguigu/tingshu/account/api/UserAccountApiController.class create mode 100644 service/service-account/target/classes/com/atguigu/tingshu/account/mapper/RechargeInfoMapper.class create mode 100644 service/service-account/target/classes/com/atguigu/tingshu/account/mapper/UserAccountDetailMapper.class create mode 100644 service/service-account/target/classes/com/atguigu/tingshu/account/mapper/UserAccountMapper.class create mode 100644 service/service-account/target/classes/com/atguigu/tingshu/account/service/RechargeInfoService.class create mode 100644 service/service-account/target/classes/com/atguigu/tingshu/account/service/UserAccountService.class create mode 100644 service/service-account/target/classes/com/atguigu/tingshu/account/service/impl/RechargeInfoServiceImpl.class create mode 100644 service/service-account/target/classes/com/atguigu/tingshu/account/service/impl/UserAccountServiceImpl.class create mode 100644 service/service-account/target/classes/logback-spring.xml create mode 100644 service/service-account/target/classes/mapper/UserAccountDetailMapper.xml create mode 100644 service/service-account/target/classes/mapper/UserAccountMapper.xml create mode 100644 service/service-album/pom.xml create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/ServiceAlbumApplication.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/api/AlbumInfoApiController.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/api/BaseCategoryApiController.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/api/FileUploadApiController.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/api/TrackInfoApiController.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/config/MinioConstantProperties.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/config/VodConstantProperties.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumAttributeValueMapper.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumInfoMapper.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumStatMapper.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseAttributeMapper.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseAttributeValueMapper.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory1Mapper.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory2Mapper.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory3Mapper.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategoryViewMapper.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/TrackInfoMapper.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/TrackStatMapper.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumInfoService.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/BaseCategoryService.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/TrackInfoService.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/VodService.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/BaseCategoryServiceImpl.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/TrackInfoServiceImpl.java create mode 100644 service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/VodServiceImpl.java create mode 100644 service/service-album/src/main/resources/bootstrap.properties create mode 100644 service/service-album/src/main/resources/logback-spring.xml create mode 100644 service/service-album/src/main/resources/mapper/AlbumInfoMapper.xml create mode 100644 service/service-album/src/main/resources/mapper/BaseAttributeMapper.xml create mode 100644 service/service-album/src/main/resources/mapper/TrackInfoMapper.xml create mode 100644 service/service-album/target/classes/bootstrap.properties create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/ServiceAlbumApplication.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/api/AlbumInfoApiController.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/api/BaseCategoryApiController.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/api/FileUploadApiController.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/api/TrackInfoApiController.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/config/MinioConstantProperties.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/config/VodConstantProperties.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/mapper/AlbumAttributeValueMapper.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/mapper/AlbumInfoMapper.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/mapper/AlbumStatMapper.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseAttributeMapper.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseAttributeValueMapper.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseCategory1Mapper.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseCategory2Mapper.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseCategory3Mapper.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseCategoryViewMapper.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/mapper/TrackInfoMapper.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/mapper/TrackStatMapper.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/service/AlbumInfoService.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/service/BaseCategoryService.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/service/TrackInfoService.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/service/VodService.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/BaseCategoryServiceImpl.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/TrackInfoServiceImpl.class create mode 100644 service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/VodServiceImpl.class create mode 100644 service/service-album/target/classes/logback-spring.xml create mode 100644 service/service-album/target/classes/mapper/AlbumInfoMapper.xml create mode 100644 service/service-album/target/classes/mapper/BaseAttributeMapper.xml create mode 100644 service/service-album/target/classes/mapper/TrackInfoMapper.xml create mode 100644 service/service-dispatch/pom.xml create mode 100644 service/service-dispatch/src/main/java/com/atguigu/tingshu/ServiceDispatchApplication.java create mode 100644 service/service-dispatch/src/main/java/com/atguigu/tingshu/dispatch/job/DispatchHandler.java create mode 100644 service/service-dispatch/src/main/resources/bootstrap.properties create mode 100644 service/service-dispatch/src/main/resources/logback-spring.xml create mode 100644 service/service-dispatch/target/classes/bootstrap.properties create mode 100644 service/service-dispatch/target/classes/com/atguigu/tingshu/ServiceDispatchApplication.class create mode 100644 service/service-dispatch/target/classes/com/atguigu/tingshu/dispatch/job/DispatchHandler.class create mode 100644 service/service-dispatch/target/classes/logback-spring.xml create mode 100644 service/service-order/pom.xml create mode 100644 service/service-order/src/main/java/com/atguigu/tingshu/ServiceOrderApplication.java create mode 100644 service/service-order/src/main/java/com/atguigu/tingshu/order/api/OrderInfoApiController.java create mode 100644 service/service-order/src/main/java/com/atguigu/tingshu/order/helper/SignHelper.java create mode 100644 service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderDerateMapper.java create mode 100644 service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderDetailMapper.java create mode 100644 service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderInfoMapper.java create mode 100644 service/service-order/src/main/java/com/atguigu/tingshu/order/service/OrderInfoService.java create mode 100644 service/service-order/src/main/java/com/atguigu/tingshu/order/service/impl/OrderInfoServiceImpl.java create mode 100644 service/service-order/src/main/resources/bootstrap.properties create mode 100644 service/service-order/src/main/resources/logback-spring.xml create mode 100644 service/service-order/src/main/resources/mapper/OrderInfoMapper.xml create mode 100644 service/service-order/target/classes/bootstrap.properties create mode 100644 service/service-order/target/classes/com/atguigu/tingshu/ServiceOrderApplication.class create mode 100644 service/service-order/target/classes/com/atguigu/tingshu/order/api/OrderInfoApiController.class create mode 100644 service/service-order/target/classes/com/atguigu/tingshu/order/helper/SignHelper.class create mode 100644 service/service-order/target/classes/com/atguigu/tingshu/order/mapper/OrderDerateMapper.class create mode 100644 service/service-order/target/classes/com/atguigu/tingshu/order/mapper/OrderDetailMapper.class create mode 100644 service/service-order/target/classes/com/atguigu/tingshu/order/mapper/OrderInfoMapper.class create mode 100644 service/service-order/target/classes/com/atguigu/tingshu/order/service/OrderInfoService.class create mode 100644 service/service-order/target/classes/com/atguigu/tingshu/order/service/impl/OrderInfoServiceImpl.class create mode 100644 service/service-order/target/classes/logback-spring.xml create mode 100644 service/service-order/target/classes/mapper/OrderInfoMapper.xml create mode 100644 service/service-payment/pom.xml create mode 100644 service/service-payment/src/main/java/com/atguigu/tingshu/ServicePaymentApplication.java create mode 100644 service/service-payment/src/main/java/com/atguigu/tingshu/payment/api/WxPayApiController.java create mode 100644 service/service-payment/src/main/java/com/atguigu/tingshu/payment/config/WxPayV3Config.java create mode 100644 service/service-payment/src/main/java/com/atguigu/tingshu/payment/mapper/PaymentInfoMapper.java create mode 100644 service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/PaymentInfoService.java create mode 100644 service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/WxPayService.java create mode 100644 service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/impl/PaymentInfoServiceImpl.java create mode 100644 service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/impl/WxPayServiceImpl.java create mode 100644 service/service-payment/src/main/java/com/atguigu/tingshu/payment/util/HttpClient.java create mode 100644 service/service-payment/src/main/java/com/atguigu/tingshu/payment/util/PayUtil.java create mode 100644 service/service-payment/src/main/resources/bootstrap.properties create mode 100644 service/service-payment/src/main/resources/logback-spring.xml create mode 100644 service/service-payment/target/classes/bootstrap.properties create mode 100644 service/service-payment/target/classes/com/atguigu/tingshu/ServicePaymentApplication.class create mode 100644 service/service-payment/target/classes/com/atguigu/tingshu/payment/api/WxPayApiController.class create mode 100644 service/service-payment/target/classes/com/atguigu/tingshu/payment/config/WxPayV3Config.class create mode 100644 service/service-payment/target/classes/com/atguigu/tingshu/payment/mapper/PaymentInfoMapper.class create mode 100644 service/service-payment/target/classes/com/atguigu/tingshu/payment/service/PaymentInfoService.class create mode 100644 service/service-payment/target/classes/com/atguigu/tingshu/payment/service/WxPayService.class create mode 100644 service/service-payment/target/classes/com/atguigu/tingshu/payment/service/impl/PaymentInfoServiceImpl.class create mode 100644 service/service-payment/target/classes/com/atguigu/tingshu/payment/service/impl/WxPayServiceImpl.class create mode 100644 service/service-payment/target/classes/com/atguigu/tingshu/payment/util/HttpClient$1.class create mode 100644 service/service-payment/target/classes/com/atguigu/tingshu/payment/util/HttpClient.class create mode 100644 service/service-payment/target/classes/com/atguigu/tingshu/payment/util/PayUtil.class create mode 100644 service/service-payment/target/classes/logback-spring.xml create mode 100644 service/service-search/pom.xml create mode 100644 service/service-search/src/main/java/com/atguigu/tingshu/ServiceSearchApplication.java create mode 100644 service/service-search/src/main/java/com/atguigu/tingshu/search/api/SearchApiController.java create mode 100644 service/service-search/src/main/java/com/atguigu/tingshu/search/api/itemApiController.java create mode 100644 service/service-search/src/main/java/com/atguigu/tingshu/search/service/ItemService.java create mode 100644 service/service-search/src/main/java/com/atguigu/tingshu/search/service/SearchService.java create mode 100644 service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/ItemServiceImpl.java create mode 100644 service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.java create mode 100644 service/service-search/src/main/resources/bootstrap.properties create mode 100644 service/service-search/src/main/resources/logback-spring.xml create mode 100644 service/service-search/target/classes/bootstrap.properties create mode 100644 service/service-search/target/classes/com/atguigu/tingshu/ServiceSearchApplication.class create mode 100644 service/service-search/target/classes/com/atguigu/tingshu/search/api/SearchApiController.class create mode 100644 service/service-search/target/classes/com/atguigu/tingshu/search/api/itemApiController.class create mode 100644 service/service-search/target/classes/com/atguigu/tingshu/search/service/ItemService.class create mode 100644 service/service-search/target/classes/com/atguigu/tingshu/search/service/SearchService.class create mode 100644 service/service-search/target/classes/com/atguigu/tingshu/search/service/impl/ItemServiceImpl.class create mode 100644 service/service-search/target/classes/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.class create mode 100644 service/service-search/target/classes/logback-spring.xml create mode 100644 service/service-user/pom.xml create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/ServiceUserApplication.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserInfoApiController.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserListenProcessApiController.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/api/VipServiceConfigApiController.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/api/WxLoginApiController.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserCertificationMapper.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserInfoMapper.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserPaidAlbumMapper.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserPaidTrackMapper.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserStatMapper.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserVipServiceMapper.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/VipServiceConfigMapper.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserInfoService.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserListenProcessService.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserPaidTrackService.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/service/VipServiceConfigService.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserInfoServiceImpl.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserListenProcessServiceImpl.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserPaidTrackServiceImpl.java create mode 100644 service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/VipServiceConfigServiceImpl.java create mode 100644 service/service-user/src/main/resources/bootstrap.properties create mode 100644 service/service-user/src/main/resources/logback-spring.xml create mode 100644 service/service-user/src/main/resources/mapper/UserInfoMapper.xml create mode 100644 service/service-user/target/classes/bootstrap.properties create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/ServiceUserApplication.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/api/UserInfoApiController.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/api/UserListenProcessApiController.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/api/VipServiceConfigApiController.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/api/WxLoginApiController.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserCertificationMapper.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserInfoMapper.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserPaidAlbumMapper.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserPaidTrackMapper.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserStatMapper.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserVipServiceMapper.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/mapper/VipServiceConfigMapper.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/service/UserInfoService.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/service/UserListenProcessService.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/service/UserPaidTrackService.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/service/VipServiceConfigService.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/service/impl/UserInfoServiceImpl.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/service/impl/UserListenProcessServiceImpl.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/service/impl/UserPaidTrackServiceImpl.class create mode 100644 service/service-user/target/classes/com/atguigu/tingshu/user/service/impl/VipServiceConfigServiceImpl.class create mode 100644 service/service-user/target/classes/logback-spring.xml create mode 100644 service/service-user/target/classes/mapper/UserInfoMapper.xml diff --git a/common/common-log/pom.xml b/common/common-log/pom.xml new file mode 100644 index 0000000..7b3a43f --- /dev/null +++ b/common/common-log/pom.xml @@ -0,0 +1,38 @@ + + + + common + com.atguigu.tingshu + 1.0 + + 4.0.0 + + common-log + + + + com.atguigu.tingshu + model + 1.0 + provided + + + com.atguigu.tingshu + common-util + 1.0 + provided + + + org.springframework.boot + spring-boot-starter-web + provided + + + org.springframework.boot + spring-boot-starter-aop + provided + + + diff --git a/common/common-log/src/main/java/com/atguigu/tingshu/common/annotation/Log.java b/common/common-log/src/main/java/com/atguigu/tingshu/common/annotation/Log.java new file mode 100644 index 0000000..ca3db4f --- /dev/null +++ b/common/common-log/src/main/java/com/atguigu/tingshu/common/annotation/Log.java @@ -0,0 +1,39 @@ +package com.atguigu.tingshu.common.annotation; + +import com.atguigu.tingshu.common.enums.BusinessType; +import com.atguigu.tingshu.common.enums.OperatorType; + +import java.lang.annotation.*; + +/** + * 自定义操作日志记录注解 + */ +@Target({ElementType.PARAMETER, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface Log { + /** + * 模块 + */ + public String title() default ""; + + /** + * 功能 + */ + public BusinessType businessType() default BusinessType.OTHER; + + /** + * 操作人类别 + */ + public OperatorType operatorType() default OperatorType.MANAGE; + + /** + * 是否保存请求的参数 + */ + public boolean isSaveRequestData() default true; + + /** + * 是否保存响应的参数 + */ + public boolean isSaveResponseData() default true; +} diff --git a/common/common-log/src/main/java/com/atguigu/tingshu/common/aspect/LogAspect.java b/common/common-log/src/main/java/com/atguigu/tingshu/common/aspect/LogAspect.java new file mode 100644 index 0000000..99e36fe --- /dev/null +++ b/common/common-log/src/main/java/com/atguigu/tingshu/common/aspect/LogAspect.java @@ -0,0 +1,184 @@ +package com.atguigu.tingshu.common.aspect; + +import com.alibaba.fastjson.JSON; +//import com.atguigu.tingshu.system.client.SysOperLogFeignClient; +import com.atguigu.tingshu.common.annotation.Log; +import com.atguigu.tingshu.common.util.IpUtil; +import com.atguigu.tingshu.model.system.SysOperLog; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.AfterThrowing; +import org.aspectj.lang.annotation.Aspect; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpMethod; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Collection; +import java.util.Map; + + +/** + * 操作日志记录处理 + */ +@Aspect +@Component +public class LogAspect { + private static final Logger log = LoggerFactory.getLogger(LogAspect.class); + + //微服务切换为feign调用接口 + //@Resource + //private SysOperLogFeignClient sysOperLogFeignClient; + + /** + * 处理完请求后执行 + * + * @param joinPoint 切点 + */ + @AfterReturning(pointcut = "@annotation(controllerLog)", returning = "jsonResult") + public void doAfterReturning(JoinPoint joinPoint, Log controllerLog, Object jsonResult) { + handleLog(joinPoint, controllerLog, null, jsonResult); + } + + /** + * 拦截异常操作 + * + * @param joinPoint 切点 + * @param e 异常 + */ + @AfterThrowing(value = "@annotation(controllerLog)", throwing = "e") + public void doAfterThrowing(JoinPoint joinPoint, Log controllerLog, Exception e) { + handleLog(joinPoint, controllerLog, e, null); + } + + protected void handleLog(final JoinPoint joinPoint, Log controllerLog, final Exception e, Object jsonResult) { + try { + RequestAttributes ra = RequestContextHolder.getRequestAttributes(); + ServletRequestAttributes sra = (ServletRequestAttributes) ra; + HttpServletRequest request = sra.getRequest(); + + // *========数据库日志=========*// + SysOperLog operLog = new SysOperLog(); + operLog.setStatus(1); + // 请求的地址 + String ip = IpUtil.getIpAddress(request);//IpUtil.getIpAddr(ServletUtils.getRequest()); + operLog.setOperIp(ip); + operLog.setOperUrl(request.getRequestURI()); + + if (e != null) { + operLog.setStatus(0); + operLog.setErrorMsg(e.getMessage()); + } + // 设置方法名称 + String className = joinPoint.getTarget().getClass().getName(); + String methodName = joinPoint.getSignature().getName(); + operLog.setMethod(className + "." + methodName + "()"); + // 设置请求方式 + operLog.setRequestMethod(request.getMethod()); + // 处理设置注解上的参数 + getControllerMethodDescription(joinPoint, controllerLog, operLog, jsonResult); + // 保存数据库 + //sysOperLogFeignClient.saveSysLog(operLog); + log.info("操作日志:"+JSON.toJSONString(operLog)); + } catch (Exception exp) { + // 记录本地异常日志 + log.error("==前置通知异常=="); + log.error("异常信息:{}", exp.getMessage()); + exp.printStackTrace(); + } + } + + /** + * 获取注解中对方法的描述信息 用于Controller层注解 + * + * @param log 日志 + * @param operLog 操作日志 + * @throws Exception + */ + public void getControllerMethodDescription(JoinPoint joinPoint, Log log, SysOperLog operLog, Object jsonResult) throws Exception { + // 设置action动作 + operLog.setBusinessType(log.businessType().name()); + // 设置标题 + operLog.setTitle(log.title()); + // 设置操作人类别 + operLog.setOperatorType(log.operatorType().name()); + // 是否需要保存request,参数和值 + if (log.isSaveRequestData()) { + // 获取参数的信息,传入到数据库中。 + setRequestValue(joinPoint, operLog); + } + // 是否需要保存response,参数和值 + if (log.isSaveResponseData() && !StringUtils.isEmpty(jsonResult)) { + operLog.setJsonResult(JSON.toJSONString(jsonResult)); + } + } + + /** + * 获取请求的参数,放到log中 + * + * @param operLog 操作日志 + * @throws Exception 异常 + */ + private void setRequestValue(JoinPoint joinPoint, SysOperLog operLog) throws Exception { + String requestMethod = operLog.getRequestMethod(); + if (HttpMethod.PUT.name().equals(requestMethod) || HttpMethod.POST.name().equals(requestMethod)) { + String params = argsArrayToString(joinPoint.getArgs()); + operLog.setOperParam(params); + } + } + + /** + * 参数拼装 + */ + private String argsArrayToString(Object[] paramsArray) { + String params = ""; + if (paramsArray != null && paramsArray.length > 0) { + for (Object o : paramsArray) { + if (!StringUtils.isEmpty(o) && !isFilterObject(o)) { + try { + Object jsonObj = JSON.toJSON(o); + params += jsonObj.toString() + " "; + } catch (Exception e) { + } + } + } + } + return params.trim(); + } + + /** + * 判断是否需要过滤的对象。 + * + * @param o 对象信息。 + * @return 如果是需要过滤的对象,则返回true;否则返回false。 + */ + @SuppressWarnings("rawtypes") + public boolean isFilterObject(final Object o) { + Class clazz = o.getClass(); + if (clazz.isArray()) { + return clazz.getComponentType().isAssignableFrom(MultipartFile.class); + } else if (Collection.class.isAssignableFrom(clazz)) { + Collection collection = (Collection) o; + for (Object value : collection) { + return value instanceof MultipartFile; + } + } else if (Map.class.isAssignableFrom(clazz)) { + Map map = (Map) o; + for (Object value : map.entrySet()) { + Map.Entry entry = (Map.Entry) value; + return entry.getValue() instanceof MultipartFile; + } + } + return o instanceof MultipartFile || o instanceof HttpServletRequest || o instanceof HttpServletResponse + || o instanceof BindingResult; + } +} diff --git a/common/common-log/src/main/java/com/atguigu/tingshu/common/enums/BusinessType.java b/common/common-log/src/main/java/com/atguigu/tingshu/common/enums/BusinessType.java new file mode 100644 index 0000000..02718f1 --- /dev/null +++ b/common/common-log/src/main/java/com/atguigu/tingshu/common/enums/BusinessType.java @@ -0,0 +1,52 @@ +package com.atguigu.tingshu.common.enums; + +/** + * 业务操作类型 + */ +public enum BusinessType { + /** + * 其它 + */ + OTHER, + + /** + * 新增 + */ + INSERT, + + /** + * 修改 + */ + UPDATE, + + /** + * 删除 + */ + DELETE, + + /** + * 授权 + */ + ASSGIN, + + /** + * 导出 + */ + EXPORT, + + /** + * 导入 + */ + IMPORT, + + + /** + * 更新状态 + */ + STATUS, + + /** + * 清空数据 + */ + CLEAN, +} diff --git a/common/common-log/src/main/java/com/atguigu/tingshu/common/enums/OperatorType.java b/common/common-log/src/main/java/com/atguigu/tingshu/common/enums/OperatorType.java new file mode 100644 index 0000000..dfeadcd --- /dev/null +++ b/common/common-log/src/main/java/com/atguigu/tingshu/common/enums/OperatorType.java @@ -0,0 +1,21 @@ +package com.atguigu.tingshu.common.enums; + +/** + * 操作人类别 + */ +public enum OperatorType { + /** + * 其它 + */ + OTHER, + + /** + * 后台用户 + */ + MANAGE, + + /** + * 手机端用户 + */ + MOBILE +} diff --git a/common/common-util/pom.xml b/common/common-util/pom.xml new file mode 100644 index 0000000..28e9ce9 --- /dev/null +++ b/common/common-util/pom.xml @@ -0,0 +1,47 @@ + + + + common + com.atguigu.tingshu + 1.0 + + 4.0.0 + + common-util + jar + + + + org.springframework.boot + spring-boot-starter-web + provided + + + org.projectlombok + lombok + + + com.alibaba + fastjson + + + joda-time + joda-time + + + commons-io + commons-io + + + com.google.guava + guava + + + cn.hutool + hutool-all + 5.7.22 + + + diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/result/Result.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/result/Result.java new file mode 100644 index 0000000..b94f985 --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/result/Result.java @@ -0,0 +1,85 @@ +package com.atguigu.tingshu.common.result; + + +import lombok.Data; + +/** + * 全局统一返回结果类 + * + */ +@Data +public class Result { + + //返回码 + private Integer code; + + //返回消息 + private String message; + + //返回数据 + private T data; + + public Result(){} + + // 返回数据 + protected static Result build(T data) { + Result result = new Result(); + if (data != null) + result.setData(data); + return result; + } + + public static Result build(T body, Integer code, String message) { + Result result = build(body); + result.setCode(code); + result.setMessage(message); + return result; + } + + public static Result build(T body, ResultCodeEnum resultCodeEnum) { + Result result = build(body); + result.setCode(resultCodeEnum.getCode()); + result.setMessage(resultCodeEnum.getMessage()); + return result; + } + + public static Result ok(){ + return Result.ok(null); + } + + /** + * 操作成功 + * @param data baseCategory1List + * @param + * @return + */ + public static Result ok(T data){ + Result result = build(data); + return build(data, ResultCodeEnum.SUCCESS); + } + + public static Result fail(){ + return Result.fail(null); + } + + /** + * 操作失败 + * @param data + * @param + * @return + */ + public static Result fail(T data){ + Result result = build(data); + return build(data, ResultCodeEnum.FAIL); + } + + public Result message(String msg){ + this.setMessage(msg); + return this; + } + + public Result code(Integer code){ + this.setCode(code); + return this; + } +} diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/result/ResultCodeEnum.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/result/ResultCodeEnum.java new file mode 100644 index 0000000..c4e33bf --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/result/ResultCodeEnum.java @@ -0,0 +1,59 @@ +package com.atguigu.tingshu.common.result; + +import lombok.Getter; + +/** + * 统一返回结果状态信息类 + * + */ +@Getter +public enum ResultCodeEnum { + + SUCCESS(200,"成功"), + FAIL(201, "失败"), + SERVICE_ERROR(2012, "服务异常"), + DATA_ERROR(204, "数据异常"), + ILLEGAL_REQUEST(205, "非法请求"), + REPEAT_SUBMIT(206, "重复提交"), + ARGUMENT_VALID_ERROR(210, "参数校验异常"), + SIGN_ERROR(300, "签名错误"), + SIGN_OVERDUE(301, "签名已过期"), + + LOGIN_AUTH(208, "未登陆"), + PERMISSION(209, "没有权限"), + ACCOUNT_ERROR(214, "账号不正确"), + PASSWORD_ERROR(215, "密码不正确"), + PHONE_CODE_ERROR(215, "手机验证码不正确"), + LOGIN_MOBLE_ERROR( 216, "账号不正确"), + ACCOUNT_STOP( 216, "账号已停用"), + NODE_ERROR( 217, "该节点下有子节点,不可以删除"), + + VOD_FILE_ID_ERROR( 220, "声音媒体id不正确"), + + XXL_JOB_ERROR(210, "调度操作失败"), + + ACCOUNT_LESS(220, "账户余额不足"), + ACCOUNT_LOCK_ERROR(221, "账户余额锁定失败"), + ACCOUNT_UNLOCK_ERROR(221, "账户余额解锁失败"), + ACCOUNT_MINUSLOCK_ERROR(221, "账户余额扣减失败"), + ACCOUNT_LOCK_REPEAT(221, "重复锁定"), + ACCOUNT_LOCK_RESULT_NULL(221, "锁定账号结果对象为空"), + ORDER_SUBMIT_REPEAT(221, "超时或重复提交订单"), + + NO_BUY_NOT_SEE(230, "未购买不能观看"), + + EXIST_NO_EXPIRE_LIVE(230, "当前存在未过期直播"), + + REPEAT_BUY_ERROR(231, "已经购买过该专辑"), + + ; + + private Integer code; + + private String message; + + private ResultCodeEnum(Integer code, String message) { + this.code = code; + this.message = message; + } +} diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java new file mode 100644 index 0000000..8cc00f4 --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/AuthContextHolder.java @@ -0,0 +1,22 @@ +package com.atguigu.tingshu.common.util; + +/** + * 获取当前用户信息帮助类 + */ +public class AuthContextHolder { + + private static ThreadLocal userId = new ThreadLocal(); + + public static void setUserId(Long _userId) { + userId.set(_userId); + } + + public static Long getUserId() { + return userId.get(); + } + + public static void removeUserId() { + userId.remove(); + } + +} diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/Decimal2Serializer.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/Decimal2Serializer.java new file mode 100644 index 0000000..3fa2e19 --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/Decimal2Serializer.java @@ -0,0 +1,31 @@ +package com.atguigu.tingshu.common.util; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; +import java.math.BigDecimal; + +/** + * @description 小数保留2位返回给前端序列化器 + */ +public class Decimal2Serializer extends JsonSerializer { + + /** + * 将返回的BigDecimal保留两位小数,再返回给前端 + * @param value + * @param jsonGenerator + * @param serializerProvider + * @throws IOException + * @throws JsonProcessingException + */ + @Override + public void serialize(Object value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { + if (value != null) { + BigDecimal bigDecimal = new BigDecimal(value.toString()).setScale(2,BigDecimal.ROUND_HALF_UP); + jsonGenerator.writeString(bigDecimal.toString()); + } + } +} \ No newline at end of file diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/ExceptionUtil.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/ExceptionUtil.java new file mode 100644 index 0000000..e0f0670 --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/ExceptionUtil.java @@ -0,0 +1,38 @@ +package com.atguigu.tingshu.common.util; + + +import java.io.PrintWriter; +import java.io.StringWriter; + +/** + * Exception工具类 + */ +public class ExceptionUtil { + + /** + * 获取异常信息 + * @param e 异常 + * @return 返回异常信息 + */ + public static String getErrorMessage(Exception e){ + StringWriter sw = null; + PrintWriter pw = null; + try { + sw = new StringWriter(); + pw = new PrintWriter(sw, true); + e.printStackTrace(pw); + }finally { + try { + if(pw != null) { + pw.close(); + } + if(sw != null) { + sw.close(); + } + } catch (Exception e1) { + e1.printStackTrace(); + } + } + return sw.toString(); + } +} diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/HttpClientUtils.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/HttpClientUtils.java new file mode 100644 index 0000000..5f90593 --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/HttpClientUtils.java @@ -0,0 +1,318 @@ +//package com.atguigu.tingshu.common.util; +// +// +//import org.apache.commons.io.IOUtils; +//import org.apache.http.Consts; +//import org.apache.http.HttpEntity; +//import org.apache.http.HttpResponse; +//import org.apache.http.NameValuePair; +//import org.apache.http.client.HttpClient; +//import org.apache.http.client.config.RequestConfig; +//import org.apache.http.client.config.RequestConfig.Builder; +//import org.apache.http.client.entity.UrlEncodedFormEntity; +//import org.apache.http.client.methods.HttpGet; +//import org.apache.http.client.methods.HttpPost; +//import org.apache.http.conn.ConnectTimeoutException; +//import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +//import org.apache.http.conn.ssl.SSLContextBuilder; +//import org.apache.http.conn.ssl.TrustStrategy; +//import org.apache.http.conn.ssl.X509HostnameVerifier; +//import org.apache.http.entity.ContentType; +//import org.apache.http.entity.StringEntity; +//import org.apache.http.impl.client.CloseableHttpClient; +//import org.apache.http.impl.client.HttpClients; +//import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +//import org.apache.http.message.BasicNameValuePair; +//import org.springframework.util.StringUtils; +// +//import javax.net.ssl.SSLContext; +//import javax.net.ssl.SSLException; +//import javax.net.ssl.SSLSession; +//import javax.net.ssl.SSLSocket; +//import java.io.IOException; +//import java.net.SocketTimeoutException; +//import java.security.GeneralSecurityException; +//import java.security.cert.CertificateException; +//import java.security.cert.X509Certificate; +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Map; +//import java.util.Map.Entry; +//import java.util.Set; +// +//public class HttpClientUtils { +// +// public static final int connTimeout=10000; +// public static final int readTimeout=10000; +// public static final String charset="UTF-8"; +// private static HttpClient client = null; +// +// static { +// PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); +// cm.setMaxTotal(128); +// cm.setDefaultMaxPerRoute(128); +// client = HttpClients.custom().setConnectionManager(cm).build(); +// } +// +// public static String postParameters(String url, String parameterStr) throws ConnectTimeoutException, SocketTimeoutException, Exception{ +// return post(url,parameterStr,"application/x-www-form-urlencoded",charset,connTimeout,readTimeout); +// } +// +// public static String postParameters(String url, String parameterStr,String charset, Integer connTimeout, Integer readTimeout) throws ConnectTimeoutException, SocketTimeoutException, Exception{ +// return post(url,parameterStr,"application/x-www-form-urlencoded",charset,connTimeout,readTimeout); +// } +// +// public static String postParameters(String url, Map params) throws ConnectTimeoutException, +// SocketTimeoutException, Exception { +// return postForm(url, params, null, connTimeout, readTimeout); +// } +// +// public static String postParameters(String url, Map params, Integer connTimeout,Integer readTimeout) throws ConnectTimeoutException, +// SocketTimeoutException, Exception { +// return postForm(url, params, null, connTimeout, readTimeout); +// } +// +// public static String get(String url) throws Exception { +// return get(url, charset, null, null); +// } +// +// public static String get(String url, String charset) throws Exception { +// return get(url, charset, connTimeout, readTimeout); +// } +// +// /** +// * 发送一个 Post 请求, 使用指定的字符集编码. +// * +// * @param url +// * @param body RequestBody +// * @param mimeType 例如 application/xml "application/x-www-form-urlencoded" a=1&b=2&c=3 +// * @param charset 编码 +// * @param connTimeout 建立链接超时时间,毫秒. +// * @param readTimeout 响应超时时间,毫秒. +// * @return ResponseBody, 使用指定的字符集编码. +// * @throws ConnectTimeoutException 建立链接超时异常 +// * @throws SocketTimeoutException 响应超时 +// * @throws Exception +// */ +// public static String post(String url, String body, String mimeType,String charset, Integer connTimeout, Integer readTimeout) +// throws ConnectTimeoutException, SocketTimeoutException, Exception { +// HttpClient client = null; +// HttpPost post = new HttpPost(url); +// String result = ""; +// try { +// if (!StringUtils.isEmpty(body)) { +// HttpEntity entity = new StringEntity(body, ContentType.create(mimeType, charset)); +// post.setEntity(entity); +// } +// // 设置参数 +// Builder customReqConf = RequestConfig.custom(); +// if (connTimeout != null) { +// customReqConf.setConnectTimeout(connTimeout); +// } +// if (readTimeout != null) { +// customReqConf.setSocketTimeout(readTimeout); +// } +// post.setConfig(customReqConf.build()); +// +// HttpResponse res; +// if (url.startsWith("https")) { +// // 执行 Https 请求. +// client = createSSLInsecureClient(); +// res = client.execute(post); +// } else { +// // 执行 Http 请求. +// client = HttpClientUtils.client; +// res = client.execute(post); +// } +// result = IOUtils.toString(res.getEntity().getContent(), charset); +// } finally { +// post.releaseConnection(); +// if (url.startsWith("https") && client != null&& client instanceof CloseableHttpClient) { +// ((CloseableHttpClient) client).close(); +// } +// } +// return result; +// } +// +// +// /** +// * 提交form表单 +// * +// * @param url +// * @param params +// * @param connTimeout +// * @param readTimeout +// * @return +// * @throws ConnectTimeoutException +// * @throws SocketTimeoutException +// * @throws Exception +// */ +// public static String postForm(String url, Map params, Map headers, Integer connTimeout,Integer readTimeout) throws ConnectTimeoutException, +// SocketTimeoutException, Exception { +// +// HttpClient client = null; +// HttpPost post = new HttpPost(url); +// try { +// if (params != null && !params.isEmpty()) { +// List formParams = new ArrayList(); +// Set> entrySet = params.entrySet(); +// for (Entry entry : entrySet) { +// formParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); +// } +// UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, Consts.UTF_8); +// post.setEntity(entity); +// } +// +// if (headers != null && !headers.isEmpty()) { +// for (Entry entry : headers.entrySet()) { +// post.addHeader(entry.getKey(), entry.getValue()); +// } +// } +// // 设置参数 +// Builder customReqConf = RequestConfig.custom(); +// if (connTimeout != null) { +// customReqConf.setConnectTimeout(connTimeout); +// } +// if (readTimeout != null) { +// customReqConf.setSocketTimeout(readTimeout); +// } +// post.setConfig(customReqConf.build()); +// HttpResponse res = null; +// if (url.startsWith("https")) { +// // 执行 Https 请求. +// client = createSSLInsecureClient(); +// res = client.execute(post); +// } else { +// // 执行 Http 请求. +// client = HttpClientUtils.client; +// res = client.execute(post); +// } +// return IOUtils.toString(res.getEntity().getContent(), "UTF-8"); +// } finally { +// post.releaseConnection(); +// if (url.startsWith("https") && client != null +// && client instanceof CloseableHttpClient) { +// ((CloseableHttpClient) client).close(); +// } +// } +// } +// +// +// +// +// /** +// * 发送一个 GET 请求 +// * +// * @param url +// * @param charset +// * @param connTimeout 建立链接超时时间,毫秒. +// * @param readTimeout 响应超时时间,毫秒. +// * @return +// * @throws ConnectTimeoutException 建立链接超时 +// * @throws SocketTimeoutException 响应超时 +// * @throws Exception +// */ +// public static String get(String url, String charset, Integer connTimeout,Integer readTimeout) +// throws ConnectTimeoutException,SocketTimeoutException, Exception { +// +// HttpClient client = null; +// HttpGet get = new HttpGet(url); +// String result = ""; +// try { +// // 设置参数 +// Builder customReqConf = RequestConfig.custom(); +// if (connTimeout != null) { +// customReqConf.setConnectTimeout(connTimeout); +// } +// if (readTimeout != null) { +// customReqConf.setSocketTimeout(readTimeout); +// } +// get.setConfig(customReqConf.build()); +// +// HttpResponse res = null; +// +// if (url.startsWith("https")) { +// // 执行 Https 请求. +// client = createSSLInsecureClient(); +// res = client.execute(get); +// } else { +// // 执行 Http 请求. +// client = HttpClientUtils.client; +// res = client.execute(get); +// } +// +// result = IOUtils.toString(res.getEntity().getContent(), charset); +// } finally { +// get.releaseConnection(); +// if (url.startsWith("https") && client != null && client instanceof CloseableHttpClient) { +// ((CloseableHttpClient) client).close(); +// } +// } +// return result; +// } +// +// +// /** +// * 从 response 里获取 charset +// * +// * @param ressponse +// * @return +// */ +// @SuppressWarnings("unused") +// private static String getCharsetFromResponse(HttpResponse ressponse) { +// // Content-Type:text/html; charset=GBK +// if (ressponse.getEntity() != null && ressponse.getEntity().getContentType() != null && ressponse.getEntity().getContentType().getValue() != null) { +// String contentType = ressponse.getEntity().getContentType().getValue(); +// if (contentType.contains("charset=")) { +// return contentType.substring(contentType.indexOf("charset=") + 8); +// } +// } +// return null; +// } +// +// +// +// /** +// * 创建 SSL连接 +// * @return +// * @throws GeneralSecurityException +// */ +// private static CloseableHttpClient createSSLInsecureClient() throws GeneralSecurityException { +// try { +// SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { +// public boolean isTrusted(X509Certificate[] chain,String authType) throws CertificateException { +// return true; +// } +// }).build(); +// +// SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, new X509HostnameVerifier() { +// +// @Override +// public boolean verify(String arg0, SSLSession arg1) { +// return true; +// } +// +// @Override +// public void verify(String host, SSLSocket ssl) +// throws IOException { +// } +// +// @Override +// public void verify(String host, X509Certificate cert) +// throws SSLException { +// } +// +// @Override +// public void verify(String host, String[] cns, +// String[] subjectAlts) throws SSLException { +// } +// +// }); +// +// return HttpClients.custom().setSSLSocketFactory(sslsf).build(); +// +// } catch (GeneralSecurityException e) { +// throw e; +// } +// } +//} \ No newline at end of file diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/IpUtil.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/IpUtil.java new file mode 100644 index 0000000..b88c107 --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/IpUtil.java @@ -0,0 +1,82 @@ +package com.atguigu.tingshu.common.util; + +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.http.HttpHeaders; +import org.springframework.http.server.reactive.ServerHttpRequest; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * 获取ip地址 + */ +public class IpUtil { + + public static String getIpAddress(HttpServletRequest request) { + String ipAddress = null; + try { + ipAddress = request.getHeader("x-forwarded-for"); + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("WL-Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getRemoteAddr(); + if (ipAddress.equals("127.0.0.1")) { + // 根据网卡取本机配置的IP + InetAddress inet = null; + try { + inet = InetAddress.getLocalHost(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + ipAddress = inet.getHostAddress(); + } + } + // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 + if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length() + // = 15 + if (ipAddress.indexOf(",") > 0) { + ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); + } + } + } catch (Exception e) { + ipAddress=""; + } + // ipAddress = this.getRequest().getRemoteAddr(); + + return ipAddress; + } + + public static String getGatwayIpAddress(ServerHttpRequest request) { + HttpHeaders headers = request.getHeaders(); + String ip = headers.getFirst("x-forwarded-for"); + if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) { + // 多次反向代理后会有多个ip值,第一个ip才是真实ip + if (ip.indexOf(",") != -1) { + ip = ip.split(",")[0]; + } + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = headers.getFirst("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = headers.getFirst("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = headers.getFirst("HTTP_CLIENT_IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = headers.getFirst("HTTP_X_FORWARDED_FOR"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = headers.getFirst("X-Real-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddress().getAddress().getHostAddress(); + } + return ip; + } +} \ No newline at end of file diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/MD5.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/MD5.java new file mode 100644 index 0000000..ce4e21b --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/MD5.java @@ -0,0 +1,39 @@ +package com.atguigu.tingshu.common.util; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + + +public final class MD5 { + + public static String encrypt(String strSrc) { + try { + char hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', + '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + byte[] bytes = strSrc.getBytes(); + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(bytes); + bytes = md.digest(); + int j = bytes.length; + char[] chars = new char[j * 2]; + int k = 0; + for (int i = 0; i < bytes.length; i++) { + byte b = bytes[i]; + chars[k++] = hexChars[b >>> 4 & 0xf]; + chars[k++] = hexChars[b & 0xf]; + } + return new String(chars); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + throw new RuntimeException("MD5加密出错!!+" + e); + } + } + + public static void main(String[] args) { + String msg = "{\"liveRoomId\":1,\"msgContent\":1,\"msgType\":\"4\",\"timestamp\":1679969941853}"; + System.out.println(msg); + msg = msg.replaceAll("\\\\", ""); + System.out.println(msg); + System.out.println(MD5.encrypt("111111")); + } +} diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/MongoUtil.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/MongoUtil.java new file mode 100644 index 0000000..b0f8f61 --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/MongoUtil.java @@ -0,0 +1,38 @@ +package com.atguigu.tingshu.common.util; + +import lombok.Getter; + +public class MongoUtil { + + @Getter + public enum MongoCollectionEnum { + + USER_SUBSCRIBE(100,"userSubscribe"), + USER_COLLECT(100,"userCollect"), + USER_LISTEN_PROCESS(100,"userListenProcess"), + COMMENT(100,"comment"), + COMMENT_PRAISE(100,"commentPraise"), + ; + + private Integer partition; + private String collectionPrefix; + + MongoCollectionEnum(Integer partition, String collectionPrefix) { + this.partition = partition; + this.collectionPrefix = collectionPrefix; + } + + } + + + /** + * 获取mongo表名 + * @param mongoCollection Collection前缀 + * @param userId 用户ID + * @return + */ + public static String getCollectionName(MongoCollectionEnum mongoCollection, Long userId) { + return mongoCollection.getCollectionPrefix() + "_" + userId; + } +} + diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/RandomUtil.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/RandomUtil.java new file mode 100644 index 0000000..20f69e6 --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/RandomUtil.java @@ -0,0 +1,65 @@ +package com.atguigu.tingshu.common.util; + +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Random; + +/** + * 获取随机数 + * + * @author qianyi + * + */ +public class RandomUtil { + + private static final Random random = new Random(); + + private static final DecimalFormat fourdf = new DecimalFormat("0000"); + + private static final DecimalFormat sixdf = new DecimalFormat("000000"); + + public static String getFourBitRandom() { + return fourdf.format(random.nextInt(10000)); + } + + public static String getSixBitRandom() { + return sixdf.format(random.nextInt(1000000)); + } + + /** + * 给定数组,抽取n个数据 + * + * @param swQidsList + * @param n + * @return + */ + public static ArrayList getRandom(List list, int n) { + + Random random = new Random(); + + HashMap hashMap = new HashMap(); + + // 生成随机数字并存入HashMap + for (int i = 0; i < list.size(); i++) { + + int number = random.nextInt(100) + 1; + + hashMap.put(number, i); + } + + // 从HashMap导入数组 + Object[] robjs = hashMap.values().toArray(); + + ArrayList r = new ArrayList(); + + // 遍历数组并打印数据 + for (int i = 0; i < n; i++) { + r.add(list.get((int) robjs[i])); + System.out.print(list.get((int) robjs[i]) + "\t"); + } + System.out.print("\n"); + return r; + } +} diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/ResponseUtil.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/ResponseUtil.java new file mode 100644 index 0000000..fe88b4c --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/ResponseUtil.java @@ -0,0 +1,23 @@ +package com.atguigu.tingshu.common.util; + +import com.atguigu.tingshu.common.result.Result; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; + +import java.io.IOException; + +public class ResponseUtil { + + public static void out(HttpServletResponse response, Result r) { + ObjectMapper mapper = new ObjectMapper(); + response.setStatus(HttpStatus.OK.value()); + response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE); + try { + mapper.writeValue(response.getWriter(), r); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/SensitiveWordFilterUtil.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/SensitiveWordFilterUtil.java new file mode 100644 index 0000000..7b1c904 --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/SensitiveWordFilterUtil.java @@ -0,0 +1,191 @@ +package com.atguigu.tingshu.common.util; + +import java.util.*; + +public class SensitiveWordFilterUtil { + + //构建一个DFA算法模型 + private static Map sensitiveWordMap = null; + + /** + * 敏感词替换 + * @param txt + * @return + */ + public static String replaceSensitiveWord(String txt){ + if(null == sensitiveWordMap) return txt; + return replaceSensitiveWord(txt, 1, "*"); + } + + /** + * 读取敏感词库,将敏感词放入HashSet中,构建一个DFA算法模型:
+ * 中 = { + * isEnd = 0 + * 国 = {
+ * isEnd = 1 + * 人 = {isEnd = 0 + * 民 = {isEnd = 1} + * } + * 男 = { + * isEnd = 0 + * 人 = { + * isEnd = 1 + * } + * } + * } + * } + * 五 = { + * isEnd = 0 + * 星 = { + * isEnd = 0 + * 红 = { + * isEnd = 0 + * 旗 = { + * isEnd = 1 + * } + * } + * } + * } + */ + public static void buildDFAModel(List keyWordList) { + sensitiveWordMap = new HashMap(keyWordList.size()); //初始化敏感词容器,减少扩容操作 + String key = null; + Map nowMap = null; + Map newWorMap = null; + //迭代keyWordSet + Iterator iterator = keyWordList.iterator(); + while(iterator.hasNext()){ + key = iterator.next(); //关键字 + nowMap = sensitiveWordMap; + for(int i = 0 ; i < key.length() ; i++){ + char keyChar = key.charAt(i); //转换成char型 + Object wordMap = nowMap.get(keyChar); //获取 + + if(wordMap != null){ //如果存在该key,直接赋值 + nowMap = (Map) wordMap; + } + else{ //不存在则,则构建一个map,同时将isEnd设置为0,因为他不是最后一个 + newWorMap = new HashMap(); + newWorMap.put("isEnd", "0"); //不是最后一个 + nowMap.put(keyChar, newWorMap); + nowMap = newWorMap; + } + + if(i == key.length() - 1){ + nowMap.put("isEnd", "1"); //最后一个 + } + } + } + } + + /** + * 获取文字中的敏感词 + * @param txt 文字 + * @param matchType 匹配规则 1:最小匹配规则,2:最大匹配规则 + * @return + */ + private static Set getSensitiveWord(String txt , int matchType){ + Set sensitiveWordList = new HashSet(); + + for(int i = 0 ; i < txt.length() ; i++){ + int length = CheckSensitiveWord(txt, i, matchType); //判断是否包含敏感字符 + if(length > 0){ //存在,加入list中 + sensitiveWordList.add(txt.substring(i, i+length)); + i = i + length - 1; //减1的原因,是因为for会自增 + } + } + + return sensitiveWordList; + } + + /** + * 替换敏感字字符 + * @param txt + * @param matchType + * @param replaceChar 替换字符,默认* + */ + private static String replaceSensitiveWord(String txt,int matchType,String replaceChar){ + String resultTxt = txt; + Set set = getSensitiveWord(txt, matchType); //获取所有的敏感词 + Iterator iterator = set.iterator(); + String word = null; + String replaceString = null; + while (iterator.hasNext()) { + word = iterator.next(); + replaceString = getReplaceChars(replaceChar, word.length()); + resultTxt = resultTxt.replaceAll(word, replaceString); + } + + return resultTxt; + } + + /** + * 获取替换字符串 + * @param replaceChar + * @param length + * @return + */ + private static String getReplaceChars(String replaceChar,int length){ + String resultReplace = replaceChar; + for(int i = 1 ; i < length ; i++){ + resultReplace += replaceChar; + } + + return resultReplace; + } + + /** + * 检查文字中是否包含敏感字符,检查规则如下:
+ * @param txt + * @param beginIndex + * @param matchType + * @return,如果存在,则返回敏感词字符的长度,不存在返回0 + */ + private static int CheckSensitiveWord(String txt,int beginIndex,int matchType){ + boolean flag = false; //敏感词结束标识位:用于敏感词只有1位的情况 + int matchFlag = 0; //匹配标识数默认为0 + char word = 0; + Map nowMap = sensitiveWordMap; + for(int i = beginIndex; i < txt.length() ; i++){ + word = txt.charAt(i); + nowMap = (Map) nowMap.get(word); //获取指定key + if(nowMap != null){ //存在,则判断是否为最后一个 + matchFlag++; //找到相应key,匹配标识+1 + if("1".equals(nowMap.get("isEnd"))){ //如果为最后一个匹配规则,结束循环,返回匹配标识数 + flag = true; //结束标志位为true + if(matchType == 1){ //最小规则,直接返回,最大规则还需继续查找 + break; + } + } + } + else{ //不存在,直接返回 + break; + } + } + if(matchFlag < 2 || !flag){ //长度必须大于等于1,为词 + matchFlag = 0; + } + return matchFlag; + } + + public static void main(String[] args) { + //System.out.println("敏感词的数量:" + filter.sensitiveWordMap.size()); + String string = "太多的伤感情怀也许只局限于饲养基地 荧幕中的情节,主人公尝试着去用某种方式渐渐的很潇洒地释自杀指南怀那些自己经历的伤感。" + + "然后法轮功 我们的扮演的角色就是跟随着主人公的喜红客联盟 怒哀乐而过于牵强的把自己的情感也附加于银幕情节中,然后感动就流泪," + + "难过就躺在某一个人的怀里尽情的阐述心扉或者手机卡复制器一个人一杯红酒一部电影在夜三级片 深人静的晚上,关上电话静静的发呆着。"; + System.out.println("待检测语句字数:" + string.length()); + long beginTime = System.currentTimeMillis(); + + List keyWordSet = new ArrayList<>(); + keyWordSet.add("黄色"); + keyWordSet.add("自杀"); + keyWordSet.add("法轮功"); + keyWordSet.add("三级片"); + SensitiveWordFilterUtil.buildDFAModel(keyWordSet); + + String content = SensitiveWordFilterUtil.replaceSensitiveWord(string); + System.out.println("替换后:" + content); + long endTime = System.currentTimeMillis(); + System.out.println("总共消耗时间为:" + (endTime - beginTime)); + } +} diff --git a/common/common-util/src/main/java/com/atguigu/tingshu/common/util/UploadFileUtil.java b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/UploadFileUtil.java new file mode 100644 index 0000000..4246029 --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/tingshu/common/util/UploadFileUtil.java @@ -0,0 +1,31 @@ +package com.atguigu.tingshu.common.util; + +import lombok.SneakyThrows; +import org.joda.time.DateTime; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; + + +public class UploadFileUtil { + + /** + * 文件上传到临时路径 + * @param file + * @return + */ + @SneakyThrows + public static String uploadTempPath(String tempPath, MultipartFile file) { + if (null == file) return ""; + String date = new DateTime().toString("yyyyMMdd"); + String filePath = tempPath + File.separator + date; + File curFlie = new File(filePath); + if (!curFlie.exists()) { + curFlie.mkdirs(); + } + filePath = filePath + File.separator + file.getOriginalFilename(); + file.transferTo(new File(filePath)); + return filePath; + } + +} diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/result/Result.class b/common/common-util/target/classes/com/atguigu/tingshu/common/result/Result.class new file mode 100644 index 0000000000000000000000000000000000000000..56c9d4ad02480654e56fadabed04c861bf2e24cd GIT binary patch literal 5530 zcmb_gYgZfB72Q|TNJ1WLkPVJvoSKBBAVK81shfyL>|h9rfj9`0=HZkJO;D_(R*(60dZvuJ((&R)15{bf391(ja74ZnGB5+{d}+?6c3g=ibr3 z{{8Xa08HaI34{=iA!5QnRH5&>b<@h0t;$yR)s5?R(NTy_l`17?Mj<>pwiZKNVYFD? z&05Y@qqNn?I;F~1eY=t6*lx9wt=aWP*~zZBuLNQU%j1X%6TJ$ty6s%D97|zfbg|vk z=weLs61}s1O~ME+3KdPFc?&tuQ>LWUGwapH1QZx z3JGFevg>tgi}DBH7MvQLcEwL&D2CG}p1>Cr&UOn*Fw9jNyF|2QI~viz=vaUeA5sFR zFl^#UJVij1Z2~%RK-@zlzCLZ@8KEy!-Ra@tQ4?cG(@^2+?Ce~jpm45h?tGXohvO2K z35C5Nb2>*RA6?^E*GpXESrcc)smQxlsVr`tGx23{D>8pEzt}^!zhdG%zRH238{gv{ zxD>G$Oyn?0I(GfYCIgZljUqU0Vg@f#-=>?cK`GB^A^W0<~07(PGC4pR^q@qGvkc|0lf6iQna%W2fO zMZ&AABsQV}9a}6_?B&MphFx2=Hp-k%E>??HdCjVor0)$zob3`prMu4tZry{5ZteNX zvR!MLBGegzjp}Np&|7e<;?9z_=i%yGvYqYf<`t`E?b?oABgR*zR&xOgJXU5#sjB;A z_6-+emm24;}*HQH$pPK=(L{Ww&O? z+sh9?+r1K>hy!Pre{4Jol<;nSOJO#cE|09n2lHZ3i=SfM`$S?c{eK#KAjasJTPvdO z=2=rvRUY?MXWOo^q)15^(N#R*j(Hu^ooLqWUOm_B>vg(Xd+T&(qHDgV(oz(RD=Yb> zIfBZw?b(ixH0>B8T5a5^>PYZD)Hz=Qo6FncJi`msMy+Vim!u>f(YK^$WG5lES`cD)_T6d;Wm0erx8mDKe+2bMHp2KCpE3;$;tf7cEr2)i z7JF|W7`f*5c**5DQTHvH6&T0=ir5<;p=U9DAMs3jABoH#I2>`6C;0{*N1V4G6GL2l z+BGz&m&$F0^Kl%(J2a_WldZY6=G-;TeckP;PtYGD1MBP=yl3;J-L=reyWWO}?n4?7 z)BWjtIJ!KM*++6>d>?}of=xTFu?>@Sd|Gx;_k6p${w~$=BZkbkqnm11ccLqG z+UW}M@$=nNE9xcXqv_0F@LYTGO#~Q@He(v~>Q1W+%UmF)=UMNReD-%T@_e^O7 zvCT-%HNxLPyo6Z`dNS3m5q&O+C%U@(M&$UBjUCv|eO}g7ImnMr?VDQVyNAnfXVSli z5xJZB2V%d25x$%GJ7P=YJa#U)T{bQ)v(R74MJE1Dv!!BZ~8bEbqE$HJ`BMbz1f(A9Z3Y#CU>1vJ=-a+40@CR;H|pTc`=#RIkcwwDcB z@B7p%Cu9a@EdB|O@{IfxgS;v5FRnhtW4hTBZ2HAvk1>wOZvvWZe$(@p80s>FWpOfi zQwS!j(R9+FYjX8yC9BK@lJ$n0NBjwZLfmNT0xd+T`fA_gRAkx>+fd)+HiH)L%iKY1 zVjoNEGQNLB23Sdyz59{TE1QNd=tXoL-aF>L`b+&BpFJ5Mg^^YNCpOA_yWF6 z5Ujlp9J?h!oQJpZ^%I0qr$Rhfi17q(?=|F&UAdMZ8V; g9ekI)5I)5B_>R-Y_xb-*{G7c6Tfe|B@oS|114is{6951J literal 0 HcmV?d00001 diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/result/ResultCodeEnum.class b/common/common-util/target/classes/com/atguigu/tingshu/common/result/ResultCodeEnum.class new file mode 100644 index 0000000000000000000000000000000000000000..1957c82ed670405620fb22206245bfb95be9230a GIT binary patch literal 4365 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 Ocs3fw-)Rgc{Nq0_1Jt1a literal 0 HcmV?d00001 diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/util/AuthContextHolder.class b/common/common-util/target/classes/com/atguigu/tingshu/common/util/AuthContextHolder.class new file mode 100644 index 0000000000000000000000000000000000000000..00fa9ac66b1193abd87ea544f3140604a1667cd2 GIT binary patch literal 973 zcmb7CTZ_|B5dKbYX<}@LHoCs}kQvULZ@&4?m-+GY%Qpaz;aJEaZ=hhKh>}3# z7AW<-z|;Ez`F3Y$q72i3W#a;Dfd}Jo=1A?vo*O&b3*7lMcBnQB11Hv=?>ve1^dJnh zdas{_{zOH@7tdAnd?K(hSPeUxMoLZw;aK`T3l&ri)NHJwF3|cXisZ}{scW?}EUDyP zXUG&y8!fC8&ShM)-8m05a7m!D;va;8%dJ;zTxB;(k(z}kic5I`^U!kxspCiqWXUqx z`Wa&O64|HH$CQov3oAO?v3lz9Ti4HR!XEpMEn27?t)hU%D@FM_opQKA`zUxPDc+=tLs?KRcF!O_CXh{v ze9du-A~zEN+t{IOVi&iFh?^f#=DYGI7~NA`T=nz%g9aPaz2Ye2HttZpOQ*Tmw9>$PNz2r*d!b7Wg1u&>H3Pw V+cRAI3}e-lPAC(_eS+k$_Y0AN&Vm2{ literal 0 HcmV?d00001 diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/util/Decimal2Serializer.class b/common/common-util/target/classes/com/atguigu/tingshu/common/util/Decimal2Serializer.class new file mode 100644 index 0000000000000000000000000000000000000000..21eb77094f20e2ac8801c3aa64a569719e9b6688 GIT binary patch literal 1354 zcmb7E*-{fh6g^FrAwyVX2?7dnPuNBQmomtMxD-|ps$!+e$IhfpIwmtzPY+W5fZyXw zsM0DQeek0!?@WdeiJ;EI?dk5@XU;kI_Wbzyu$2~37 zQLAY+xc%O99jnSUuSlnAy`ou3D9M}hqfiXVP3cIz#SqKo%LWD+CL8>aTP?2Z)>Bz~ zCT!W_O%o=D45ZT-#t6e$nA7A=&DyIpgsm9{wOi6kIyFMb<%_2Yoz;Q~17iWnOAJ%F z{{4J8$e2iD5>tfc30<;zQ!vctc6K7XGo(VyArqG|V_-Ioxd1!&X9H|kiBSAY;RwaG zOWKD%D5*tsm zuiQgf6{?UgGnkcbOE6?QRXkf2hQuLn`k@1-Z4fbJ7;aDt_Ecf<-$|3FT?5n!FNXDV z5H1o!JW84_$1XpJDq}uBvc-XxuHzZF%P|@fhrLxV=Cz*ak+BrI_v{5X5zwG2FmS#KOa$XiU&r zcIi9jzruLC)JEzUqY0yp@yGGynRpwSHl_pI7y{gJ#3{~FoI{2vEf7wYRyGJHgA{Jz zc9@ZkzDC%%gIvfUi#!%X5m_u@nGjd#WDINptMrnjEerRsPVd7pIt9uHWd@Qr!gwDK H!tvoRCRuK< literal 0 HcmV?d00001 diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/util/ExceptionUtil.class b/common/common-util/target/classes/com/atguigu/tingshu/common/util/ExceptionUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..9c196ea2e4dd3cf87661106f6f9a97114711b4ca GIT binary patch literal 1147 zcmb7CT~8B16g^XRyRa6id=v_TeE30IVEsU1C>o=pBy^DoRN=v7SvKur+ikX6@gMQ3 zFOW#0Z$9{se86~Sm)076u}ya7&OLMPxo7V8pP#<~c!>KtV(8MKB%mTLkUX^BTSmpI zm5i7BhmIWx#8=#!8$1%|n#~k7bPEiIAlEat0^hBbUi)s~_&PL6bV*>KmEL4FXk~Tu z${Lq>eYVg-M9KVKrl=!{D;oL}7{FkQBh<0_!FK9_>(vDM>XLCQussIaf#)|`!Ib>H!~t^Ep5`U{?IRf?AH z%J||?3CeCmz$pAzl|1=NPO$3xo^LvhhE*be=E9Rd-OK-@FM*hIM_{O<<8~9I79@)` zjs#Ne2kU%sB4TxBFRpVQI-fwGH+(45s)sFVV5Mj@LSfrw-#dy7Nt#Yj_6{~J->Nzs zCHkOmc}?GTp1Yx8ZBf$M1vxyJ!Zl8={Kdc*Mx5U%Mg~{GRn4A4d0?YUD}N{TWi_obomRdQJ@%0m#*o7T=TPpJSnUDUu+DgiI~jLDDt^n^1^TIM zfXE@LPVqm?JELrUjGc^A_XN47$u`Nxr*My_OGuMv6f49$CgvG2Ys9P*V-oXu>m zomixC2H9tkVO5in+^Nj$A$G+&-t7 VT*5g1gUGu?s)AJXmf|Gc;xB$#_x=C? literal 0 HcmV?d00001 diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/util/IpUtil.class b/common/common-util/target/classes/com/atguigu/tingshu/common/util/IpUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..c404cc262b2ebca552371446d98e5068b5bc5d46 GIT binary patch literal 2775 zcmbtWTT@e47+pI7P7FuDL@w1L-iqORlxnqtTI3?p1SsGQ+u|YFghN73JUIdEMc+Ep znLhPRAMDtvcg?Nj57;j3Z6YgRm-mni%0$MJeOxvqzwYNpb zE7-%0jKNH0!-=%*$RRT;1scmmFzdss%y`nV*KYR=r7W3td%}}G>=OuFjr44pS4iyF zaR3Jeb~3psxoo>~Fdk=uyF+Et@!>FGIM#Qv_b7kIRD|t1jv&N5iV<#!tH?@!$E+Wn z=+e-wqX)h8UH~smw8L!Fi87lN&>2L;j+v=3TLIqkJcccX{Thx6w3d8aE&`@DjjY9F z#q;i|8S>*!yJjpo7NfYJVN6FD z7X?n+PQu8l_!A3`xhz+0Cs|aelB;wKN18F$T9JlQt8|oZOM>;61WRl~1hb+uwXG=a zY`-57L^X`-m{9d`csrW}d^~H^atcW>OZ3JW@`pH(o9mA1;%Tv6-34 zxuHmSWPD~$iT5h?Qkc6oH##wOb#Q8UWLWilxK6~c^-M`KMU^Y$Zs>Ri@3LMP&4!u_ z+S<2OOw)EOS<)V}p2JNIrjB_f&^;w_DS^IVDxh#(*NcWYFN2u9Y?y8$XC-omORBPq zIfHY{cG}3fR>}xxF7qQ$HDt$Gy7dt&Eyr`q^U|3y=Tn>s6jXo3bSyPqpR95hEk#^p zd+z&-^%KsN%IS=PeOs4Xxx0&Xz{uK)EU5}CS7to4iph}UrVYbQHO=+LO+1&x&Uwvw zezB@5*IPYU_wmm6MG3jD?PN)$3c48k1TOr#UXsim+%vG;4?li z59s|N-?}f*i$~}yKzN*pX9-mb%RDiOT}ac1hc;f$W!NK#xJ93efJd}-33`sB4%GgE zHVqBFpfC70TGanQehxLBBs3URzoY8Fc@2YJtkAq#(2F8z6>IdQNV>zXmvg@n%aH<> zS{|38-OtcY{K!*Vppl*C`)KMepy&Ars9>;mo zFpRsT_hVeZeT)CMP3fm^rbXZ*T6%Ej9|7RVR{#J2 literal 0 HcmV?d00001 diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/util/MD5.class b/common/common-util/target/classes/com/atguigu/tingshu/common/util/MD5.class new file mode 100644 index 0000000000000000000000000000000000000000..ee06bf80b1cf49b5fc30eda5e796ce34a3f5624f GIT binary patch literal 2422 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 E2U_eED*ylh literal 0 HcmV?d00001 diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/util/MongoUtil.class b/common/common-util/target/classes/com/atguigu/tingshu/common/util/MongoUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..071b8971600762f7a5318d08a9df08a05bfd065e GIT binary patch literal 1302 zcmbtUT~8B16g{^Twv@_8K@dMcrDzMvst>+Y#MnqAX^{lP2OrF^9k&D98L~S|z zX0#{lJ7rsJMOJ7V5uTPW@9c@xxtwYra0f*~WneOdY|S(!VWO_I+>YA^GTajf0Y{2; zv(m5UN9>@KHqfDg|P9TpJf%r zkqoz*tgydJ;7~)_mTB&YkV#q@a;x&YCJsHhsgjri8TUyJo7KkX4 z%znDh#d5GlSiVHL9}@?U2n+vC<WR4Y-M0 y47Tb7$a4J1ojVe^jh%49xMM7)dDrQu7 zvZPOzGOlh;I#Z<#_llO8DY?3lxuBW_t9X$j9ZgszyD%Z4dC-gEYV&U9l$O_vs?lfJ zMb*s;_caP?QAc&#vz3tW)hqmE<4B-E#uf!hG?ufjP>>*-^gduR|43>eJrG9|nq_QL zupK)jY<)rkUXmgc3CYyyv>(_*W7xG>o|oV*1y70MqmDjbmpB5ZZ@GPFA&)E_K97|QG`K`^a->LK!C<#{`3ZBO?g5$+? zBs8T0O|Q_LWf-K2ZkgFl=tNdVmqKolGFw*bTvcNJu65G3)dhia`pWt=WSo%Duxjfm z3!viYL0ABkQ*cTES*4rqr~pF%+^66r^t0kg&1>KqXjaPU!D$6AV~~1kp&(LNpFsL@ zHO}CyjB^Uk<3gEXJ`)xkS1Z!m61XOPW8KP}BSBo!L{p2|1cz%x!9|RcYejWN%UNb# zb;opfijw21rb`s}Zxp#AnSgU~yn;(IE-Sc#t7Tl)1|%70MfiVJ6F5kZR^c@XQoIV+ zNVP-!6Z0@GX8vjwh(S#39U|KzIjcY()(+~XcBWJu*X$8>+~7`P(8{aEsA}tC9c)J2 zDV=q+4gUXQAWJOSo<1H0y}Iik59CRiPnEOAG^jbO&sQi`bEj;S3gGiNDAY1oKRHQQI1yX5kGRaF-r9p#d${ zCDOPS#)a83l*iWx>Z+i^6DPKt>1-Z$)%*;P8m}!f=85r;=1y6KbE>TtHCMBlY*km@ z2u||&FyYT@eY)su?dlnQP>dXndo9a#Tw9&>y*RZo+>YZzd?e#z!Rk*W?DeM8YnN`$ zSu<9ki^O(ro2f6tK3U`Zb0l1Z@NL4O&ro znguR$s$mT4u9mIBXA(kEwFG6rG&MVCsE(sKGVV&)x30F0QkLc{REu)3+y=TH5kz}OxA@)hQhnBXw0^LQfbwt~f(O>XPGQ!6a z4v*c6NI(AlXZsS4KE!beosnhq(Eem+G~5wO#S97$rIg*SW`3-GL=zWM6Ls-JV z*dm73?LWdW_;Ku3j9!1IM&ebjnxmrfh*xQiiig<1BifnKgtieQA_g%lH5z=p%OkX-I@`tYsS z_Yh;=MG14nx*wx>1M{>!k0C7J2K~KB8_`%_>n&=%&7B>HJQhEA5;9t(zmR^6Mj7wO z=;5Lp?^2^W#E@VxFx1Tz8s&nP?g^T6ADfrabSd%r1E}{Qdve~BcM6jE+^F%4>Jevk ijr@fb#(Vr0!u$BZb1&f*H9y7YT*WEf!58=n&Hn(RM~mi)9V%r0yAFJa$m|stN3**aGTQGOrp@ONi8@0u-3I)mhHBROR&&a#2(ld z_SzW4kif|(uDeM)_QU$iShm!wDBg4%TDRSYB&%BLG!e+HJQA3y_MlrS(f>XhBN!Fv z-;zP9vTT?3U<~6H4%j$|LjvWd+?27FZldC?Ktdqx&qVU&B~$oe zfyuunv#e^qTzk`21soMP#?k}dliDXNO=45=8ZxHKo6pu3=dPNxj@vka34uX!7ot$B zP#bfBv2yiy4_37SsWQE8OitQ3g(>D%SNeJE6McaL<>`*PAGuGc+Z7NI3ukPUF)dJf zWt7)DuuOH`Q@`V*vMXGt~_0+GYu4eK{BX!AZ5s6g$f%_BVXS@jH7or-A9;*7GdYra4RJ;l!hL*?`ypFY`Lr}s3tr>$(^1m-fU9`}cb<-mo-0O>j2T%Lkwzw-g&T_!$H zYQ*4%Um&$R3b=?%ycKa7SLnnTe?%YhJkNfH_2L7H%g%e0wlTbe{W&-zM|N;5hgoL_ zlYGFoar!L^kLR{A`;H!u;0)*5p$8Lh5(Uyh(jn}}Fr_1uk5N8~8FE~VXSq0xH^cu` zT%#o;<2oul&DRaSt?WG)@D^?}!#m`TBlq0|u`p)guEh-%7Mwg5C@bb@44Q#v_epbj F@B@)hf7t*4 literal 0 HcmV?d00001 diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/util/SensitiveWordFilterUtil.class b/common/common-util/target/classes/com/atguigu/tingshu/common/util/SensitiveWordFilterUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..85631c4b06fb599f82a69a0e4578c1a41a770ff1 GIT binary patch literal 5773 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 literal 0 HcmV?d00001 diff --git a/common/common-util/target/classes/com/atguigu/tingshu/common/util/UploadFileUtil.class b/common/common-util/target/classes/com/atguigu/tingshu/common/util/UploadFileUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..bf11e73dbfe16f4ef2b94ff54a6e0f8ac8d5dc4e GIT binary patch literal 1953 zcmb7FZC4XV6n-W|HVG^5NU2tBi%NJ~t$m@!(pHqJO@NvZMEY`uWJs3m?&R#w3jC9v z{(yeA{UAp@r~Td^WqW5gNOF?Xa~R0HJagyHz0bXK_n)_~{{rw8e#sz#J_AV;=g`kE zyw9I=%i&(lTHoCl6~)kh*Y<3+%+NQJEvJxTfPoCd1?ktUeOcv}vRz@_=Sq}ll0h1M zDV%3W9Z@S3s#OgQnHa_hfl3yYZ+kU{>ofV&+hQ=6?S|4A!?=M76BjVaU`A(bX|39h zU`Pj|$$hS*&oJ73c$B=HGVwkxGEBO>Ay%YU;cClPb(#f=dn#af+{2P?UEN3zYcpi+ z2b#>w3==)nX3JXQs)-Nr5pgRH?Lb>V+&%LvHJ??14qf-pyGd(QVcP*G$gvF3i zKKFt>;g=-CNXv~D=ecazz%7Qc)8LirzC7T&4h8=Bqk&-{ z@C0uhMdA#%+v$0yq9X;Kgq}{W2Zt5WRJQbT2EJritVq}5sutR{kdn`<1@+J(%$1%M zD%-I(n~vmF?e8Wn8ImiqN^TG3ZBML)?k@SIt<@PLE8Hn_-`49Em{fI}LUJ>Iwrg?> zgJE=WNx01ouIdb1?Jl-bJb%U@b`a9iK`vG4z0q^pBPZj#j7sRQIyQlWai*Tci?VB4 z98x;ACGaWT`boaCH>uSz+&Z(36zihml}3R#BNh$hJBrE4n;$L+RhQKbda|xi!Y7_H zMH%`Pp`%4f)fu`)onxfvo|Gz}oNUI&gQ0#r$)Jdmfld9o%M8<}>1cb;WkXo;o$-TT zvFD_%?5sAxcvX3RC8hnsQ@ie?bj^un%|yVRSp0DV7}X_dy;_=c3wVK$5;sRG$N_dEJWjTdi_ z-af{_sQD6uh1owbI{zB)0c&qCw!LtSOLvk}$(OkD8`66Gcx!<~=3e1CLo7FUBKQjP z2`s!Q%>Nx(ZQv + + + tingshu-parent + com.atguigu.tingshu + 1.0 + + 4.0.0 + + common + pom + + + service-util + common-util + rabbit-util + common-log + + + diff --git a/common/rabbit-util/pom.xml b/common/rabbit-util/pom.xml new file mode 100644 index 0000000..432d36f --- /dev/null +++ b/common/rabbit-util/pom.xml @@ -0,0 +1,48 @@ + + + + common + com.atguigu.tingshu + 1.0 + + 4.0.0 + + rabbit-util + 1.0 + jar + + + rabbit-util服务 + + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.springframework.cloud + spring-cloud-starter-bus-amqp + + + + com.alibaba + fastjson + + + + org.projectlombok + lombok + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + diff --git a/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/config/RabbitInitConfigApplicationListener.java b/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/config/RabbitInitConfigApplicationListener.java new file mode 100644 index 0000000..06ff23e --- /dev/null +++ b/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/config/RabbitInitConfigApplicationListener.java @@ -0,0 +1,139 @@ +package com.atguigu.tingshu.common.rabbit.config; + +import com.alibaba.fastjson.JSON; +import com.atguigu.tingshu.common.rabbit.entity.GuiguCorrelationData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.connection.CorrelationData; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.ApplicationListener; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import java.util.concurrent.TimeUnit; + + +@Slf4j +@Component +public class RabbitInitConfigApplicationListener implements ApplicationListener { + + @Autowired + private RabbitTemplate rabbitTemplate; + + @Autowired + private RedisTemplate redisTemplate; + + @Override + public void onApplicationEvent(ApplicationReadyEvent event) { + this.setupCallbacks(); + } + + private void setupCallbacks() { + + /** + * 只确认消息是否正确到达 Exchange 中,成功与否都会回调 + * + * @param correlation 相关数据 非消息本身业务数据 + * @param ack 应答结果 + * @param reason 如果发送消息到交换器失败,错误原因 + */ + this.rabbitTemplate.setConfirmCallback((correlationData, ack, reason) -> { + if (ack) { + //消息到交换器成功 + log.info("消息发送到Exchange成功:{}", correlationData); + } else { + //消息到交换器失败 + log.error("消息发送到Exchange失败:{}", reason); + + //执行消息重发 + this.retrySendMsg(correlationData); + } + }); + + /** + * 消息没有正确到达队列时触发回调,如果正确到达队列不执行 + */ + this.rabbitTemplate.setReturnsCallback(returned -> { + log.error("Returned: " + returned.getMessage() + "\nreplyCode: " + returned.getReplyCode() + + "\nreplyText: " + returned.getReplyText() + "\nexchange/rk: " + + returned.getExchange() + "/" + returned.getRoutingKey()); + + //当路由队列失败 也需要重发 + //1.构建相关数据对象 + String redisKey = returned.getMessage().getMessageProperties().getHeader("spring_returned_message_correlation"); + String correlationDataStr = (String) redisTemplate.opsForValue().get(redisKey); + GuiguCorrelationData guiguCorrelationData = JSON.parseObject(correlationDataStr, GuiguCorrelationData.class); + //todo 方式一:如果不考虑延迟消息重发 直接返回 + if(guiguCorrelationData.isDelay()){ + return; + } + //2.调用消息重发方法 + this.retrySendMsg(guiguCorrelationData); + }); + } + +// /** +// * 消息重新发送 +// * +// * @param correlationData +// */ +// private void retrySendMsg(CorrelationData correlationData) { +// //获取相关数据 +// GuiguCorrelationData gmallCorrelationData = (GuiguCorrelationData) correlationData; +// +// //获取redis中存放重试次数 +// //先重发,在写会到redis中次数 +// int retryCount = gmallCorrelationData.getRetryCount(); +// if (retryCount >= 3) { +// //超过最大重试次数 +// log.error("生产者超过最大重试次数,将失败的消息存入数据库用人工处理;给管理员发送邮件;给管理员发送短信;"); +// return; +// } +// //重发消息 +// rabbitTemplate.convertAndSend(gmallCorrelationData.getExchange(), gmallCorrelationData.getRoutingKey(), gmallCorrelationData.getMessage(), gmallCorrelationData); +// //重发次数+1 +// retryCount += 1; +// gmallCorrelationData.setRetryCount(retryCount); +// redisTemplate.opsForValue().set(gmallCorrelationData.getId(), JSON.toJSONString(gmallCorrelationData), 10, TimeUnit.MINUTES); +// log.info("进行消息重发!"); +// } + + /** + * 消息重新发送 + * + * @param correlationData + */ + private void retrySendMsg(CorrelationData correlationData) { + //获取相关数据 + GuiguCorrelationData gmallCorrelationData = (GuiguCorrelationData) correlationData; + + //获取redis中存放重试次数 + //先重发,在写会到redis中次数 + int retryCount = gmallCorrelationData.getRetryCount(); + if (retryCount >= 3) { + //超过最大重试次数 + log.error("生产者超过最大重试次数,将失败的消息存入数据库用人工处理;给管理员发送邮件;给管理员发送短信;"); + return; + } + //重发次数+1 + retryCount += 1; + gmallCorrelationData.setRetryCount(retryCount); + redisTemplate.opsForValue().set(gmallCorrelationData.getId(), JSON.toJSONString(gmallCorrelationData), 10, TimeUnit.MINUTES); + log.info("进行消息重发!"); + //重发消息 + //todo 方式二:如果是延迟消息,依然需要设置消息延迟时间 + if (gmallCorrelationData.isDelay()) { + //延迟消息 + rabbitTemplate.convertAndSend(gmallCorrelationData.getExchange(), gmallCorrelationData.getRoutingKey(), gmallCorrelationData.getMessage(), message -> { + message.getMessageProperties().setDelay(gmallCorrelationData.getDelayTime() * 1000); + return message; + }, gmallCorrelationData); + } else { + //普通消息 + rabbitTemplate.convertAndSend(gmallCorrelationData.getExchange(), gmallCorrelationData.getRoutingKey(), gmallCorrelationData.getMessage(), gmallCorrelationData); + } + } + +} + diff --git a/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/constant/MqConst.java b/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/constant/MqConst.java new file mode 100644 index 0000000..6dac0ef --- /dev/null +++ b/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/constant/MqConst.java @@ -0,0 +1,80 @@ +package com.atguigu.tingshu.common.rabbit.constant; + +public class MqConst { + + /** + * 专辑 + */ + public static final String EXCHANGE_ALBUM = "tingshu.album"; + public static final String ROUTING_ALBUM_UPPER = "tingshu.album.upper"; + public static final String ROUTING_ALBUM_LOWER = "tingshu.album.lower"; + public static final String ROUTING_ALBUM_STAT_UPDATE = "tingshu.album.stat.update"; + public static final String ROUTING_ALBUM_ES_STAT_UPDATE = "tingshu.album.es.stat.update"; + public static final String ROUTING_ALBUM_RANKING_UPDATE = "tingshu.album.ranking.update"; + //队列 + public static final String QUEUE_ALBUM_UPPER = "tingshu.album.upper"; + public static final String QUEUE_ALBUM_LOWER = "tingshu.album.lower"; + public static final String QUEUE_ALBUM_STAT_UPDATE = "tingshu.album.stat.update"; + public static final String QUEUE_ALBUM_ES_STAT_UPDATE = "tingshu.album.es.stat.update"; + public static final String QUEUE_ALBUM_RANKING_UPDATE = "tingshu.album.ranking.update"; + + /** + * 声音 + */ + public static final String EXCHANGE_TRACK = "tingshu.track"; + public static final String ROUTING_TRACK_STAT_UPDATE = "tingshu.track.stat.update"; + public static final String QUEUE_TRACK_STAT_UPDATE = "tingshu.track.stat.update"; + + /** + * 取消订单 + */ + //延迟取消订单队列 + /** + * 取消订单延迟消息 + */ + public static final String EXCHANGE_CANCEL_ORDER = "tingshu.cancel.order"; + public static final String ROUTING_CANCEL_ORDER = "tingshu.cancel.order"; + public static final String QUEUE_CANCEL_ORDER = "tingshu.cancel.order"; + public static final Integer CANCEL_ORDER_DELAY_TIME = 15 * 60; + + /** + * 支付 + */ + public static final String EXCHANGE_ORDER = "tingshu.order"; + public static final String ROUTING_ORDER_PAY_SUCCESS = "tingshu.order.pay.success"; + public static final String ROUTING_RECHARGE_PAY_SUCCESS = "tingshu.recharge.pay.success"; + public static final String QUEUE_ORDER_PAY_SUCCESS = "tingshu.order.pay.success"; + public static final String QUEUE_RECHARGE_PAY_SUCCESS = "tingshu.recharge.pay.success"; + + + /** + * 账户 + */ + public static final String EXCHANGE_ACCOUNT = "tingshu.account"; + public static final String ROUTING_ACCOUNT_UNLOCK = "tingshu.account.unlock"; + public static final String ROUTING_ACCOUNT_MINUS = "tingshu.account.minus"; + public static final String QUEUE_ACCOUNT_UNLOCK = "tingshu.account.unlock"; + public static final String QUEUE_ACCOUNT_MINUS = "tingshu.account.minus"; + + /** + * 用户 + */ + public static final String EXCHANGE_USER = "tingshu.user"; + public static final String ROUTING_USER_PAY_RECORD = "tingshu.user.pay.record"; + public static final String ROUTING_USER_REGISTER = "tingshu.user.register"; + public static final String ROUTING_USER_VIP_EXPIRE_STATUS = "tingshu.user.vip.expire.status"; + public static final String QUEUE_USER_PAY_RECORD = "tingshu.user.pay.record"; + public static final String QUEUE_USER_REGISTER = "tingshu.user.register"; + public static final String QUEUE_USER_VIP_EXPIRE_STATUS = "tingshu.user.vip.expire.status"; + + /** + * 热门关键字 + */ + public static final String EXCHANGE_KEYWORD = "tingshu.keyword"; + public static final String ROUTING_KEYWORD_INPUT = "tingshu.keyword.input"; + public static final String ROUTING_KEYWORD_OUT = "tingshu.keyword.out"; + public static final String QUEUE_KEYWORD_INPUT = "tingshu.keyword.input"; + public static final String QUEUE_KEYWORD_OUT = "tingshu.keyword.out"; + + +} diff --git a/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/entity/GuiguCorrelationData.java b/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/entity/GuiguCorrelationData.java new file mode 100644 index 0000000..e8482cc --- /dev/null +++ b/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/entity/GuiguCorrelationData.java @@ -0,0 +1,21 @@ +package com.atguigu.tingshu.common.rabbit.entity; + +import lombok.Data; +import org.springframework.amqp.rabbit.connection.CorrelationData; + +@Data +public class GuiguCorrelationData extends CorrelationData { + + //消息体 + private Object message; + //交换机 + private String exchange; + //路由键 + private String routingKey; + //重试次数 + private int retryCount = 0; + //是否延迟消息 + private boolean isDelay = false; + //延迟时长 + private int delayTime = 10; +} diff --git a/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/service/RabbitService.java b/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/service/RabbitService.java new file mode 100644 index 0000000..b25c49f --- /dev/null +++ b/common/rabbit-util/src/main/java/com/atguigu/tingshu/common/rabbit/service/RabbitService.java @@ -0,0 +1,74 @@ +package com.atguigu.tingshu.common.rabbit.service; + + +import com.alibaba.fastjson.JSON; +import com.atguigu.tingshu.common.rabbit.entity.GuiguCorrelationData; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +@Service +public class RabbitService { + + @Autowired + private RabbitTemplate rabbitTemplate; + + @Autowired + private RedisTemplate redisTemplate; + + /** + * 发送消息 + * + * @param exchange 交换机 + * @param routingKey 路由键 + * @param message 消息 + */ + public boolean sendMessage(String exchange, String routingKey, Object message) { + //1.创建自定义相关消息对象-包含业务数据本身,交换器名称,路由键,队列类型,延迟时间,重试次数 + GuiguCorrelationData correlationData = new GuiguCorrelationData(); + String uuid = "mq:" + UUID.randomUUID().toString().replaceAll("-", ""); + correlationData.setId(uuid); + correlationData.setMessage(message); + correlationData.setExchange(exchange); + correlationData.setRoutingKey(routingKey); + //2.将相关消息存入Redis Key:UUID 相关消息对象 10 分钟 + redisTemplate.opsForValue().set(uuid, JSON.toJSONString(correlationData), 10, TimeUnit.MINUTES); + //3.将相关消息封装到发送消息方法中 + rabbitTemplate.convertAndSend(exchange, routingKey, message, correlationData); + return true; + } + + /** + * 发送延迟消息方法 + * + * @param exchange 交换机 + * @param routingKey 路由键 + * @param message 消息数据 + * @param delayTime 延迟时间,单位为:秒 + */ + public boolean sendDealyMessage(String exchange, String routingKey, Object message, int delayTime) { + //1.创建自定义相关消息对象-包含业务数据本身,交换器名称,路由键,队列类型,延迟时间,重试次数 + GuiguCorrelationData correlationData = new GuiguCorrelationData(); + String uuid = "mq:" + UUID.randomUUID().toString().replaceAll("-", ""); + correlationData.setId(uuid); + correlationData.setMessage(message); + correlationData.setExchange(exchange); + correlationData.setRoutingKey(routingKey); + correlationData.setDelay(true); + correlationData.setDelayTime(delayTime); + + //2.将相关消息存入Redis Key:UUID 相关消息对象 10 分钟 + redisTemplate.opsForValue().set(uuid, JSON.toJSONString(correlationData), 10, TimeUnit.MINUTES); + //3.将相关消息封装到发送消息方法中 + rabbitTemplate.convertAndSend(exchange, routingKey, message, message1 -> { + message1.getMessageProperties().setDelay(delayTime * 1000); + return message1; + }, correlationData); + return true; + } + +} diff --git a/common/rabbit-util/target/classes/com/atguigu/tingshu/common/rabbit/config/RabbitInitConfigApplicationListener.class b/common/rabbit-util/target/classes/com/atguigu/tingshu/common/rabbit/config/RabbitInitConfigApplicationListener.class new file mode 100644 index 0000000000000000000000000000000000000000..b9d7b3c326f26784e3337014b332ea06d85b1cea GIT binary patch literal 7694 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 literal 0 HcmV?d00001 diff --git a/common/rabbit-util/target/classes/com/atguigu/tingshu/common/rabbit/constant/MqConst.class b/common/rabbit-util/target/classes/com/atguigu/tingshu/common/rabbit/constant/MqConst.class new file mode 100644 index 0000000000000000000000000000000000000000..c5536993ac91c90db5a7c3d770f00bdef08947aa GIT binary patch literal 2714 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 Iz?;bY2Zl!>2mk;8 literal 0 HcmV?d00001 diff --git a/common/service-util/pom.xml b/common/service-util/pom.xml new file mode 100644 index 0000000..cf9e591 --- /dev/null +++ b/common/service-util/pom.xml @@ -0,0 +1,92 @@ + + + + common + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-util + + + + com.atguigu.tingshu + common-util + 1.0 + + + com.atguigu.tingshu + model + 1.0 + + + org.springframework.boot + spring-boot-starter-web + + + com.baomidou + mybatis-plus-boot-starter + + + + mysql + mysql-connector-java + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-validation + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + + + + + + + org.springframework.boot + spring-boot-starter-aop + + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + diff --git a/common/service-util/src/main/java/com/atguigu/tingshu/common/config/knife4j/Knife4jConfig.java b/common/service-util/src/main/java/com/atguigu/tingshu/common/config/knife4j/Knife4jConfig.java new file mode 100644 index 0000000..9cf3889 --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/tingshu/common/config/knife4j/Knife4jConfig.java @@ -0,0 +1,49 @@ +package com.atguigu.tingshu.common.config.knife4j; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.Info; +import org.springdoc.core.models.GroupedOpenApi; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class Knife4jConfig { + + @Value("${spring.application.name}") + private String appName; + + @Bean + public GroupedOpenApi webApi() { + return GroupedOpenApi.builder() + .group("web-api") + .pathsToMatch("/api/**") + .build(); + } + + /*后台管理相关文档 接口地址以/admin开头 */ + //@Bean + //public GroupedOpenApi adminApi() { + // return GroupedOpenApi.builder() + // .group("admin-api") + // .pathsToMatch("/admin/**") + // .build(); + //} + + /*** + * @description 自定义接口信息 + */ + @Bean + public OpenAPI customOpenAPI() { + + return new OpenAPI() + .info(new Info() + .title(appName + "听书API接口文档") + .version("1.0") + .description("听书API接口文档") + .contact(new Contact().name("atguigu"))); + } + + +} diff --git a/common/service-util/src/main/java/com/atguigu/tingshu/common/config/mybatisPlus/MybatisPlusConfig.java b/common/service-util/src/main/java/com/atguigu/tingshu/common/config/mybatisPlus/MybatisPlusConfig.java new file mode 100644 index 0000000..04032f0 --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/tingshu/common/config/mybatisPlus/MybatisPlusConfig.java @@ -0,0 +1,32 @@ +package com.atguigu.tingshu.common.config.mybatisPlus; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * MybatisPlus配置类 + * + */ +@EnableTransactionManagement +@Configuration +@MapperScan("com.atguigu.tingshu.*.mapper") +public class MybatisPlusConfig { + + /** + * + * @return + */ + @Bean + public MybatisPlusInterceptor optimisticLockerInnerInterceptor(){ + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + //向Mybatis过滤器链中添加分页拦截器 + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } + +} diff --git a/common/service-util/src/main/java/com/atguigu/tingshu/common/config/redis/RedisConfig.java b/common/service-util/src/main/java/com/atguigu/tingshu/common/config/redis/RedisConfig.java new file mode 100644 index 0000000..a964ab0 --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/tingshu/common/config/redis/RedisConfig.java @@ -0,0 +1,39 @@ +package com.atguigu.tingshu.common.config.redis; + +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.*; + + +/** + * Redis配置类 + */ +@Configuration +@EnableCaching +public class RedisConfig { + + @Bean + @Primary + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + + //String的序列化方式 + StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); + // 使用GenericJackson2JsonRedisSerializer 替换默认序列化(默认采用的是JDK序列化) + GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer(); + + //序列号key value + redisTemplate.setKeySerializer(stringRedisSerializer); + redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer); + redisTemplate.setHashKeySerializer(stringRedisSerializer); + redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer); + + redisTemplate.afterPropertiesSet(); + return redisTemplate; + } +} diff --git a/common/service-util/src/main/java/com/atguigu/tingshu/common/constant/RedisConstant.java b/common/service-util/src/main/java/com/atguigu/tingshu/common/constant/RedisConstant.java new file mode 100644 index 0000000..7dfec26 --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/tingshu/common/constant/RedisConstant.java @@ -0,0 +1,72 @@ +package com.atguigu.tingshu.common.constant; + +public class RedisConstant { + + public static final String ALBUM_INFO_PREFIX = "album:info:"; + + public static final String CACHE_INFO_PREFIX = "cache:info:"; + public static final String CACHE_LOCK_SUFFIX = ":lock"; + + //单位:秒 + //单位:秒 尝试获取锁的最大等待时间 + public static final long ALBUM_LOCK_WAIT_PX1 = 1; + //单位:秒 锁的持有时间 + public static final long ALBUM_LOCK_EXPIRE_PX2 = 3; + + public static final long ALBUM_TIMEOUT = 1 * 60 * 60; + // 商品如果在数据库中不存在那么会缓存一个空对象进去,但是这个对象是没有用的,所以这个对象的过期时间应该不能太长, + // 如果太长会占用内存。 + // 定义变量,记录空对象的缓存过期时间 + public static final long ALBUM_TEMPORARY_TIMEOUT = 10 * 60; + // 布隆过滤器使用! + public static final String ALBUM_BLOOM_FILTER = "album:bloom:filter"; + + + //订单防重流水号前缀 + public static final String ORDER_TRADE_NO_PREFIX = "user:trade:"; + //订单流水号有效期 + public static final int ORDER_TRADE_EXPIRE = 5; + + + //单位:秒 + //单位:秒 尝试获取锁的最大等待时间 + public static final long CACHE_LOCK_EXPIRE_PX1 = 1; + //单位:秒 锁的持有时间 + public static final long CACHE_LOCK_EXPIRE_PX2 = 1; + + public static final long CACHE_TIMEOUT = 24 * 60 * 60; + // 商品如果在数据库中不存在那么会缓存一个空对象进去,但是这个对象是没有用的,所以这个对象的过期时间应该不能太长, + // 如果太长会占用内存。 + // 定义变量,记录空对象的缓存过期时间 + public static final long CACHE_TEMPORARY_TIMEOUT = 10 * 60; + + //用户登录 + public static final String USER_LOGIN_KEY_PREFIX = "user:login:"; + public static final String USER_LOGIN_REFRESH_KEY_PREFIX = "user:login:refresh:"; + public static final int USER_LOGIN_KEY_TIMEOUT = 60 * 60 * 24 * 100; + public static final int USER_LOGIN_REFRESH_KEY_TIMEOUT = 60 * 60 * 24 * 365; + + public static final String RANKING_KEY_PREFIX = "ranking:"; + public static final String ALBUM_STAT_ENDTIME = "album:stat:endTime"; + + + //更新声音统计前缀 + public static final String USER_TRACK_REPEAT_STAT_PREFIX = "user:track:"; + + + //重复锁定账户 + public static final String ACCOUNT_MUTIPLE_CHECK = "account:rechecklock:"; + //账户锁定对象 + public static final String ACCOUNT_CHECK_DATA = "account:check:"; + + //重复扣减锁定金额 + public static final String ACCOUNT_MUTIPLE_MINUS = "account:deductlock"; + + + //公用的业务标识前缀 + public static final String BUSINESS_PREFIX = "biz:"; + + + + +} diff --git a/common/service-util/src/main/java/com/atguigu/tingshu/common/constant/SystemConstant.java b/common/service-util/src/main/java/com/atguigu/tingshu/common/constant/SystemConstant.java new file mode 100644 index 0000000..32f5b29 --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/tingshu/common/constant/SystemConstant.java @@ -0,0 +1,74 @@ +package com.atguigu.tingshu.common.constant; + +public class SystemConstant { + + //专辑付费类型 0101-免费、0102-vip免费、0103-付费 + public static final String ALBUM_PAY_TYPE_FREE="0101"; // 免费 + public static final String ALBUM_PAY_TYPE_VIPFREE="0102"; // vip免费 + public static final String ALBUM_PAY_TYPE_REQUIRE="0103"; // 付费 + + //专辑价格类型 0201-单集 0202-整专辑 + public static final String ALBUM_PRICE_TYPE_ONE="0201"; // 单级 + public static final String ALBUM_PRICE_TYPE_ALL="0202"; // 整专辑 + + //专辑状态 0301-审核通过 0302-审核不通过 + public static final String ALBUM_STATUS_PASS="0301"; // 审核通过 + public static final String ALBUM_STATUS_NO_PASS="0302"; // 审核不通过 + + //专辑统计 0401-播放量 0402-订阅量 0403-购买量 0403-评论数 + public static final String ALBUM_STAT_PLAY="0401"; // 播放量 + public static final String ALBUM_STAT_SUBSCRIBE="0402"; // 订阅量 + public static final String ALBUM_STAT_BUY="0403"; // 购买量 + public static final String ALBUM_STAT_COMMENT="0404"; // 评论数 + + //声音状态 0501-审核通过 0502"-审核不通过 + public static final String TRACK_STATUS_PASS="0501"; // 审核通过 + public static final String TRACK_STATUS_NO_PASS="0502"; // 审核不通过 + + //声音来源 0601-用户原创 0602-上传 + public static final String TRACK_SOURCE_USER="0601"; // 用户原创 + public static final String TRACK_SOURCE_UPLOAD="0602"; // 上传 + + // 声音统计 0701-播放量 0702-收藏量 0703-点赞量 0704-评论数 + public static final String TRACK_STAT_PLAY="0701"; // 播放量 + public static final String TRACK_STAT_COLLECT="0702"; // 收藏量 + public static final String TRACK_STAT_PRAISE="0703"; // 点赞量 + public static final String TRACK_STAT_COMMENT="0704"; // 评论数 + + //用户状态 0801-正常 0802-锁定 + public static final String USER_STATUS_NORMAL="0801"; // 正常 + public static final String USER_STATUS_LOCK="0802"; // 锁定 + + //订单状态 0901-正常 0902-已支付 0903-已取消 + public static final String ORDER_STATUS_UNPAID="0901"; // 未支付 + public static final String ORDER_STATUS_PAID="0902"; // 已支付 + public static final String ORDER_STATUS_CANCEL="0903"; // 已取消 + + //订单付款项目类型 1001-专辑 1002-声音 1003-vip会员 + public static final String ORDER_ITEM_TYPE_ALBUM="1001"; // 专辑 + public static final String ORDER_ITEM_TYPE_TRACK="1002"; // 声音 + public static final String ORDER_ITEM_TYPE_VIP="1003"; // vip会员 + + //订单支付方式 1101-微信 1102-支付宝 1103-账户余额 + public static final String ORDER_PAY_WAY_WEIXIN="1101"; // 微信 + public static final String ORDER_PAY_WAY_ALIPAY="1102"; // 支付宝 + public static final String ORDER_PAY_ACCOUNT="1103"; // 账户余额 + + //账号交易类型 1201-充值 1202-锁定 1203-解锁 1204-消费 + public static final String ACCOUNT_TRADE_TYPE_DEPOSIT="1201"; // 充值 + public static final String ACCOUNT_TRADE_TYPE_LOCK="1202"; // 锁定 + public static final String ACCOUNT_TRADE_TYPE_UNLOCK="1203"; // 解锁 + public static final String ACCOUNT_TRADE_TYPE_MINUS="1204"; // 消费 + + //支付类型 1301-订单 1302-充值 + public static final String PAYMENT_TYPE_ORDER="1301"; // 订单 + public static final String PAYMENT_TYPE_RECHARGE="1302"; // 充值 + + //支付表支付状态 1401-未支付 1402-已支付 + public static final String PAYMENT_STATUS_UNPAID="1401"; // 未支付 + public static final String PAYMENT_STATUS_PAID="1402"; // 已支付 + + //订单减免类型 1405-专辑折扣 1406-VIP服务折 + public static final String ORDER_DERATE_ALBUM_DISCOUNT="1405"; // 专辑折扣 + public static final String ORDER_DERATE_VIP_SERVICE_DISCOUNT="1406"; // VIP服务折扣 +} diff --git a/common/service-util/src/main/java/com/atguigu/tingshu/common/execption/GuiguException.java b/common/service-util/src/main/java/com/atguigu/tingshu/common/execption/GuiguException.java new file mode 100644 index 0000000..3af99b4 --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/tingshu/common/execption/GuiguException.java @@ -0,0 +1,45 @@ +package com.atguigu.tingshu.common.execption; + +import com.atguigu.tingshu.common.result.ResultCodeEnum; +import lombok.Data; + +/** + * 自定义全局异常类 + * + */ +@Data +public class GuiguException extends RuntimeException { + + private Integer code; + + private String message; + + /** + * 通过状态码和错误消息创建异常对象 + * @param code + * @param message + */ + public GuiguException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + /** + * 接收枚举类型对象 + * @param resultCodeEnum + */ + public GuiguException(ResultCodeEnum resultCodeEnum) { + super(resultCodeEnum.getMessage()); + this.code = resultCodeEnum.getCode(); + this.message = resultCodeEnum.getMessage(); + } + + @Override + public String toString() { + return "GuliException{" + + "code=" + code + + ", message=" + this.getMessage() + + '}'; + } +} diff --git a/common/service-util/src/main/java/com/atguigu/tingshu/common/handler/GlobalExceptionHandler.java b/common/service-util/src/main/java/com/atguigu/tingshu/common/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..858b81d --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/tingshu/common/handler/GlobalExceptionHandler.java @@ -0,0 +1,83 @@ +package com.atguigu.tingshu.common.handler; + +import com.atguigu.tingshu.common.execption.GuiguException; +import com.atguigu.tingshu.common.result.Result; +import com.atguigu.tingshu.common.result.ResultCodeEnum; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindException; +import org.springframework.validation.BindingResult; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * 全局异常处理类 + */ +@Slf4j +@ControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(Exception.class) + @ResponseBody + public Result error(Exception e) { + log.error("触发Exception异常拦截:{}", e); + return Result.fail(); + } + + /** + * 自定义异常处理方法 + * + * @param e + * @return + */ + @ExceptionHandler(GuiguException.class) + @ResponseBody + public Result error(GuiguException e) { + log.error("触发GuiguException异常拦截:{}", e); + return Result.build(null, e.getCode(), e.getMessage()); + } + + @ExceptionHandler({IllegalArgumentException.class}) + @ResponseBody + public Result llegalArgumentException(Exception e) { + log.error("触发异常拦截: " + e.getMessage(), e); + return Result.build(null, ResultCodeEnum.ARGUMENT_VALID_ERROR); + } + + + @ExceptionHandler(value = BindException.class) + @ResponseBody + public Result error(BindException exception) { + BindingResult result = exception.getBindingResult(); + Map errorMap = new HashMap<>(); + List fieldErrors = result.getFieldErrors(); + fieldErrors.forEach(error -> { + log.error("field: " + error.getField() + ", msg:" + error.getDefaultMessage()); + errorMap.put(error.getField(), error.getDefaultMessage()); + }); + + log.error("触发BindException异常拦截: {}" + errorMap); + return Result.build(errorMap, ResultCodeEnum.ARGUMENT_VALID_ERROR); + } + + @ExceptionHandler(value = MethodArgumentNotValidException.class) + @ResponseBody + public Result error(MethodArgumentNotValidException exception) { + BindingResult result = exception.getBindingResult(); + Map errorMap = new HashMap<>(); + List fieldErrors = result.getFieldErrors(); + fieldErrors.forEach(error -> { + log.error("field: " + error.getField() + ", msg:" + error.getDefaultMessage()); + errorMap.put(error.getField(), error.getDefaultMessage()); + }); + log.error("触发MethodArgumentNotValidException异常拦截: {}" + errorMap); + return Result.build(errorMap, ResultCodeEnum.ARGUMENT_VALID_ERROR); + } +} diff --git a/common/service-util/src/main/java/com/atguigu/tingshu/common/interceptor/FeignInterceptor.java b/common/service-util/src/main/java/com/atguigu/tingshu/common/interceptor/FeignInterceptor.java new file mode 100644 index 0000000..41d5a60 --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/tingshu/common/interceptor/FeignInterceptor.java @@ -0,0 +1,25 @@ +package com.atguigu.tingshu.common.interceptor; + +import feign.RequestInterceptor; +import feign.RequestTemplate; +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +@Component +public class FeignInterceptor implements RequestInterceptor { + + public void apply(RequestTemplate requestTemplate){ + // 获取请求对象 + RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); + //异步编排 与 MQ消费者端 为 null + if(null != requestAttributes) { + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)requestAttributes; + HttpServletRequest request = servletRequestAttributes.getRequest(); + String token = request.getHeader("token"); + requestTemplate.header("token", token); + } + } +} diff --git a/common/service-util/target/classes/com/atguigu/tingshu/common/config/knife4j/Knife4jConfig.class b/common/service-util/target/classes/com/atguigu/tingshu/common/config/knife4j/Knife4jConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..ed8a5a7f910fa28a27e904990974ee05806eed2c GIT binary patch literal 2511 zcmb_eTT>iG6#kmqz%miChFgpXk;DZ9Lj)mla}iK3X1NGR#CYqSZI*`F>8Y7skg|OC zO?^uFYNhna2d%O;8cKhFzr*k|EKl#Q0>y?9%9@(Kp38T>K7D5X{QJ=#0B$0Pp$gR& zYHZY^j-h#jZ*j-te%6^!ZwOa2)ZLK2)VCO_6TK@j)T6;d%tj+@hJ*^UP85XF&t{bC zxGEG*PGy7_Ia8s^2O={c2!AY)3|2ZXy^IJMh7-N1lj`-1m$Z`gc#dpri*!E^WDLzX zYawpqd7NVyd{%1=wOIp?VKR~0k9bL&K$53GXQA~FcO^^pXeZ1L0e1TO4CeDTUcdzg zJK%afT2`}MyXy>7iF^MG3ge>F#!Kj;0E=`pTzLkvlNK&AbV=nz+dP{Up|dsQC?5TL zq{Xvbn2Dj=q|7CTi%%4l{+e=TsEMHm)eT6X*Fv9-S8;`5)Kxi$>ug?T^NuFUqxC%H zPA;c>>ijjCbvAvuCWbehJEeZ2xJqR5AeiGh!4N;nSe!C?z=nfChPE8v6r|;HeOKyr z8bzA>I%2q7@x+fLfx-QnjUfyZms)C%d|s=l`g9H`c}M8_TpbuRRycz=dHl_ffBp8u*uu=-SKmMW`oZ4)FZaHCV8n0QxMjo}Ga_NG7OK zGBl;6FXr;OvZp7cYjJGT-BJ(&Du!IIHw z?q@s^^`w;A%m>M%73aXpA;smLKvWPvSmjG!S4#gQASbxzElDk?YS6c#l~t?^^bMKu zeGyK0JcUi5y0UZUr_!I4w?6s04=s%zq=WrG+)V89H=KJ>B%k~XklrUfx9yb(i~o!7Go@4-{}U{(1qU@iz*%v5VWZITjx;;H?6t3rOul z>4Zh56Xd=R7l@>8qN$&rA@pK|*7qTeR)AE4k4U=;9~X%=KtG}Rr}Wm-nA4kuq*Scd`btN<*72^B zcTHOvda`Xzm_ycO9btI>7g$Pb8S-^Oz?9MGHD~vr4&xj~vlz=`9OoIzXF?0DjZGl< z)5hjOTQX#7TN|&c4D;1Lk6O$jhe^lW1qNRHo5)h#QBcU^5~dg?MYDOb7>3o~Af6_= zL(WN*MJL$|!(&&Kuzsxkm|La&XeZ{h7LZh)(c8-Zp`%l(SGDED%aC3+P2y>+s4;zr(egK&M)gKQpC^F&(a7m)kHg-Jn(FcrWyn(GjWQE-%BgzNj`7Iuf3{H@(O!I#KP|Src0LGLYI* z!ux%p`W&!xfH+Jp6$O@)!0yw~t*|$3O|;uG-0+gJGW((xQ$@4XkdH((LwzXO1>v4sEt literal 0 HcmV?d00001 diff --git a/common/service-util/target/classes/com/atguigu/tingshu/common/config/redis/RedisConfig.class b/common/service-util/target/classes/com/atguigu/tingshu/common/config/redis/RedisConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..1162366826c8603ec2d02d5f0f3f3015542caf6d GIT binary patch literal 2190 zcmc&$QBxF05dH=ZPcMrC5e(6wkeDDIt|A)4Aw(%n%AADqEUJ7Qmf>#nZkC#zjUoRf z{~>w7Dyi}zkNzkt-|U@ua+g|?mt56N@AUM1{Y_7I@4kKa`VD})_`ZYz3>HxcFoY8V zBhTe8GHgmy4}aczt|BLJVp$vQRs;rTuWS}^Qs72x>tV8MwW;q|*-|fK`y$+yPKH)( z>m-a~tHLM#@u_O~pvW#nSJC-7jlnv4B@Q`81%uI3Gk&)nK8NJl-;oLuCh+6q^4XEmj!M{aVwOrp6YrUItDmt zq)d%gD>f8nN7p;)lAVC}NR2>YE#6iFXR6w$^|ZC6>{Gebq-LxdN3yvod25_^lm*w& ziNLMufACci7`EL>D)2Hl@Fd>J*?&yGymaZU4l_sC^F@>1q|%eE0=!9~ZLSU{afLC-7qb zjWTMeZsre+Z#QdHvx8MIjj#B^^uGZJ|H|a}HD@8Epd6Ze1@ULL{0&FH42)uyW6(Ch z70huaa1~_~vdw=HY>2w00~DXV!l}pQtNSP&;4~*A>jxO6{B)^Mp5MpW@?>EjpZUl0 z+2d4sAJgSOxO))Z;~YvHCvXzyFwA$rI4)oc7ul*W(epH}VFrsl#2sADSS_|acUX}F z=4m6ie}N1`G8?Dmb=)BS6tNa?ldKo%!=I;Zb&FQFsTpEMP<+e(03Ccs=|3-)C@Yz6 OIUDaDuB>pr3j7UY#h(%Y literal 0 HcmV?d00001 diff --git a/common/service-util/target/classes/com/atguigu/tingshu/common/constant/RedisConstant.class b/common/service-util/target/classes/com/atguigu/tingshu/common/constant/RedisConstant.class new file mode 100644 index 0000000000000000000000000000000000000000..4fe44a991c91e57e68df16a899af90c61d0d4cca GIT binary patch literal 1683 zcmb7^%Wm676o$`Omd!ejohWhIB5jKFnxq%iaoeQIrKPEn&4?luUR-BIP!ugQrbvJy zv*@Zoo+zsVUE~4s0NwXRivGMv85!AB0w{em|M};fIm3DL?_aNp=n)-l&9B2aGPxV~)Hi4H45jZ{P7ljTbcIo~6D9r`qbpT5<@9f| zYP-YZT}JFl6Pr?e7^59Q!jFfl$sxKs7c`J)C9u^2Hypd3*g_`n*Asj&G)&oi<}OQC zipnd=zGfH$x2I}0HzoQE<5i`jC`qQBlQ7DH6qy)imz%C_%3bd2^X-%9OB9{Yg0z#R z-Z;R{v_xT*Gm26hD5wdWYTwG57X_i}caGmJ8d2`^Qu6HSAE>XMIA0&E91DqR#(}E4 zeg3R&v_x>LGL4c+7$eh<1tAWD$*sesfFIGKva~874NlTvc8b7jLSV5%on3=o{!NT- z2(zN?T*dy`L;fvO*88e{u(aYsMpEjRj9-K9k4>@AW!0MPwv_G#Nee%!Xz9TD&;pnzIaBOv`aTn)V=}W{JUG;oF$>Xe( z1~|?BS#ey;eCmi&>2_sXmgtbt)?8kS-(@{eb;pvZU*uj}kArdUXVr_az3*76&Mj-v zE1l8mDEu8>t4cCPdD~hT2YNmo1*z?gB8;@O#P^~jFAWQ>2UoMxaK>m)``?!XUiu9y z$x}b*g{A${)$v_%N6<}L$3;c-A-?a?26}w~v_hNUErGYemj!NtuhPy!e+~SBz=hv+ zfjsVm!M_SDgB5|h;GVz-U{&BJU`^lwD#x`-Yj_&yNV{a*H+TLd e_Nr{r5YJ+os6kKh+${e$$s`NJ$i{Ppoc{nfvRJ49 literal 0 HcmV?d00001 diff --git a/common/service-util/target/classes/com/atguigu/tingshu/common/constant/SystemConstant.class b/common/service-util/target/classes/com/atguigu/tingshu/common/constant/SystemConstant.class new file mode 100644 index 0000000000000000000000000000000000000000..64e0307aca26d108c0e2d0b548af3a9815535dbe GIT binary patch literal 2328 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 SJNPsA#Q6L@{1t!4&i?|n{$El6 literal 0 HcmV?d00001 diff --git a/common/service-util/target/classes/com/atguigu/tingshu/common/interceptor/FeignInterceptor.class b/common/service-util/target/classes/com/atguigu/tingshu/common/interceptor/FeignInterceptor.class new file mode 100644 index 0000000000000000000000000000000000000000..1b24da7e41338d25ff5b5446db7b0111147a2924 GIT binary patch literal 1657 zcmbVNTTfa+5dK!cqlhvNJm~-^_fw=jZRQ-vO-Si633?81M$*LpQ_FkvJB-D6AZR zkvWoC&CtDOTBc4gc%reiA3f+b;18e=0fsf@|=}PJy4u49_Y{%XgYP z@@++yHQ%ePn>F>eDjrCOA(WH4ZrRYYtL%aj^{w zKl(8gz%YUg{sv5jIRbYi3c}HXmut>EueHs$Ni;``_aMaJ)2bk?K3u`5fw2H07-yL2 zFa$#{CEu2!+OO#-r9PieiW+9+;x3xMR0gg#O|o{!As#jK}0H=wLhgQ zM6NB5;42tgg4`|my;5K1rM je27PcbeZfuV86f(JjN>Re2fmcorqWE8hvJJB`1JCk+ + + + tingshu-parent + com.atguigu.tingshu + 1.0 + + 4.0.0 + + model + + + + + org.projectlombok + lombok + + + com.atguigu.tingshu + common-util + 1.0 + provided + + + + + + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + provided + + + com.baomidou + mybatis-plus-boot-starter + provided + + + + org.springframework.boot + spring-boot-starter-validation + provided + + + org.springframework.boot + spring-boot-starter-data-elasticsearch + provided + + + org.springframework.boot + spring-boot-starter-data-mongodb + provided + + + \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/account/RechargeInfo.java b/model/src/main/java/com/atguigu/tingshu/model/account/RechargeInfo.java new file mode 100644 index 0000000..ab53e25 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/account/RechargeInfo.java @@ -0,0 +1,38 @@ +package com.atguigu.tingshu.model.account; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "RechargeInfo") +@TableName("recharge_info") +public class RechargeInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户ID") + @TableField("user_id") + private Long userId; + + @Schema(description = "充值订单编号") + @TableField("order_no") + private String orderNo; + + @Schema(description = "充值状态:0901-未支付 0902-已支付 0903-已取消") + @TableField("recharge_status") + private String rechargeStatus; + + @Schema(description = "充值金额") + @TableField("recharge_amount") + private BigDecimal rechargeAmount; + + @Schema(description = "支付方式:1101-微信 1102-支付宝") + @TableField("pay_way") + private String payWay; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/account/UserAccount.java b/model/src/main/java/com/atguigu/tingshu/model/account/UserAccount.java new file mode 100644 index 0000000..49d95fe --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/account/UserAccount.java @@ -0,0 +1,42 @@ +package com.atguigu.tingshu.model.account; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "UserAccount") +@TableName("user_account") +public class UserAccount extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户id") + @TableField("user_id") + private Long userId; + + @Schema(description = "账户总金额") + @TableField("total_amount") + private BigDecimal totalAmount; + + @Schema(description = "锁定金额") + @TableField("lock_amount") + private BigDecimal lockAmount; + + @Schema(description = "可用金额") + @TableField("available_amount") + private BigDecimal availableAmount; + + @Schema(description = "总收入") + @TableField("total_income_amount") + private BigDecimal totalIncomeAmount; + + @Schema(description = "总支出") + @TableField("total_pay_amount") + private BigDecimal totalPayAmount; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/account/UserAccountDetail.java b/model/src/main/java/com/atguigu/tingshu/model/account/UserAccountDetail.java new file mode 100644 index 0000000..e6b9c87 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/account/UserAccountDetail.java @@ -0,0 +1,38 @@ +package com.atguigu.tingshu.model.account; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "UserAccountDetail") +@TableName("user_account_detail") +public class UserAccountDetail extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户id") + @TableField("user_id") + private Long userId; + + @Schema(description = "交易标题") + @TableField("title") + private String title; + + @Schema(description = "交易类型:1201-充值 1202-锁定 1203-解锁 1204-消费") + @TableField("trade_type") + private String tradeType; + + @Schema(description = "金额") + @TableField("amount") + private BigDecimal amount; + + @Schema(description = "订单编号") + @TableField("order_no") + private String orderNo; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/AlbumAttributeValue.java b/model/src/main/java/com/atguigu/tingshu/model/album/AlbumAttributeValue.java new file mode 100644 index 0000000..7167ca0 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/AlbumAttributeValue.java @@ -0,0 +1,35 @@ +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + + +@Data +@Schema(description = "专辑属性值") +public class AlbumAttributeValue extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "专辑id") + private Long albumId; + + @NotNull(message = "属性id不能为空") + @Schema(description = "属性id") + private Long attributeId; + + @NotNull(message = "属性值id不能为空") + @Schema(description = "属性值id") + private Long valueId; + + @Schema(description = "属性名称") + @TableField(exist = false) + private String attributeName; + + @Schema(description = "属性值名称") + @TableField(exist = false) + private String valueName; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/AlbumInfo.java b/model/src/main/java/com/atguigu/tingshu/model/album/AlbumInfo.java new file mode 100644 index 0000000..01c9b18 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/AlbumInfo.java @@ -0,0 +1,106 @@ +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@Schema(description = "AlbumInfo") +@TableName("album_info") +public class AlbumInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户id") + @TableField("user_id") + private Long userId; + + @Schema(description = "标题") + @TableField("album_title") + private String albumTitle; + + @Schema(description = "三级分类id") + @TableField("category3_id") + private Long category3Id; + + @Schema(description = "专辑简介") + @TableField("album_intro") + private String albumIntro; + + @Schema(description = "专辑封面原图,尺寸不固定,最大尺寸为960*960(像素)") + @TableField("cover_url") + private String coverUrl; + + @Schema(description = "专辑包含声音总数") + @TableField("include_track_count") + private Integer includeTrackCount; + + @Schema(description = "专辑是否完结:0-否;1-完结;") + @TableField("is_finished") + private String isFinished; + + @Schema(description = "预计更新多少集") + @TableField("estimated_track_count") + private Integer estimatedTrackCount; + + @Schema(description = "专辑简介,富文本") + @TableField("album_rich_intro") + private String albumRichIntro; + + @Schema(description = "专辑评分") + @TableField("quality_score") + private String qualityScore; + + @Schema(description = "付费类型: 0101-免费、0102-vip免费、0103-付费") + @TableField("pay_type") + private String payType; + + @Schema(description = "价格类型: 0201-单集 0202-整专辑") + @TableField("price_type") + private String priceType; + + @Schema(description = "原价") + @TableField("price") + private BigDecimal price; + + @Schema(description = "0.1-9.9 不打折 -1") + @TableField("discount") + private BigDecimal discount; + + @Schema(description = "0.1-9.9 不打折 -1") + @TableField("vip_discount") + private BigDecimal vipDiscount; + + @Schema(description = "免费试听集数") + @TableField("tracks_for_free") + private Integer tracksForFree; + + @Schema(description = "每集免费试听秒数") + @TableField("seconds_for_free") + private Integer secondsForFree; + + @Schema(description = "购买须知,富文本") + @TableField("buy_notes") + private String buyNotes; + + @Schema(description = "专辑卖点,富文本") + @TableField("selling_point") + private String sellingPoint; + + @Schema(description = "是否公开:0-否 1-是") + @TableField("is_open") + private String isOpen; + + @Schema(description = "状态") + @TableField("status") + private String status; + + @Schema(description = "属性值集合") + @TableField(exist = false) + private List albumAttributeValueVoList; +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/AlbumStat.java b/model/src/main/java/com/atguigu/tingshu/model/album/AlbumStat.java new file mode 100644 index 0000000..cd25630 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/AlbumStat.java @@ -0,0 +1,28 @@ +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "AlbumStat") +@TableName("album_stat") +public class AlbumStat extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "专辑id") + @TableField("album_id") + private Long albumId; + + @Schema(description = "统计类型") + @TableField("stat_type") + private String statType; + + @Schema(description = "统计数目") + @TableField("stat_num") + private Integer statNum; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/BaseAttribute.java b/model/src/main/java/com/atguigu/tingshu/model/album/BaseAttribute.java new file mode 100644 index 0000000..9f888a9 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/BaseAttribute.java @@ -0,0 +1,29 @@ +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "BaseAttribute") +@TableName("base_attribute") +public class BaseAttribute extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "一级分类id") + @TableField("category1_id") + private Long category1Id; + + @Schema(description = "属性显示名称") + @TableField("attribute_name") + private String attributeName; + + @TableField(exist = false) + private List attributeValueList; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/BaseAttributeValue.java b/model/src/main/java/com/atguigu/tingshu/model/album/BaseAttributeValue.java new file mode 100644 index 0000000..4194e87 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/BaseAttributeValue.java @@ -0,0 +1,24 @@ +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "BaseAttributeValue") +@TableName("base_attribute_value") +public class BaseAttributeValue extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "属性id") + @TableField("attribute_id") + private Long attributeId; + + @Schema(description = "属性值名称") + @TableField("value_name") + private String valueName; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory1.java b/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory1.java new file mode 100644 index 0000000..ef14aac --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory1.java @@ -0,0 +1,24 @@ +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "BaseCategory1") +@TableName("base_category1") +public class BaseCategory1 extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "分类名称") + @TableField("name") + private String name; + + @Schema(description = "排序") + @TableField("order_num") + private Integer orderNum; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory2.java b/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory2.java new file mode 100644 index 0000000..075c8f1 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory2.java @@ -0,0 +1,28 @@ +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "BaseCategory2") +@TableName("base_category2") +public class BaseCategory2 extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "二级分类名称") + @TableField("name") + private String name; + + @Schema(description = "一级分类编号") + @TableField("category1_id") + private Long category1Id; + + @Schema(description = "orderNum") + @TableField("order_num") + private Integer orderNum; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory3.java b/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory3.java new file mode 100644 index 0000000..d92f852 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategory3.java @@ -0,0 +1,31 @@ +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "BaseCategory3") +@TableName("base_category3") +public class BaseCategory3 extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "三级分类名称") + @TableField("name") + private String name; + + @Schema(description = "二级分类编号") + @TableField("category2_id") + private Long category2Id; + + @Schema(description = "排序") + @TableField("order_num") + private Integer orderNum; + + @Schema(description = "是否置顶") + @TableField("is_top") + private Integer isTop; +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategoryView.java b/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategoryView.java new file mode 100644 index 0000000..904d939 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/BaseCategoryView.java @@ -0,0 +1,50 @@ +// +// +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + *

+ * BaseCategoryView + *

+ * + * @author atguigu + */ +@Data +@Schema(description = "分类视图") +@TableName("base_category_view") +public class BaseCategoryView extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "一级分类编号") + @TableField("category1_id") + private Long category1Id; + + @Schema(description = "一级分类名称") + @TableField("category1_name") + private String category1Name; + + @Schema(description = "二级分类编号") + @TableField("category2_id") + private Long category2Id; + + @Schema(description = "二级分类名称") + @TableField("category2_name") + private String category2Name; + + @Schema(description = "三级分类编号") + @TableField("category3_id") + private Long category3Id; + + @Schema(description = "三级分类名称") + @TableField("category3_name") + private String category3Name; + +} + diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/BaseDic.java b/model/src/main/java/com/atguigu/tingshu/model/album/BaseDic.java new file mode 100644 index 0000000..3b78546 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/BaseDic.java @@ -0,0 +1,28 @@ +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "BaseDic") +@TableName("base_dic") +public class BaseDic extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "code") + @TableField("code") + private String code; + + @Schema(description = "编码名称") + @TableField("dic_name") + private String dicName; + + @Schema(description = "父编号") + @TableField("parent_code") + private String parentCode; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/TrackInfo.java b/model/src/main/java/com/atguigu/tingshu/model/album/TrackInfo.java new file mode 100644 index 0000000..7a6659a --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/TrackInfo.java @@ -0,0 +1,81 @@ +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "TrackInfo") +@TableName("track_info") +public class TrackInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户id") + @TableField("user_id") + private Long userId; + + @Schema(description = "专辑id") + @TableField("album_id") + private Long albumId; + + @Schema(description = "声音标题") + @TableField("track_title") + private String trackTitle; + + @Schema(description = "声音在专辑中的排序值,从0开始依次递增,值越小排序越前") + @TableField("order_num") + private Integer orderNum; + + @Schema(description = "声音简介") + @TableField("track_intro") + private String trackIntro; + + @Schema(description = "声音简介,富文本") + @TableField("track_rich_intro") + private String trackRichIntro; + + @Schema(description = "声音封面图url") + @TableField("cover_url") + private String coverUrl; + + @Schema(description = "声音媒体时长,单位秒") + @TableField("media_duration") + private BigDecimal mediaDuration; + + @Schema(description = "媒体文件的唯一标识") + @TableField("media_file_id") + private String mediaFileId; + + @Schema(description = "媒体播放地址") + @TableField("media_url") + private String mediaUrl; + + @Schema(description = "音频文件大小,单位字节") + @TableField("media_size") + private Long mediaSize; + + @Schema(description = "声音媒体类型") + @TableField("media_type") + private String mediaType; + + @Schema(description = "声音来源,1-用户原创,2-上传") + @TableField("source") + private String source; + + @Schema(description = "状态") + @TableField("status") + private String status; + + @Schema(description = "是否公开:0-否 1-是") + @TableField("is_open") + private String isOpen; + + @Schema(description = "发起审核任务ID") + @TableField("review_task_id") + private String reviewTaskId; +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/album/TrackStat.java b/model/src/main/java/com/atguigu/tingshu/model/album/TrackStat.java new file mode 100644 index 0000000..6ca2e5b --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/album/TrackStat.java @@ -0,0 +1,28 @@ +package com.atguigu.tingshu.model.album; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "TrackStat") +@TableName("track_stat") +public class TrackStat extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "声音id") + @TableField("track_id") + private Long trackId; + + @Schema(description = "统计类型") + @TableField("stat_type") + private String statType; + + @Schema(description = "统计数目") + @TableField("stat_num") + private Integer statNum; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/base/BaseEntity.java b/model/src/main/java/com/atguigu/tingshu/model/base/BaseEntity.java new file mode 100644 index 0000000..a575d85 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/base/BaseEntity.java @@ -0,0 +1,36 @@ +package com.atguigu.tingshu.model.base; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@Data +public class BaseEntity implements Serializable { + + @TableId(type = IdType.AUTO) + private Long id; + + @TableField("create_time") + private Date createTime; + + @JsonIgnore + @TableField("update_time") + private Date updateTime; + + @JsonIgnore + @TableLogic + @TableField("is_deleted") + private Integer isDeleted; + + @JsonIgnore + @TableField(exist = false) + private Map param = new HashMap<>(); +} diff --git a/model/src/main/java/com/atguigu/tingshu/model/comment/Comment.java b/model/src/main/java/com/atguigu/tingshu/model/comment/Comment.java new file mode 100644 index 0000000..5a78c7a --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/comment/Comment.java @@ -0,0 +1,55 @@ +package com.atguigu.tingshu.model.comment; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.annotation.Transient; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; +import java.util.List; + +@Data +@Schema(description = "专辑评论") +@Document +public class Comment { + + @Schema(description = "id") + @Id + private String id; + + @Schema(description = "专辑id") + private Long albumId; + + @Schema(description = "用户id") + private Long userId; + + @Schema(description = "发表评论用户的昵称,已脱敏") + private String nickname; + + @Schema(description = "发表评论用户的头像图片地址") + private String avatarUrl; + + @Schema(description = "评论内容") + private String content; + + @Schema(description = "被回复的评论id") + private String replyCommentId; + + @Schema(description = "点赞数量") + private Integer praiseCount = 0; + + @Schema(description = "评论中对专辑的评分 (十分制,建议采用五星制,如10分显示五颗星,7分显示三颗半星)") + private Integer albumCommentScore; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "当前用户是否点赞") + @Transient + private Boolean isPraise; + + @Schema(description = "回复评论列表") + @Transient //被该注解标注的,将不会被录入到数据库中。只作为普通的javaBean属性 + private List replyCommentList; +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/comment/CommentPraise.java b/model/src/main/java/com/atguigu/tingshu/model/comment/CommentPraise.java new file mode 100644 index 0000000..5f6c331 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/comment/CommentPraise.java @@ -0,0 +1,39 @@ +package com.atguigu.tingshu.model.comment; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +/** + *

+ * CommentPraise + *

+ * + * @author atguigu + */ +@Data +@Schema(description = "专辑评论点赞") +@Document +public class CommentPraise { + + @Schema(description = "id") + @Id + private String id; + + @Schema(description = "动态id") + private Long albumId; + + @Schema(description = "评论id") + private String commentId; + + @Schema(description = "点赞者id") + private Long userId; + + @Schema(description = "创建时间") + private Date createTime; + +} + diff --git a/model/src/main/java/com/atguigu/tingshu/model/dispatch/XxlJobConfig.java b/model/src/main/java/com/atguigu/tingshu/model/dispatch/XxlJobConfig.java new file mode 100644 index 0000000..86b0de6 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/dispatch/XxlJobConfig.java @@ -0,0 +1,44 @@ +package com.atguigu.tingshu.model.dispatch; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "XxlJobConfig") +@TableName("xxl_job_config") +public class XxlJobConfig extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "调度任务标题") + @TableField("title") + private String title; + + @Schema(description = "调度执行handler") + @TableField("executor_handler") + private String executorHandler; + + @Schema(description = "调度任务参数") + @TableField("executor_param") + private String executorParam; + + @Schema(description = "调度表达式") + @TableField("cron") + private String cron; + + @Schema(description = "备注") + @TableField("remark") + private String remark; + + @Schema(description = "任务状态 0:失败 1:成功") + @TableField("status") + private Integer status; + + @Schema(description = "xxl任务平台id") + @TableField("xxl_job_id") + private Long xxlJobId; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/dispatch/XxlJobLog.java b/model/src/main/java/com/atguigu/tingshu/model/dispatch/XxlJobLog.java new file mode 100644 index 0000000..a7b922b --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/dispatch/XxlJobLog.java @@ -0,0 +1,32 @@ +package com.atguigu.tingshu.model.dispatch; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "XxlJobLog") +@TableName("xxl_job_log") +public class XxlJobLog extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "任务配置id") + @TableField("job_config_id") + private Long jobConfigId; + + @Schema(description = "任务状态 0:失败 1:成功") + @TableField("status") + private Integer status; + + @Schema(description = "失败信息") + @TableField("error") + private String error; + + @Schema(description = "耗时(单位:毫秒)") + @TableField("times") + private Integer times; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/live/FromUser.java b/model/src/main/java/com/atguigu/tingshu/model/live/FromUser.java new file mode 100644 index 0000000..7862b8d --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/live/FromUser.java @@ -0,0 +1,14 @@ +package com.atguigu.tingshu.model.live; + +import lombok.Data; + +@Data +public class FromUser { + + //用户id + private Long userId; + //昵称 + private String nickname; + //头像地址 + private String avatarUrl; +} diff --git a/model/src/main/java/com/atguigu/tingshu/model/live/LiveRoom.java b/model/src/main/java/com/atguigu/tingshu/model/live/LiveRoom.java new file mode 100644 index 0000000..0120c5f --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/live/LiveRoom.java @@ -0,0 +1,74 @@ +package com.atguigu.tingshu.model.live; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "LiveRoom") +@TableName("live_room") +public class LiveRoom extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户id") + @TableField("user_id") + private Long userId; + + @Schema(description = "直播间封面") + @TableField("cover_url") + private String coverUrl; + + @Schema(description = "直播标题") + @TableField("live_title") + private String liveTitle; + + @Schema(description = "当前直播场次的总访问人次") + @TableField("view_count") + private Integer viewCount; + + @Schema(description = "直播状态:1-直播正在进行,2-直播结束") + @TableField("status") + private String status; + + @Schema(description = "直播间标签id") + @TableField("tag_id") + private String tagId; + + @Schema(description = "直播应用名称") + @TableField("app_name") + private String appName; + + @Schema(description = "直播流名称") + @TableField("stream_name") + private String streamName; + + @Schema(description = "过期时间") + @TableField("expire_time") + private Date expireTime; + + @Schema(description = "推流地址") + @TableField("push_url") + private String pushUrl; + + @Schema(description = "播放地址") + @TableField("play_url") + private String playUrl; + + @Schema(description = "经度") + @TableField("longitude") + private String longitude; + + @Schema(description = "纬度") + @TableField("latitude") + private String latitude; + + @Schema(description = "位置") + @TableField("location") + private String location; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/live/LiveTag.java b/model/src/main/java/com/atguigu/tingshu/model/live/LiveTag.java new file mode 100644 index 0000000..8daeced --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/live/LiveTag.java @@ -0,0 +1,28 @@ +package com.atguigu.tingshu.model.live; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "LiveTag") +@TableName("live_tag") +public class LiveTag extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "标签名称") + @TableField("name") + private String name; + + @Schema(description = "标签图标url") + @TableField("icon_url") + private String iconUrl; + + @Schema(description = "排序") + @TableField("order_num") + private Integer orderNum; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/live/SocketMsg.java b/model/src/main/java/com/atguigu/tingshu/model/live/SocketMsg.java new file mode 100644 index 0000000..3fcda0e --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/live/SocketMsg.java @@ -0,0 +1,49 @@ +package com.atguigu.tingshu.model.live; + + +import lombok.Data; +import lombok.Getter; + +/** + * 这里我们就不能使用简单的文本消息进行消息的发送了,我们使用json进行消息的发送。 + * 所以需要先创建一个消息对象,里面包含了消息发送者,消息接受者,消息类型(单聊还是群聊),还是就是消息,如下: + */ +@Data +public class SocketMsg { + + @Getter + public enum MsgTypeEnum { + + HEART_BEAT("0","心跳信息"), + PUBLIC_MSG("1","公共聊天消息"), + JOIN_CHAT("2","加入聊天室"), + CLOSE_SOCKET("3","退出聊天室"), + ONLINE_NUM("4","在线用户数"), + TOKEN_INVALID("-1","token无效"), + ; + + private String code; + private String data; + + MsgTypeEnum(String code, String data) { + this.code = code; + this.data = data; + } + + } + + //直播房间id + private Long liveRoomId; +// //消息体 +// private MsgBody msgBody; + + //消息类型 + private String msgType; + //消息内容 + private Object msgContent; + + //发送者 + private FromUser fromUser; + //时间戳 + private Long timestamp; +} diff --git a/model/src/main/java/com/atguigu/tingshu/model/order/OrderDerate.java b/model/src/main/java/com/atguigu/tingshu/model/order/OrderDerate.java new file mode 100644 index 0000000..0742ede --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/order/OrderDerate.java @@ -0,0 +1,34 @@ +package com.atguigu.tingshu.model.order; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "OrderDerate") +@TableName("order_derate") +public class OrderDerate extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "订单id") + @TableField("order_id") + private Long orderId; + + @Schema(description = "订单减免类型 1405-专辑折扣 1406-VIP服务折") + @TableField("derate_type") + private String derateType; + + @Schema(description = "减免金额") + @TableField("derate_amount") + private BigDecimal derateAmount; + + @Schema(description = "备注") + @TableField("remarks") + private String remarks; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/order/OrderDetail.java b/model/src/main/java/com/atguigu/tingshu/model/order/OrderDetail.java new file mode 100644 index 0000000..958fbb4 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/order/OrderDetail.java @@ -0,0 +1,38 @@ +package com.atguigu.tingshu.model.order; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "OrderDetail") +@TableName("order_detail") +public class OrderDetail extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "订单id") + @TableField("order_id") + private Long orderId; + + @Schema(description = "付费项目id") + @TableField("item_id") + private Long itemId; + + @Schema(description = "付费项目名称") + @TableField("item_name") + private String itemName; + + @Schema(description = "付费项目图片url") + @TableField("item_url") + private String itemUrl; + + @Schema(description = "付费项目价格") + @TableField("item_price") + private BigDecimal itemPrice; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/order/OrderInfo.java b/model/src/main/java/com/atguigu/tingshu/model/order/OrderInfo.java new file mode 100644 index 0000000..45b406a --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/order/OrderInfo.java @@ -0,0 +1,69 @@ +package com.atguigu.tingshu.model.order; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@Schema(description = "OrderInfo") +@TableName("order_info") +public class OrderInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户ID") + @TableField("user_id") + private Long userId; + + @Schema(description = "订单标题") + @TableField("order_title") + private String orderTitle; + + @Schema(description = "订单号") + @TableField("order_no") + private String orderNo; + + @Schema(description = "订单状态:0901-未支付 0902-已支付 0903-已取消") + @TableField("order_status") + private String orderStatus; + + @Schema(description = "订单原始金额") + @TableField("original_amount") + private BigDecimal originalAmount; + + @Schema(description = "减免总金额") + @TableField("derate_amount") + private BigDecimal derateAmount; + + @Schema(description = "订单总价") + @TableField("order_amount") + private BigDecimal orderAmount; + + @Schema(description = "付款项目类型: 1001-专辑 1002-声音 1003-vip会员") + @TableField("item_type") + private String itemType; + + @Schema(description = "支付方式:1101-微信 1102-支付宝 1103-账户余额") + @TableField("pay_way") + private String payWay; + + + @Schema(description = "订单明细列表") + @TableField(exist = false) + private List orderDetailList; + + @Schema(description = "订单减免明细列表") + @TableField(exist = false) + private List orderDerateList; + + @TableField(exist = false) + private String orderStatusName; + @TableField(exist = false) + private String payWayName; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/payment/PaymentInfo.java b/model/src/main/java/com/atguigu/tingshu/model/payment/PaymentInfo.java new file mode 100644 index 0000000..e695d44 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/payment/PaymentInfo.java @@ -0,0 +1,59 @@ +package com.atguigu.tingshu.model.payment; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "PaymentInfo") +@TableName("payment_info") +public class PaymentInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户id") + @TableField("user_id") + private Long userId; + + @Schema(description = "支付类型:1301-订单 1302-充值") + @TableField("payment_type") + private String paymentType; + + @Schema(description = "订单号") + @TableField("order_no") + private String orderNo; + + @Schema(description = "付款方式:1101-微信 1102-支付宝") + @TableField("pay_way") + private String payWay; + + @Schema(description = "交易编号(微信或支付)") + @TableField("out_trade_no") + private String outTradeNo; + + @Schema(description = "支付金额") + @TableField("amount") + private BigDecimal amount; + + @Schema(description = "交易内容") + @TableField("content") + private String content; + + @Schema(description = "支付状态:1401-未支付 1402-已支付") + @TableField("payment_status") + private String paymentStatus; + + @Schema(description = "回调时间") + @TableField("callback_time") + private Date callbackTime; + + @Schema(description = "回调信息") + @TableField("callback_content") + private String callbackContent; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/search/AlbumInfoIndex.java b/model/src/main/java/com/atguigu/tingshu/model/search/AlbumInfoIndex.java new file mode 100644 index 0000000..693d0db --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/search/AlbumInfoIndex.java @@ -0,0 +1,89 @@ +package com.atguigu.tingshu.model.search; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.elasticsearch.annotations.DateFormat; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +@Data +@Document(indexName = "albuminfo") +@JsonIgnoreProperties(ignoreUnknown = true)//目的:防止json字符串转成实体对象时因未识别字段报错 +public class AlbumInfoIndex implements Serializable { + + private static final long serialVersionUID = 1L; + + // 专辑Id + @Id + private Long id; + + // es 中能分词的字段,这个字段数据类型必须是 text!keyword 不分词! analyzer = "ik_max_word" + @Field(type = FieldType.Text, analyzer = "ik_max_word") + private String albumTitle; + + @Field(type = FieldType.Text, analyzer = "ik_max_word") + private String albumIntro; + + @Field(type = FieldType.Keyword) + private String announcerName; + + //专辑封面 + @Field(type = FieldType.Keyword, index = false) + private String coverUrl; + + //专辑包含声音总数 + @Field(type = FieldType.Long, index = false) + private Integer includeTrackCount; + + //专辑是否完结:0-否;1-完结 + @Field(type = FieldType.Long, index = false) + private String isFinished; + + //付费类型:免费、vip免费、付费 + @Field(type = FieldType.Keyword, index = false) + private String payType; + + @Field(type = FieldType.Date,format = DateFormat.date_time, pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; // + + @Field(type = FieldType.Long) + private Long category1Id; + + @Field(type = FieldType.Long) + private Long category2Id; + + @Field(type = FieldType.Long) + private Long category3Id; + + //播放量 + @Field(type = FieldType.Integer) + private Integer playStatNum = 0; + + //订阅量 + @Field(type = FieldType.Integer) + private Integer subscribeStatNum = 0; + + //购买量 + @Field(type = FieldType.Integer) + private Integer buyStatNum = 0; + + //评论数 + @Field(type = FieldType.Integer) + private Integer commentStatNum = 0; + + // 商品的热度! + @Field(type = FieldType.Double) + private Double hotScore = 0d; + + //专辑属性值 + // Nested 支持嵌套查询 + @Field(type = FieldType.Nested) + private List attributeValueIndexList; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/model/search/AttributeValueIndex.java b/model/src/main/java/com/atguigu/tingshu/model/search/AttributeValueIndex.java new file mode 100644 index 0000000..83ed3ae --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/search/AttributeValueIndex.java @@ -0,0 +1,18 @@ +package com.atguigu.tingshu.model.search; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; + +@Data +@Schema(description = "专辑属性值") +public class AttributeValueIndex { + + @Field(type = FieldType.Long) + private Long attributeId; + + @Field(type = FieldType.Long) + private Long valueId; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/search/SuggestIndex.java b/model/src/main/java/com/atguigu/tingshu/model/search/SuggestIndex.java new file mode 100644 index 0000000..977cde2 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/search/SuggestIndex.java @@ -0,0 +1,32 @@ +package com.atguigu.tingshu.model.search; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.elasticsearch.annotations.CompletionField; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; +import org.springframework.data.elasticsearch.core.suggest.Completion; + +@Data +@Document(indexName = "suggestinfo") +@JsonIgnoreProperties(ignoreUnknown = true)//目的:防止json字符串转成实体对象时因未识别字段报错 +public class SuggestIndex { + + @Id + private String id; + + @Field(type = FieldType.Text, analyzer = "standard") + private String title; + + @CompletionField(analyzer = "standard", searchAnalyzer = "standard", maxInputLength = 20) + private Completion keyword; + + @CompletionField(analyzer = "standard", searchAnalyzer = "standard", maxInputLength = 20) + private Completion keywordPinyin; + + @CompletionField(analyzer = "standard", searchAnalyzer = "standard", maxInputLength = 20) + private Completion keywordSequence; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/model/system/SysDept.java b/model/src/main/java/com/atguigu/tingshu/model/system/SysDept.java new file mode 100644 index 0000000..eb6739b --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/system/SysDept.java @@ -0,0 +1,50 @@ +package com.atguigu.tingshu.model.system; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "部门") +@TableName("sys_dept") +public class SysDept extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "部门名称") + @TableField("name") + private String name; + + @Schema(description = "上级部门id") + @TableField("parent_id") + private Long parentId; + + @Schema(description = "树结构") + @TableField("tree_path") + private String treePath; + + @Schema(description = "排序") + @TableField("sort_value") + private Integer sortValue; + + @Schema(description = "负责人") + @TableField("leader") + private String leader; + + @Schema(description = "电话") + @TableField("phone") + private String phone; + + @Schema(description = "状态(1正常 0停用)") + @TableField("status") + private Integer status; + + @Schema(description = "下级部门") + @TableField(exist = false) + private List children; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/system/SysLoginLog.java b/model/src/main/java/com/atguigu/tingshu/model/system/SysLoginLog.java new file mode 100644 index 0000000..b6cc538 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/system/SysLoginLog.java @@ -0,0 +1,38 @@ +package com.atguigu.tingshu.model.system; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "SysLoginLog") +@TableName("sys_login_log") +public class SysLoginLog extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户账号") + @TableField("username") + private String username; + + @Schema(description = "登录IP地址") + @TableField("ipaddr") + private String ipaddr; + + @Schema(description = "登录状态(0成功 1失败)") + @TableField("status") + private Integer status; + + @Schema(description = "提示信息") + @TableField("msg") + private String msg; + + @Schema(description = "访问时间") + @TableField("access_time") + private Date accessTime; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/system/SysMenu.java b/model/src/main/java/com/atguigu/tingshu/model/system/SysMenu.java new file mode 100644 index 0000000..3a75a4d --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/system/SysMenu.java @@ -0,0 +1,61 @@ +package com.atguigu.tingshu.model.system; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "菜单") +@TableName("sys_menu") +public class SysMenu extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "所属上级") + @TableField("parent_id") + private Long parentId; + + @Schema(description = "名称") + @TableField("name") + private String name; + + @Schema(description = "类型(1:菜单,2:按钮)") + @TableField("type") + private Integer type; + + @Schema(description = "路由地址") + @TableField("path") + private String path; + + @Schema(description = "组件路径") + @TableField("component") + private String component; + + @Schema(description = "权限标识") + @TableField("perms") + private String perms; + + @Schema(description = "图标") + @TableField("icon") + private String icon; + + @Schema(description = "排序") + @TableField("sort_value") + private Integer sortValue; + + @Schema(description = "状态(0:禁止,1:正常)") + @TableField("status") + private Integer status; + + // 下级列表 + @TableField(exist = false) + private List children; + //是否选中 + @TableField(exist = false) + private boolean isSelect; +} + diff --git a/model/src/main/java/com/atguigu/tingshu/model/system/SysOperLog.java b/model/src/main/java/com/atguigu/tingshu/model/system/SysOperLog.java new file mode 100644 index 0000000..8d10516 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/system/SysOperLog.java @@ -0,0 +1,74 @@ +package com.atguigu.tingshu.model.system; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "SysOperLog") +@TableName("sys_oper_log") +public class SysOperLog extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "模块标题") + @TableField("title") + private String title; + + @Schema(description = "业务类型(0其它 1新增 2修改 3删除)") + @TableField("business_type") + private String businessType; + + @Schema(description = "方法名称") + @TableField("method") + private String method; + + @Schema(description = "请求方式") + @TableField("request_method") + private String requestMethod; + + @Schema(description = "操作类别(0其它 1后台用户 2手机端用户)") + @TableField("operator_type") + private String operatorType; + + @Schema(description = "操作人员") + @TableField("oper_name") + private String operName; + + @Schema(description = "部门名称") + @TableField("dept_name") + private String deptName; + + @Schema(description = "请求URL") + @TableField("oper_url") + private String operUrl; + + @Schema(description = "主机地址") + @TableField("oper_ip") + private String operIp; + + @Schema(description = "请求参数") + @TableField("oper_param") + private String operParam; + + @Schema(description = "返回参数") + @TableField("json_result") + private String jsonResult; + + @Schema(description = "操作状态(0正常 1异常)") + @TableField("status") + private Integer status; + + @Schema(description = "错误消息") + @TableField("error_msg") + private String errorMsg; + + @Schema(description = "操作时间") + @TableField("oper_time") + private Date operTime; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/system/SysPost.java b/model/src/main/java/com/atguigu/tingshu/model/system/SysPost.java new file mode 100644 index 0000000..1a4347c --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/system/SysPost.java @@ -0,0 +1,32 @@ +package com.atguigu.tingshu.model.system; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "岗位") +@TableName("sys_post") +public class SysPost extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "岗位编码") + @TableField("post_code") + private String postCode; + + @Schema(description = "岗位名称") + @TableField("name") + private String name; + + @Schema(description = "显示顺序") + @TableField("description") + private String description; + + @Schema(description = "状态(1正常 0停用)") + @TableField("status") + private Integer status; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/system/SysRole.java b/model/src/main/java/com/atguigu/tingshu/model/system/SysRole.java new file mode 100644 index 0000000..47a4c82 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/system/SysRole.java @@ -0,0 +1,31 @@ +package com.atguigu.tingshu.model.system; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + + +@Data +@Schema(description = "角色") +@TableName("sys_role") +public class SysRole extends BaseEntity { + + private static final long serialVersionUID = 1L; + + //@NotBlank(message = "角色名称不能为空") + @Schema(description = "角色名称") + @TableField("role_name") + private String roleName; + + @Schema(description = "角色编码") + @TableField("role_code") + private String roleCode; + + @Schema(description = "描述") + @TableField("description") + private String description; + +} + diff --git a/model/src/main/java/com/atguigu/tingshu/model/system/SysRoleMenu.java b/model/src/main/java/com/atguigu/tingshu/model/system/SysRoleMenu.java new file mode 100644 index 0000000..414ca2e --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/system/SysRoleMenu.java @@ -0,0 +1,25 @@ +package com.atguigu.tingshu.model.system; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "角色菜单") +@TableName("sys_role_menu") +public class SysRoleMenu extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "角色id") + @TableField("role_id") + private Long roleId; + + @Schema(description = "菜单id") + @TableField("menu_id") + private Long menuId; + +} + diff --git a/model/src/main/java/com/atguigu/tingshu/model/system/SysUser.java b/model/src/main/java/com/atguigu/tingshu/model/system/SysUser.java new file mode 100644 index 0000000..46d389f --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/system/SysUser.java @@ -0,0 +1,66 @@ +package com.atguigu.tingshu.model.system; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "用户") +@TableName("sys_user") +public class SysUser extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户名") + @TableField("username") + private String username; + + @Schema(description = "密码") + @TableField("password") + private String password; + + @Schema(description = "姓名") + @TableField("name") + private String name; + + @Schema(description = "手机") + @TableField("phone") + private String phone; + + @Schema(description = "头像地址") + @TableField("head_url") + private String headUrl; + + @Schema(description = "部门id") + @TableField("dept_id") + private Long deptId; + + @Schema(description = "岗位id") + @TableField("post_id") + private Long postId; + + @Schema(description = "描述") + @TableField("description") + private String description; + + @Schema(description = "状态(1:正常 0:停用)") + @TableField("status") + private Integer status; + + @TableField(exist = false) + private List roleList; + //岗位 + @TableField(exist = false) + private String postName; + //部门 + @TableField(exist = false) + private String deptName; + + @TableField(exist = false) + List userPermsList; +} + diff --git a/model/src/main/java/com/atguigu/tingshu/model/system/SysUserRole.java b/model/src/main/java/com/atguigu/tingshu/model/system/SysUserRole.java new file mode 100644 index 0000000..02c952d --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/system/SysUserRole.java @@ -0,0 +1,24 @@ +package com.atguigu.tingshu.model.system; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "用户角色") +@TableName("sys_user_role") +public class SysUserRole extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "角色id") + @TableField("role_id") + private Long roleId; + + @Schema(description = "用户id") + @TableField("user_id") + private Long userId; +} + diff --git a/model/src/main/java/com/atguigu/tingshu/model/user/UserCertification.java b/model/src/main/java/com/atguigu/tingshu/model/user/UserCertification.java new file mode 100644 index 0000000..c9427d2 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/user/UserCertification.java @@ -0,0 +1,40 @@ +package com.atguigu.tingshu.model.user; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "UserCertification") +@TableName("user_certification") +public class UserCertification extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户id") + @TableField("user_id") + private Long userId; + + @Schema(description = "身份证地址1") + @TableField("id_card1_url") + private String idCard1Url; + + @Schema(description = "身份证地址2") + @TableField("id_card2_url") + private String idCard2Url; + + @Schema(description = "人脸图片地址") + @TableField("face_url") + private String faceUrl; + + @Schema(description = "比对结果数据") + @TableField("result_data") + private String resultData; + + @Schema(description = "日志操作用户") + @TableField("operate_user_id") + private Long operateUserId; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/user/UserCollect.java b/model/src/main/java/com/atguigu/tingshu/model/user/UserCollect.java new file mode 100644 index 0000000..3b8223f --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/user/UserCollect.java @@ -0,0 +1,28 @@ +package com.atguigu.tingshu.model.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +@Data +@Schema(description = "用户收藏") +@Document +public class UserCollect { + + @Schema(description = "id") + @Id + private String id; + + @Schema(description = "用户ID") + private Long userId; + + @Schema(description = "声音ID") + private Long trackId; + + @Schema(description = "创建时间") + private Date createTime; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/user/UserInfo.java b/model/src/main/java/com/atguigu/tingshu/model/user/UserInfo.java new file mode 100644 index 0000000..54688bc --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/user/UserInfo.java @@ -0,0 +1,70 @@ +package com.atguigu.tingshu.model.user; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "UserInfo") +@TableName("user_info") +public class UserInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "手机") + @TableField("phone") + private String phone; + + @Schema(description = "密码") + @TableField("password") + private String password; + + @Schema(description = "微信openId") + @TableField("wx_open_id") + private String wxOpenId; + + @Schema(description = "nickname") + @TableField("nickname") + private String nickname; + + @Schema(description = "主播用户头像图片") + @TableField("avatar_url") + private String avatarUrl; + + @Schema(description = "用户是否为VIP会员 0:普通用户 1:VIP会员") + @TableField("is_vip") + private Integer isVip; + + @Schema(description = "当前VIP到期时间,即失效时间") + @TableField("vip_expire_time") + private Date vipExpireTime; + + @Schema(description = "性别") + @TableField("gender") + private Integer gender; + + @Schema(description = "出生年月") + @TableField("birthday") + private Date birthday; + + @Schema(description = "简介") + @TableField("intro") + private String intro; + + @Schema(description = "主播认证类型") + @TableField("certification_type") + private Integer certificationType; + + @Schema(description = "认证状态") + @TableField("certification_status") + private Integer certificationStatus; + + @Schema(description = "状态") + @TableField("status") + private String status; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/model/user/UserListenProcess.java b/model/src/main/java/com/atguigu/tingshu/model/user/UserListenProcess.java new file mode 100644 index 0000000..ede9108 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/user/UserListenProcess.java @@ -0,0 +1,41 @@ +package com.atguigu.tingshu.model.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "UserListenProcess") +@Document +public class UserListenProcess { + + @Schema(description = "id") + @Id + private String id; + + @Schema(description = "用户id") + private Long userId; + + @Schema(description = "专辑id") + private Long albumId; + + @Schema(description = "声音id,声音id为0时,浏览的是专辑") + private Long trackId; + + @Schema(description = "相对于音频开始位置的播放跳出位置,单位为秒。比如当前音频总时长60s,本次播放到音频第25s处就退出或者切到下一首,那么break_second就是25") + private BigDecimal breakSecond; + + @Schema(description = "是否显示") + private Integer isShow; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "更新时间") + private Date updateTime; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/user/UserPaidAlbum.java b/model/src/main/java/com/atguigu/tingshu/model/user/UserPaidAlbum.java new file mode 100644 index 0000000..779812e --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/user/UserPaidAlbum.java @@ -0,0 +1,28 @@ +package com.atguigu.tingshu.model.user; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "UserPaidAlbum") +@TableName("user_paid_album") +public class UserPaidAlbum extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "订单号") + @TableField("order_no") + private String orderNo; + + @Schema(description = "用户ID") + @TableField("user_id") + private Long userId; + + @Schema(description = "专辑id") + @TableField("album_id") + private Long albumId; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/user/UserPaidTrack.java b/model/src/main/java/com/atguigu/tingshu/model/user/UserPaidTrack.java new file mode 100644 index 0000000..636ee14 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/user/UserPaidTrack.java @@ -0,0 +1,32 @@ +package com.atguigu.tingshu.model.user; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "UserPaidTrack") +@TableName("user_paid_track") +public class UserPaidTrack extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "订单号") + @TableField("order_no") + private String orderNo; + + @Schema(description = "用户ID") + @TableField("user_id") + private Long userId; + + @Schema(description = "专辑id") + @TableField("album_id") + private Long albumId; + + @Schema(description = "声音id") + @TableField("track_id") + private Long trackId; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/user/UserStat.java b/model/src/main/java/com/atguigu/tingshu/model/user/UserStat.java new file mode 100644 index 0000000..28658a6 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/user/UserStat.java @@ -0,0 +1,28 @@ +package com.atguigu.tingshu.model.user; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "UserStat") +@TableName("user_stat") +public class UserStat extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "用户id") + @TableField("user_id") + private Long userId; + + @Schema(description = "统计类型") + @TableField("stat_type") + private Integer statType; + + @Schema(description = "统计数目") + @TableField("stat_num") + private Integer statNum; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/user/UserSubscribe.java b/model/src/main/java/com/atguigu/tingshu/model/user/UserSubscribe.java new file mode 100644 index 0000000..96ecb5e --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/user/UserSubscribe.java @@ -0,0 +1,28 @@ +package com.atguigu.tingshu.model.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +@Data +@Schema(description = "用户订阅") +@Document +public class UserSubscribe { + + @Schema(description = "id") + @Id + private String id; + + @Schema(description = "用户ID") + private Long userId; + + @Schema(description = "专辑ID") + private Long albumId; + + @Schema(description = "创建时间") + private Date createTime; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/user/UserVipService.java b/model/src/main/java/com/atguigu/tingshu/model/user/UserVipService.java new file mode 100644 index 0000000..cb99dfe --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/user/UserVipService.java @@ -0,0 +1,42 @@ +package com.atguigu.tingshu.model.user; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "UserVipService") +@TableName("user_vip_service") +public class UserVipService extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "订单号") + @TableField("order_no") + private String orderNo; + + @Schema(description = "用户id") + @TableField("user_id") + private Long userId; + + @Schema(description = "开始生效日期") + @TableField("start_time") + private Date startTime; + + @Schema(description = "到期时间") + @TableField("expire_time") + private Date expireTime; + + @Schema(description = "是否自动续费") + @TableField("is_auto_renew") + private Integer isAutoRenew; + + @Schema(description = "下次自动续费时间") + @TableField("next_renew_time") + private Date nextRenewTime; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/model/user/VipServiceConfig.java b/model/src/main/java/com/atguigu/tingshu/model/user/VipServiceConfig.java new file mode 100644 index 0000000..4f3ee13 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/model/user/VipServiceConfig.java @@ -0,0 +1,46 @@ +package com.atguigu.tingshu.model.user; + +import com.atguigu.tingshu.model.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "VipServiceConfig") +@TableName("vip_service_config") +public class VipServiceConfig extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Schema(description = "服务名称") + @TableField("name") + private String name; + + @Schema(description = "原价,单位元,用于营销展示") + @TableField("price") + private BigDecimal price; + + @Schema(description = "折后价,单位元,即实际价格") + @TableField("discount_price") + private BigDecimal discountPrice; + + @Schema(description = "优惠简介") + @TableField("intro") + private String intro; + + @Schema(description = "服务简介,富文本") + @TableField("rich_intro") + private String richIntro; + + @Schema(description = "服务月数") + @TableField("service_month") + private Integer serviceMonth; + + @Schema(description = "服务图片url") + @TableField("image_url") + private String imageUrl; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/query/album/AlbumInfoQuery.java b/model/src/main/java/com/atguigu/tingshu/query/album/AlbumInfoQuery.java new file mode 100644 index 0000000..3299d08 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/query/album/AlbumInfoQuery.java @@ -0,0 +1,18 @@ +package com.atguigu.tingshu.query.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "专辑信息") +public class AlbumInfoQuery { + + @Schema(description = "标题") + private String albumTitle; + + @Schema(description = "状态") + private String status; + + @Schema(description = "用户id") + private Long userId; +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/query/album/TrackInfoQuery.java b/model/src/main/java/com/atguigu/tingshu/query/album/TrackInfoQuery.java new file mode 100644 index 0000000..bd1d4d9 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/query/album/TrackInfoQuery.java @@ -0,0 +1,18 @@ +package com.atguigu.tingshu.query.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "声音信息") +public class TrackInfoQuery { + + @Schema(description = "标题") + private String trackTitle; + + @Schema(description = "状态") + private String status; + + @Schema(description = "用户id") + private Long userId; +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/query/order/OrderInfoQuery.java b/model/src/main/java/com/atguigu/tingshu/query/order/OrderInfoQuery.java new file mode 100644 index 0000000..825e76c --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/query/order/OrderInfoQuery.java @@ -0,0 +1,15 @@ +package com.atguigu.tingshu.query.order; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "订单信息") +public class OrderInfoQuery { + + @Schema(description = "创建时间") + private String createTimeBegin; + + @Schema(description = "创建时间") + private String createTimeEnd; +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/query/search/AlbumIndexQuery.java b/model/src/main/java/com/atguigu/tingshu/query/search/AlbumIndexQuery.java new file mode 100644 index 0000000..8b4becc --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/query/search/AlbumIndexQuery.java @@ -0,0 +1,33 @@ +package com.atguigu.tingshu.query.search; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +@Schema(description = "专辑信息搜索") +public class AlbumIndexQuery { + + @Schema(description = "关键字") + private String keyword; + + @Schema(description = "一级分类") + private Long category1Id; + + @Schema(description = "二级分类") + private Long category2Id; + + @Schema(description = "三级分类") + private Long category3Id; + + @Schema(description = "属性(属性id:属性值id)") + private List attributeList; + + // order=1:asc 排序规则 0:asc + @Schema(description = "排序(综合排序[1:desc] 播放量[2:desc] 发布时间[3:desc];asc:升序 desc:降序)") + private String order = "";// 1:综合排序 2:播放量 3:最近更新 + + private Integer pageNo = 1;//分页信息 + private Integer pageSize = 10; +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/query/user/UserInfoQuery.java b/model/src/main/java/com/atguigu/tingshu/query/user/UserInfoQuery.java new file mode 100644 index 0000000..88e3d9a --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/query/user/UserInfoQuery.java @@ -0,0 +1,21 @@ +package com.atguigu.tingshu.query.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "声音信息") +public class UserInfoQuery { + + @Schema(description = "手机") + private String phone; + + @Schema(description = "昵称") + private String nickname; + + @Schema(description = "创建时间") + private String createTimeBegin; + + @Schema(description = "创建时间") + private String createTimeEnd; +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/validation/NotEmptyPaid.java b/model/src/main/java/com/atguigu/tingshu/validation/NotEmptyPaid.java new file mode 100644 index 0000000..b11c729 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/validation/NotEmptyPaid.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.validation; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; + +import java.lang.annotation.*; + +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD }) +@Constraint(validatedBy = NotEmptyPaidValidator.class) +public @interface NotEmptyPaid { + + String message() default "不能为空"; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/model/src/main/java/com/atguigu/tingshu/validation/NotEmptyPaidValidator.java b/model/src/main/java/com/atguigu/tingshu/validation/NotEmptyPaidValidator.java new file mode 100644 index 0000000..a575c52 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/validation/NotEmptyPaidValidator.java @@ -0,0 +1,16 @@ +package com.atguigu.tingshu.validation; + +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; + + +public class NotEmptyPaidValidator implements ConstraintValidator { + + @Override + public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { + String[] array = value.split("_"); + if(array.length == 0 || "0101".equals(array[0])) return true; + if(array.length != 2) return false; + return true; + } +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/account/AccountDeductVo.java b/model/src/main/java/com/atguigu/tingshu/vo/account/AccountDeductVo.java new file mode 100644 index 0000000..0d09dcd --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/account/AccountDeductVo.java @@ -0,0 +1,24 @@ +package com.atguigu.tingshu.vo.account; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "扣减金额对象") +public class AccountDeductVo { + + @Schema(description = "订单号") + private String orderNo; + + @Schema(description = "用户id") + private Long userId; + + @Schema(description = "扣减金额") + private BigDecimal amount; + + @Schema(description = "扣减内容") + private String content; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/account/AccountLockResultVo.java b/model/src/main/java/com/atguigu/tingshu/vo/account/AccountLockResultVo.java new file mode 100644 index 0000000..a4eb240 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/account/AccountLockResultVo.java @@ -0,0 +1,21 @@ +package com.atguigu.tingshu.vo.account; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "锁定金额返回对象") +public class AccountLockResultVo { + + @Schema(description = "用户id") + private Long userId; + + @Schema(description = "锁定金额") + private BigDecimal amount; + + @Schema(description = "锁定内容") + private String content; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/account/AccountLockVo.java b/model/src/main/java/com/atguigu/tingshu/vo/account/AccountLockVo.java new file mode 100644 index 0000000..a6c2e92 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/account/AccountLockVo.java @@ -0,0 +1,24 @@ +package com.atguigu.tingshu.vo.account; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "锁定金额对象") +public class AccountLockVo { + + @Schema(description = "订单号") + private String orderNo; + + @Schema(description = "用户id") + private Long userId; + + @Schema(description = "锁定金额") + private BigDecimal amount; + + @Schema(description = "锁定内容") + private String content; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/account/RechargeInfoVo.java b/model/src/main/java/com/atguigu/tingshu/vo/account/RechargeInfoVo.java new file mode 100644 index 0000000..212cd24 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/account/RechargeInfoVo.java @@ -0,0 +1,18 @@ +package com.atguigu.tingshu.vo.account; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "充值对象") +public class RechargeInfoVo { + + @Schema(description = "充值金额") + private BigDecimal amount; + + @Schema(description = "支付方式:1101-微信 1102-支付宝") + private String payWay; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumAttributeValueVo.java b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumAttributeValueVo.java new file mode 100644 index 0000000..b588abd --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumAttributeValueVo.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.vo.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +@Schema(description = "专辑属性值") +public class AlbumAttributeValueVo { + + @NotNull(message = "属性id不能为空") + @Schema(description = "属性id") + private Long attributeId; + + @NotNull(message = "属性值id不能为空") + @Schema(description = "属性值id") + private Long valueId; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumInfoVo.java b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumInfoVo.java new file mode 100644 index 0000000..89e178f --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumInfoVo.java @@ -0,0 +1,91 @@ +package com.atguigu.tingshu.vo.album; + +import com.atguigu.tingshu.common.util.Decimal2Serializer; +import com.atguigu.tingshu.validation.NotEmptyPaid; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Positive; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@Schema(description = "专辑信息") +public class AlbumInfoVo { + + @NotEmpty(message = "专辑标题不能为空") + @Length(min = 2, message = "专辑标题的长度必须大于2") + @Schema(description = "标题", required=true) + private String albumTitle; + + @Positive(message = "三级分类不能为空") + @Schema(description = "三级分类id", required=true) + private Long category3Id; + + @NotEmpty(message = "专辑简介不能为空") + @Schema(description = "专辑简介", required=true) + private String albumIntro; + + @NotEmpty(message = "专辑封面不能为空") + @Schema(description = "专辑封面图", required=true) + private String coverUrl; + + @Schema(description = "预计更新多少集") + private Integer estimatedTrackCount; + + @Schema(description = "专辑简介,富文本") + private String albumRichIntro; + + @NotEmpty(message = "付费类型不能为空") + @Schema(description = "付费类型: 0101-免费、0102-vip免费、0103-付费", required=true) + private String payType; + + @Schema(description = "价格类型: 0201-单集 0202-整专辑") + private String priceType; + + @Schema(description = "原价") + @JsonSerialize(using = Decimal2Serializer.class) + private BigDecimal price; + + @Schema(description = "0.1-9.9 不打折 -1") + @JsonSerialize(using = Decimal2Serializer.class) + private BigDecimal discount = new BigDecimal(-1); + + @Schema(description = "0.1-9.9 不打折 -1") + @JsonSerialize(using = Decimal2Serializer.class) + private BigDecimal vipDiscount = new BigDecimal(-1); + + @Schema(description = "免费试听集数") + private Integer tracksForFree; + + @Schema(description = "每集免费试听秒数") + private Integer secondsForFree; + + @Schema(description = "购买须知,富文本") + private String buyNotes; + + @Schema(description = "专辑卖点,富文本") + private String sellingPoint; + + @Schema(description = "是否公开:0-否 1-是") + private String isOpen; + + //递归校验 + //@Valid + //@NotEmpty(message = "属性值集合不能为空") + @Schema(description = "属性值集合") + private List albumAttributeValueVoList; + + @NotEmptyPaid(message = "价格类型不能为空") + public String getPayTypeAndPriceType() { + return this.getPayType() + "_" + this.getPriceType(); + } + + @NotEmptyPaid(message = "价格不能为空") + public String getPayTypeAndPrice() { + return this.getPayType() + "_" + this.getPrice(); + } +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumListVo.java b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumListVo.java new file mode 100644 index 0000000..92029b0 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumListVo.java @@ -0,0 +1,40 @@ +package com.atguigu.tingshu.vo.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "用户专辑列表信息") +public class AlbumListVo { + + @Schema(description = "专辑id") + private Long albumId; + + @Schema(description = "标题") + private String albumTitle; + + @Schema(description = "专辑封面原图,尺寸不固定,最大尺寸为960*960(像素)") + private String coverUrl; + + @Schema(description = "专辑包含声音总数") + private Integer includeTrackCount; + + @Schema(description = "专辑是否完结:0-否;1-完结;") + private String isFinished; + + @Schema(description = "状态") + private String status; + + @Schema(description = "播放量") + private Integer playStatNum; + + @Schema(description = "订阅量") + private Integer subscribeStatNum; + + @Schema(description = "购买量") + private Integer buyStatNum; + + @Schema(description = "评论数") + private Integer commentStatNum; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumStatMqVo.java b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumStatMqVo.java new file mode 100644 index 0000000..86344a1 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumStatMqVo.java @@ -0,0 +1,22 @@ +package com.atguigu.tingshu.vo.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "AlbumStatMqVo") +public class AlbumStatMqVo { + + @Schema(description = "业务编号:去重使用") + private String businessNo; + + @Schema(description = "专辑id") + private Long albumId; + + @Schema(description = "统计类型") + private String statType; + + @Schema(description = "更新数目") + private Integer count; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumStatVo.java b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumStatVo.java new file mode 100644 index 0000000..5be2481 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumStatVo.java @@ -0,0 +1,24 @@ +package com.atguigu.tingshu.vo.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "专辑统计信息") +public class AlbumStatVo { + + @Schema(description = "专辑id") + private Long albumId; + + @Schema(description = "播放量") + private Integer playStatNum; + + @Schema(description = "订阅量") + private Integer subscribeStatNum; + + @Schema(description = "购买量") + private Integer buyStatNum; + + @Schema(description = "评论数") + private Integer commentStatNum; +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumTrackListVo.java b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumTrackListVo.java new file mode 100644 index 0000000..ad51547 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/album/AlbumTrackListVo.java @@ -0,0 +1,37 @@ +package com.atguigu.tingshu.vo.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Schema(description = "用户专辑声音列表信息") +public class AlbumTrackListVo { + + @Schema(description = "声音id") + private Long trackId; + + @Schema(description = "标题") + private String trackTitle; + + @Schema(description = "声音媒体时长,单位秒") + private BigDecimal mediaDuration; + + @Schema(description = "排序") + private Integer orderNum; + + @Schema(description = "播放量") + private Integer playStatNum; + + @Schema(description = "评论数") + private Integer commentStatNum; + + @Schema(description = "发布时间") + private Date createTime; + + @Schema(description = "是否显示付费标识,isShowPiadMark=true,则显示付费标识") + private Boolean isShowPaidMark = false; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/album/TrackInfoVo.java b/model/src/main/java/com/atguigu/tingshu/vo/album/TrackInfoVo.java new file mode 100644 index 0000000..7964a52 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/album/TrackInfoVo.java @@ -0,0 +1,40 @@ +package com.atguigu.tingshu.vo.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Positive; +import lombok.Data; + +@Data +@Schema(description = "声音信息") +public class TrackInfoVo { + + @Positive(message = "专辑Id不能为空") + @Schema(description = "专辑id", requiredMode = Schema.RequiredMode.REQUIRED) + private Long albumId; + + @NotEmpty(message = "媒体文件Id不能为空") + @Schema(description = "媒体文件的唯一标识", requiredMode = Schema.RequiredMode.REQUIRED) + private String mediaFileId; + + @NotEmpty(message = "媒体文件地址") + @Schema(description = "媒体文件地址", requiredMode = Schema.RequiredMode.REQUIRED) + private String mediaUrl; + + @NotEmpty(message = "声音标题不能为空") + @Schema(description = "声音标题", requiredMode = Schema.RequiredMode.REQUIRED) + private String trackTitle; + + @Schema(description = "声音简介") + private String trackIntro; + + @Schema(description = "声音简介,富文本") + private String trackRichIntro; + + @Schema(description = "声音封面图url") + private String coverUrl; + + @Schema(description = "是否公开:0-否 1-是") + private String isOpen; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/album/TrackListVo.java b/model/src/main/java/com/atguigu/tingshu/vo/album/TrackListVo.java new file mode 100644 index 0000000..ddd154b --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/album/TrackListVo.java @@ -0,0 +1,45 @@ +package com.atguigu.tingshu.vo.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "用户声音列表信息") +public class TrackListVo { + + @Schema(description = "专辑id") + private Long albumId; + + @Schema(description = "标题") + private String albumTitle; + + @Schema(description = "声音id") + private Long trackId; + + @Schema(description = "标题") + private String trackTitle; + + @Schema(description = "专辑封面原图,尺寸不固定,最大尺寸为960*960(像素)") + private String coverUrl; + + @Schema(description = "声音媒体时长,单位秒") + private BigDecimal mediaDuration; + + @Schema(description = "状态") + private String status; + + @Schema(description = "播放量") + private Integer playStatNum; + + @Schema(description = "订阅量") + private Integer collectStatNum; + + @Schema(description = "购买量") + private Integer praiseStatNum; + + @Schema(description = "评论数") + private Integer commentStatNum; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/album/TrackMediaInfoVo.java b/model/src/main/java/com/atguigu/tingshu/vo/album/TrackMediaInfoVo.java new file mode 100644 index 0000000..932a7d9 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/album/TrackMediaInfoVo.java @@ -0,0 +1,21 @@ +package com.atguigu.tingshu.vo.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "声音媒体信息") +public class TrackMediaInfoVo { + + @Schema(description = "音频文件大小,单位字节") + private Long size; + + @Schema(description = "声音时长,单位秒") + private Float duration; + + @Schema(description = "声音播放地址") + private String mediaUrl; + + @Schema(description = "声音媒体类型") + private String type; +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/album/TrackStatMqVo.java b/model/src/main/java/com/atguigu/tingshu/vo/album/TrackStatMqVo.java new file mode 100644 index 0000000..ce07e98 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/album/TrackStatMqVo.java @@ -0,0 +1,25 @@ +package com.atguigu.tingshu.vo.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "TrackStatMqVo") +public class TrackStatMqVo { + + @Schema(description = "业务编号:去重使用") + private String businessNo; + + @Schema(description = "专辑id") + private Long albumId; + + @Schema(description = "声音id") + private Long trackId; + + @Schema(description = "统计类型") + private String statType; + + @Schema(description = "更新数目") + private Integer count; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/album/TrackStatVo.java b/model/src/main/java/com/atguigu/tingshu/vo/album/TrackStatVo.java new file mode 100644 index 0000000..d4911ef --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/album/TrackStatVo.java @@ -0,0 +1,23 @@ +package com.atguigu.tingshu.vo.album; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "用户声音统计信息") +public class TrackStatVo { + + + @Schema(description = "播放量") + private Integer playStatNum; + + @Schema(description = "订阅量") + private Integer collectStatNum; + + @Schema(description = "购买量") + private Integer praiseStatNum; + + @Schema(description = "评论数") + private Integer commentStatNum; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/base/PageVo.java b/model/src/main/java/com/atguigu/tingshu/vo/base/PageVo.java new file mode 100644 index 0000000..de93765 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/base/PageVo.java @@ -0,0 +1,53 @@ +package com.atguigu.tingshu.vo.base; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.io.Serializable; +import java.util.List; + +/** + * 分页结果包装 + * + * @author atguigu + */ +@Data +@Schema(description = "分页数据消息体") +@Builder +@AllArgsConstructor(access = AccessLevel.PRIVATE) +@NoArgsConstructor +public class PageVo implements Serializable { + + @Schema(description = "总条目数", requiredMode = Schema.RequiredMode.REQUIRED) + private Long total; + + @Schema(description = "页尺寸", requiredMode = Schema.RequiredMode.REQUIRED) + private Long size; + + @Schema(description = "总页数", requiredMode = Schema.RequiredMode.REQUIRED) + private Long pages; + + @Schema(description = "当前页码", requiredMode = Schema.RequiredMode.REQUIRED) + private long current; + + @Schema(description = "数据列表", requiredMode = Schema.RequiredMode.REQUIRED) + private List records; + + public PageVo(IPage pageModel) { + this.setRecords(pageModel.getRecords()); + this.setTotal(pageModel.getTotal()); + this.setSize(pageModel.getSize()); + this.setPages(pageModel.getPages()); + this.setCurrent(pageModel.getCurrent()); + } + + public PageVo(List list, IPage pageModel) { + this.setRecords(list); + this.setTotal(pageModel.getTotal()); + this.setSize(pageModel.getSize()); + this.setPages(pageModel.getPages()); + this.setCurrent(pageModel.getCurrent()); + } + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/comment/CommentVo.java b/model/src/main/java/com/atguigu/tingshu/vo/comment/CommentVo.java new file mode 100644 index 0000000..974235d --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/comment/CommentVo.java @@ -0,0 +1,28 @@ +package com.atguigu.tingshu.vo.comment; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Positive; +import lombok.Data; + +@Data +@Schema(description = "专辑评论") +public class CommentVo { + + @Positive(message = "专辑id不能为空") + @Schema(description = "专辑id") + private Long albumId; + + @Positive(message = "评分不能为空") + @Schema(description = "评论中对专辑的评分 (十分制,建议采用五星制,如10分显示五颗星,7分显示三颗半星)") + private Integer albumCommentScore; + + @NotEmpty(message = "评论内容不能为空") + @Schema(description = "评论内容") + private String content; + + @NotEmpty(message = "被回复的评论id不能为空") + @Schema(description = "被回复的评论id,一级评论默认为:0") + private String replyCommentId; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/live/LiveRoomVo.java b/model/src/main/java/com/atguigu/tingshu/vo/live/LiveRoomVo.java new file mode 100644 index 0000000..082e570 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/live/LiveRoomVo.java @@ -0,0 +1,34 @@ +package com.atguigu.tingshu.vo.live; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "LiveRoom") +public class LiveRoomVo { + + + @Schema(description = "直播间封面") + private String coverUrl; + + @Schema(description = "直播标题") + private String liveTitle; + + @Schema(description = "直播间标签id") + private String tagId; + + @Schema(description = "过期时间") + private Date expireTime; + + @Schema(description = "经度") + private String longitude; + + @Schema(description = "纬度") + private String latitude; + + @Schema(description = "位置") + private String location; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/live/TencentLiveAddressVo.java b/model/src/main/java/com/atguigu/tingshu/vo/live/TencentLiveAddressVo.java new file mode 100644 index 0000000..6c8c51d --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/live/TencentLiveAddressVo.java @@ -0,0 +1,13 @@ +package com.atguigu.tingshu.vo.live; + +import lombok.Data; + +@Data +public class TencentLiveAddressVo { + + private String pushWebRtcUrl; + private String pullFlvUrl; + private String pullM3u8Url; + private String pullRtmpUrl; + private String pullWebRtcUrl; +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/order/OrderDerateVo.java b/model/src/main/java/com/atguigu/tingshu/vo/order/OrderDerateVo.java new file mode 100644 index 0000000..fc86974 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/order/OrderDerateVo.java @@ -0,0 +1,24 @@ +package com.atguigu.tingshu.vo.order; + +import com.atguigu.tingshu.common.util.Decimal2Serializer; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "订单减免明细") +public class OrderDerateVo { + + @Schema(description = "订单减免类型 1405-专辑折扣 1406-VIP服务折") + private String derateType; + + @Schema(description = "减免金额") + @JsonSerialize(using = Decimal2Serializer.class) + private BigDecimal derateAmount; + + @Schema(description = "备注") + private String remarks; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/order/OrderDetailVo.java b/model/src/main/java/com/atguigu/tingshu/vo/order/OrderDetailVo.java new file mode 100644 index 0000000..8d6a60a --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/order/OrderDetailVo.java @@ -0,0 +1,44 @@ +package com.atguigu.tingshu.vo.order; + +import com.atguigu.tingshu.common.util.Decimal2Serializer; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.*; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "OrderDetail") +public class OrderDetailVo { + + @NotNull(message = "付费项目id不能为空") + @Schema(description = "付费项目id") + private Long itemId; + + @NotEmpty(message = "付费项目id不能为空") + @Schema(description = "付费项目名称") + private String itemName; + + @NotEmpty(message = "付费项目id不能为空") + @Schema(description = "付费项目图片url") + private String itemUrl; + + /** + * value:最小值 + * inclusive:是否可以等于最小值,默认true,>= 最小值 + * message:错误提示(默认有一个错误提示i18n支持中文) + * + * @DecimalMax 同上 + * @Digits integer: 整数位最多几位 + * fraction:小数位最多几位 + * message:同上,有默认提示 + */ + @DecimalMin(value = "0.00", inclusive = false, message = "付费项目价格必须大于0.00") + @DecimalMax(value = "9999.99", inclusive = true, message = "付费项目价格必须大于9999.99") + @Digits(integer = 4, fraction = 2) + @Schema(description = "付费项目价格") + @JsonSerialize(using = Decimal2Serializer.class) + private BigDecimal itemPrice; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/order/OrderInfoVo.java b/model/src/main/java/com/atguigu/tingshu/vo/order/OrderInfoVo.java new file mode 100644 index 0000000..7891b37 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/order/OrderInfoVo.java @@ -0,0 +1,75 @@ +package com.atguigu.tingshu.vo.order; + +import com.atguigu.tingshu.common.util.Decimal2Serializer; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; +import jakarta.validation.constraints.DecimalMax; +import jakarta.validation.constraints.DecimalMin; +import jakarta.validation.constraints.Digits; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@Schema(description = "订单对象") +public class OrderInfoVo { + + @NotEmpty(message = "交易号不能为空") + @Schema(description = "交易号", requiredMode = Schema.RequiredMode.REQUIRED) + private String tradeNo; + + @NotEmpty(message = "支付方式不能为空") + @Schema(description = "支付方式:1101-微信 1102-支付宝 1103-账户余额", requiredMode = Schema.RequiredMode.REQUIRED) + private String payWay; + + @NotEmpty(message = "付款项目类型不能为空") + @Schema(description = "付款项目类型: 1001-专辑 1002-声音 1003-vip会员", requiredMode = Schema.RequiredMode.REQUIRED) + private String itemType; + + /** + * value:最小值 + * inclusive:是否可以等于最小值,默认true,>= 最小值 + * message:错误提示(默认有一个错误提示i18n支持中文) + * + * @DecimalMax 同上 + * @Digits integer: 整数位最多几位 + * fraction:小数位最多几位 + * message:同上,有默认提示 + */ + @DecimalMin(value = "0.00", inclusive = false, message = "订单原始金额必须大于0.00") + @DecimalMax(value = "9999.99", inclusive = true, message = "订单原始金额必须大于9999.99") + @Digits(integer = 4, fraction = 2) + @Schema(description = "订单原始金额", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonSerialize(using = Decimal2Serializer.class) + private BigDecimal originalAmount; + + @DecimalMin(value = "0.00", inclusive = true, message = "减免总金额必须大于0.00") + @DecimalMax(value = "9999.99", inclusive = true, message = "减免总金额必须大于9999.99") + @Digits(integer = 4, fraction = 2) + @Schema(description = "减免总金额", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonSerialize(using = Decimal2Serializer.class) + private BigDecimal derateAmount; + + @DecimalMin(value = "0.00", inclusive = false, message = "订单总金额必须大于0.00") + @DecimalMax(value = "9999.99", inclusive = true, message = "订单总金额必须大于9999.99") + @Digits(integer = 4, fraction = 2) + @Schema(description = "订单总金额", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonSerialize(using = Decimal2Serializer.class) + private BigDecimal orderAmount; + + @Valid + @NotEmpty(message = "订单明细列表不能为空") + @Schema(description = "订单明细列表", requiredMode = Schema.RequiredMode.REQUIRED) + private List orderDetailVoList; + + @Schema(description = "订单减免明细列表") + private List orderDerateVoList; + + @Schema(description = "时间戳", requiredMode = Schema.RequiredMode.REQUIRED) + private Long timestamp; + @Schema(description = "签名", requiredMode = Schema.RequiredMode.REQUIRED) + private String sign; +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/order/TradeResponeVo.java b/model/src/main/java/com/atguigu/tingshu/vo/order/TradeResponeVo.java new file mode 100644 index 0000000..2cb2f53 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/order/TradeResponeVo.java @@ -0,0 +1,37 @@ +package com.atguigu.tingshu.vo.order; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@Schema(description = "订单确认对象") +public class TradeResponeVo { + + @Schema(description = "订单原始金额") + private BigDecimal originalAmount; + + @Schema(description = "减免总金额") + private BigDecimal derateAmount; + + @Schema(description = "订单总价") + private BigDecimal orderAmount; + + @Schema(description = "付款项目类型: 1001-专辑 1002-声音 1003-vip会员") + private String itemType; + + @Schema(description = "付款项目类型Id") + private Long itemId; + + @Schema(description = "针对声音购买,购买当前集往后多少集") + private Integer trackCount; + + @Schema(description = "交易号") + private String tradeNo; + + @Schema(description = "付款项目详情") + List detailList; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/order/TradeVo.java b/model/src/main/java/com/atguigu/tingshu/vo/order/TradeVo.java new file mode 100644 index 0000000..24543f1 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/order/TradeVo.java @@ -0,0 +1,23 @@ +package com.atguigu.tingshu.vo.order; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Positive; +import lombok.Data; + +@Data +@Schema(description = "订单确认对象") +public class TradeVo { + + @NotEmpty(message = "付款项目类型不能为空") + @Schema(description = "付款项目类型: 1001-专辑 1002-声音 1003-vip会员", requiredMode = Schema.RequiredMode.REQUIRED) + private String itemType; + + @Positive(message = "付款项目类型Id不能为空") + @Schema(description = "付款项目类型Id", requiredMode = Schema.RequiredMode.REQUIRED) + private Long itemId; + + @Schema(description = "针对声音购买,购买当前集往后多少集", required = false) + private Integer trackCount; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/payment/PaymentVo.java b/model/src/main/java/com/atguigu/tingshu/vo/payment/PaymentVo.java new file mode 100644 index 0000000..67234ed --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/payment/PaymentVo.java @@ -0,0 +1,26 @@ +package com.atguigu.tingshu.vo.payment; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "支付信息") +public class PaymentVo { + + + @Schema(description = "支付类型:1301-订单 1302-充值") + private String paymentType; + + @Schema(description = "订单号") + private String orderNo; + + @Schema(description = "付款方式:1101-微信 1102-支付宝") + private String payWay; + + @Schema(description = "支付金额") + private String amount; + + @Schema(description = "交易内容") + private String content; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/search/AlbumInfoIndexVo.java b/model/src/main/java/com/atguigu/tingshu/vo/search/AlbumInfoIndexVo.java new file mode 100644 index 0000000..188c64d --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/search/AlbumInfoIndexVo.java @@ -0,0 +1,55 @@ +package com.atguigu.tingshu.vo.search; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlbumInfoIndexVo { + + // 专辑Id + @Schema(description = "专辑id") + private Long id; + + @Schema(description = "专辑标题") + private String albumTitle; + + @Schema(description = "专辑简介") + private String albumIntro; + + @Schema(description = "主播名称") + private String announcerName; + + @Schema(description = "专辑封面") + private String coverUrl; + + @Schema(description = "专辑包含声音总数") + private Integer includeTrackCount; + + @Schema(description = "专辑是否完结:0-否;1-完结") + private String isFinished; + + @Schema(description = "付费类型: 0101-免费、0102-vip免费、0103-付费") + private String payType; + + @Schema(description = "专辑创建时间") + private Date createTime; // + + //播放量 + @Schema(description = "播放量") + private Integer playStatNum = 0; + + //订阅量 + @Schema(description = "订阅量") + private Integer subscribeStatNum = 0; + + //购买量 + @Schema(description = "购买量") + private Integer buyStatNum = 0; + + //评论数 + @Schema(description = "评论数") + private Integer commentStatNum = 0; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/search/AlbumSearchResponseVo.java b/model/src/main/java/com/atguigu/tingshu/vo/search/AlbumSearchResponseVo.java new file mode 100644 index 0000000..2206801 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/search/AlbumSearchResponseVo.java @@ -0,0 +1,21 @@ +package com.atguigu.tingshu.vo.search; + +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +@Data +public class AlbumSearchResponseVo implements Serializable { + + + //检索出来的商品信息 + private List list = new ArrayList<>(); + + private Long total;//总记录数 + private Integer pageSize;//每页显示的内容 + private Integer pageNo;//当前页面 + private Long totalPages; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/system/AssginMenuVo.java b/model/src/main/java/com/atguigu/tingshu/vo/system/AssginMenuVo.java new file mode 100644 index 0000000..e057dd5 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/system/AssginMenuVo.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.vo.system; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "分配菜单") +@Data +public class AssginMenuVo { + + @Schema(description = "角色id") + private Long roleId; + + @Schema(description = "菜单id列表") + private List menuIdList; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/system/AssginRoleVo.java b/model/src/main/java/com/atguigu/tingshu/vo/system/AssginRoleVo.java new file mode 100644 index 0000000..60c76c3 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/system/AssginRoleVo.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.vo.system; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "分配菜单") +@Data +public class AssginRoleVo { + + @Schema(description = "用户id") + private Long userId; + + @Schema(description = "角色id列表") + private List roleIdList; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/system/LoginVo.java b/model/src/main/java/com/atguigu/tingshu/vo/system/LoginVo.java new file mode 100644 index 0000000..743172b --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/system/LoginVo.java @@ -0,0 +1,34 @@ +package com.atguigu.tingshu.vo.system; + + +/** + * 登录对象 + */ +public class LoginVo { + + /** + * 手机号 + */ + private String username; + + /** + * 密码 + */ + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/system/MetaVo.java b/model/src/main/java/com/atguigu/tingshu/vo/system/MetaVo.java new file mode 100644 index 0000000..6ca5204 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/system/MetaVo.java @@ -0,0 +1,33 @@ +package com.atguigu.tingshu.vo.system; + +import lombok.Data; + +/** + * 路由显示信息 + * + */ +@Data +public class MetaVo +{ + /** + * 设置该路由在侧边栏和面包屑中展示的名字 + */ + private String title; + + /** + * 设置该路由的图标,对应路径src/assets/icons/svg + */ + private String icon; + + public MetaVo() + { + } + + public MetaVo(String title, String icon) + { + this.title = title; + this.icon = icon; + } + +} + diff --git a/model/src/main/java/com/atguigu/tingshu/vo/system/RouterVo.java b/model/src/main/java/com/atguigu/tingshu/vo/system/RouterVo.java new file mode 100644 index 0000000..bb727e4 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/system/RouterVo.java @@ -0,0 +1,50 @@ +package com.atguigu.tingshu.vo.system; + +import lombok.Data; + +import java.util.List; + +/** + * 路由配置信息 + * + */ +@Data +public class RouterVo +{ + /** + * 路由名字 + */ + //private String name; + + /** + * 路由地址 + */ + private String path; + + /** + * 是否隐藏路由,当设置 true 的时候该路由不会再侧边栏出现 + */ + private boolean hidden; + + /** + * 组件地址 + */ + private String component; + + /** + * 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面 + */ + private Boolean alwaysShow; + + /** + * 其他元素 + */ + private MetaVo meta; + + /** + * 子路由 + */ + private List children; + + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/system/SysLoginLogQueryVo.java b/model/src/main/java/com/atguigu/tingshu/vo/system/SysLoginLogQueryVo.java new file mode 100644 index 0000000..178ad1c --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/system/SysLoginLogQueryVo.java @@ -0,0 +1,16 @@ +package com.atguigu.tingshu.vo.system; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class SysLoginLogQueryVo { + + @Schema(description = "用户账号") + private String username; + + private String createTimeBegin; + private String createTimeEnd; + +} + diff --git a/model/src/main/java/com/atguigu/tingshu/vo/system/SysOperLogQueryVo.java b/model/src/main/java/com/atguigu/tingshu/vo/system/SysOperLogQueryVo.java new file mode 100644 index 0000000..879bded --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/system/SysOperLogQueryVo.java @@ -0,0 +1,15 @@ +package com.atguigu.tingshu.vo.system; + +import lombok.Data; + +@Data +public class SysOperLogQueryVo { + + private String title; + private String operName; + + private String createTimeBegin; + private String createTimeEnd; + +} + diff --git a/model/src/main/java/com/atguigu/tingshu/vo/system/SysPostQueryVo.java b/model/src/main/java/com/atguigu/tingshu/vo/system/SysPostQueryVo.java new file mode 100644 index 0000000..8d09610 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/system/SysPostQueryVo.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.vo.system; + +import lombok.Data; + +@Data +public class SysPostQueryVo { + + //@Schema(description = "岗位编码") + private String postCode; + + //@Schema(description = "岗位名称") + private String name; + + //@Schema(description = "状态(1正常 0停用)") + private Boolean status; + + +} + diff --git a/model/src/main/java/com/atguigu/tingshu/vo/system/SysRoleQueryVo.java b/model/src/main/java/com/atguigu/tingshu/vo/system/SysRoleQueryVo.java new file mode 100644 index 0000000..6acbbc7 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/system/SysRoleQueryVo.java @@ -0,0 +1,29 @@ +// +// +package com.atguigu.tingshu.vo.system; + +import java.io.Serializable; + +/** + *

+ * 角色查询实体 + *

+ * + * @author atguigu + * @since 2019-11-08 + */ +public class SysRoleQueryVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private String roleName; + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } +} + diff --git a/model/src/main/java/com/atguigu/tingshu/vo/system/SysUserQueryVo.java b/model/src/main/java/com/atguigu/tingshu/vo/system/SysUserQueryVo.java new file mode 100644 index 0000000..1ae1f76 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/system/SysUserQueryVo.java @@ -0,0 +1,30 @@ +// +// +package com.atguigu.tingshu.vo.system; + + +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 用户查询实体 + *

+ */ +@Data +public class SysUserQueryVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private String keyword; + + private String createTimeBegin; + private String createTimeEnd; + + private Long roleId; + private Long postId; + private Long deptId; + +} + diff --git a/model/src/main/java/com/atguigu/tingshu/vo/user/LoginVo.java b/model/src/main/java/com/atguigu/tingshu/vo/user/LoginVo.java new file mode 100644 index 0000000..5f1bfe7 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/user/LoginVo.java @@ -0,0 +1,15 @@ +package com.atguigu.tingshu.vo.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description="登录对象") +public class LoginVo { + + @Schema(description = "手机号") + private String phone; + + @Schema(description = "手机验证码") + private String code; +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/user/UserCollectVo.java b/model/src/main/java/com/atguigu/tingshu/vo/user/UserCollectVo.java new file mode 100644 index 0000000..b0948b7 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/user/UserCollectVo.java @@ -0,0 +1,27 @@ +package com.atguigu.tingshu.vo.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "用户订阅") +public class UserCollectVo { + + @Schema(description = "专辑ID") + private Long albumId; + + @Schema(description = "声音ID") + private Long trackId; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "标题") + private String trackTitle; + + @Schema(description = "专辑封面原图,尺寸不固定,最大尺寸为960*960(像素)") + private String coverUrl; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/user/UserInfoVo.java b/model/src/main/java/com/atguigu/tingshu/vo/user/UserInfoVo.java new file mode 100644 index 0000000..edbce0e --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/user/UserInfoVo.java @@ -0,0 +1,30 @@ +package com.atguigu.tingshu.vo.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "UserInfoVo") +public class UserInfoVo { + + @Schema(description = "用户id") + private Long id; + + @Schema(description = "微信openId") + private String wxOpenId; + + @Schema(description = "nickname") + private String nickname; + + @Schema(description = "主播用户头像图片") + private String avatarUrl; + + @Schema(description = "用户是否为VIP会员 0:普通用户 1:VIP会员") + private Integer isVip; + + @Schema(description = "当前VIP到期时间,即失效时间") + private Date vipExpireTime; + +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/user/UserListenProcessListVo.java b/model/src/main/java/com/atguigu/tingshu/vo/user/UserListenProcessListVo.java new file mode 100644 index 0000000..c00c996 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/user/UserListenProcessListVo.java @@ -0,0 +1,39 @@ +package com.atguigu.tingshu.vo.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "UserListenProcessListVo") +public class UserListenProcessListVo { + + @Schema(description = "id") + private String id; + + @Schema(description = "专辑id") + private Long albumId; + + @Schema(description = "标题") + private String albumTitle; + + @Schema(description = "声音id") + private Long trackId; + + @Schema(description = "标题") + private String trackTitle; + + @Schema(description = "专辑封面原图,尺寸不固定,最大尺寸为960*960(像素)") + private String coverUrl; + + @Schema(description = "声音媒体时长,单位秒") + private BigDecimal mediaDuration; + + @Schema(description = "相对于音频开始位置的播放跳出位置,单位为秒。比如当前音频总时长60s,本次播放到音频第25s处就退出或者切到下一首,那么break_second就是25") + private BigDecimal breakSecond; + + @Schema(description = "播放比例") + private String playRate; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/user/UserListenProcessVo.java b/model/src/main/java/com/atguigu/tingshu/vo/user/UserListenProcessVo.java new file mode 100644 index 0000000..5c74bb5 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/user/UserListenProcessVo.java @@ -0,0 +1,23 @@ +package com.atguigu.tingshu.vo.user; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@Schema(description = "UserListenProcess") +public class UserListenProcessVo { + + @Schema(description = "专辑id") + private Long albumId; + + @Schema(description = "声音id,声音id为0时,浏览的是专辑") + private Long trackId; + + @Schema(description = "相对于音频开始位置的播放跳出位置,单位为秒。比如当前音频总时长60s,本次播放到音频第25s处就退出或者切到下一首,那么break_second就是25") + @TableField("break_second") + private BigDecimal breakSecond; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/user/UserPaidRecordVo.java b/model/src/main/java/com/atguigu/tingshu/vo/user/UserPaidRecordVo.java new file mode 100644 index 0000000..9cef917 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/user/UserPaidRecordVo.java @@ -0,0 +1,14 @@ +package com.atguigu.tingshu.vo.user; + +import lombok.Data; + +import java.util.List; + +@Data +public class UserPaidRecordVo { + + private String orderNo; + private Long userId; + private String itemType; + private List itemIdList; +} diff --git a/model/src/main/java/com/atguigu/tingshu/vo/user/UserSubscribeVo.java b/model/src/main/java/com/atguigu/tingshu/vo/user/UserSubscribeVo.java new file mode 100644 index 0000000..6f27a19 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/user/UserSubscribeVo.java @@ -0,0 +1,30 @@ +package com.atguigu.tingshu.vo.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +@Data +@Schema(description = "用户订阅") +public class UserSubscribeVo { + + @Schema(description = "专辑ID") + private Long albumId; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "标题") + private String albumTitle; + + @Schema(description = "专辑封面原图,尺寸不固定,最大尺寸为960*960(像素)") + private String coverUrl; + + @Schema(description = "专辑包含声音总数") + private Integer includeTrackCount; + + @Schema(description = "专辑是否完结:0-否;1-完结;") + private String isFinished; + +} \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/tingshu/vo/user/UserUpdateVo.java b/model/src/main/java/com/atguigu/tingshu/vo/user/UserUpdateVo.java new file mode 100644 index 0000000..f5ed115 --- /dev/null +++ b/model/src/main/java/com/atguigu/tingshu/vo/user/UserUpdateVo.java @@ -0,0 +1,15 @@ +package com.atguigu.tingshu.vo.user; + +import lombok.Data; + +@Data +public class UserUpdateVo { + + + //微信头像 + private String avatarUrl; + + //昵称 + private String nickname; + +} \ No newline at end of file diff --git a/model/target/classes/com/atguigu/tingshu/model/account/RechargeInfo.class b/model/target/classes/com/atguigu/tingshu/model/account/RechargeInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..54b956260e524657eba90739c52cd8b4c8f9d6b6 GIT binary patch literal 4502 zcma)9>vP;z6+hSBUCC=Xe#CLSX(%q;f}c?m^U69dBu+xz+D@<&2U@_n-c@%M?@F$u zbuiBanl?>`37sjS(}54|ho-}X@OFmcDTNPZhJT=c0I@?q@efeS@9Iik?OFwUywbV% z{LayN>+0|SdFyQ=8mAZ2)I`k+B{WJ>iqSycuISt=R?T8n_e`tkma2NiE*NEfk-LU| z9G8=pXL_rQQb$e8^d4o@+&?hiLMpW=l-8(~G)4zLS`W|X?W*PJvqrweouV;mJ#9l- z)is>S0;7(pi+qLaWo{MqDcdTJ3C+7SYNrlHitQ8(X9oDL2yD)CV5tx6(rC8;?s5X{ za~}7quF$bZqaNBDVI8XoI~esyRTb`)^y6mngpoHZyzHyXXtYnLOD*%&^L#Z8HTyOC z7(K{H&2#JIGgV$@w5LB}%<098M&276cv67-G{CgzAo31f(_?V2DS#Lg#=+gEYh_4V|aMaCFxx4FV$2BN`nL=uV)+h|8D=?m>+X z(cyY-7?$2pWn*B3;HNeEj8H2aI}^kvOP|x|^K=BUDRH+nfvWLqW3mgSHm1>08fUb( z!k3H*+sbqAyy*dCxgNJXm(g-GihfukVG2C@sGUX=x8tHQ50oL$NQueI^M>P^wsmgu z1S9r1qqfkhd0ws>Nmwub7^BQA3dXD$^QLPqmW^YUWuv?x3iF4jOj~y^@nX?%^p#QF z=C00b0KH-qOs>!6OGbr{F={OsZr(AMg){iMJ$U5cp^?p>{bKXwU)}rDD}7iV9@)72+uCweEH`f4++4fH zs6A}11>_Fh#YmI--hck3_h0{c6u^TX8<46tZ~k#({RSR*=nx*b@%Ej2e}1hG^x+Z7 z-?#&51Q zZmm6cZ!5!rc~r`@;g#&d8Se0k;h|p8e-PU0zq%0+)R&O!1gO64>i5EC%LGqtEM%cW zSSNc7<=HU$f@y;qu)UJupsqv^vf(h*{N38pXKu~VHp$&u@AlbYa^;j@)Gbks+x6hk zj|OnKEv=G66xAX%hRZfQDZez$mxDYe&&*CvpMTG4Q7%`0%|J*$Pxl@N#+1^o%i;o@I188o7R1 zh~sRyFG!jo!_deIi|)vzi5;1=aW;TlOj?%VOq99n8m>amGkRoOpyK>j=mka({%fvkJ1;2(HF65qGR~sNQ3nR*4Q}iVekGV97J)BOqBOVVC zPXK{q$#%q4h?oWfr<3i7nGkUr2%JT>BhG|~FT)B90(ih^7PjiRGu)GdcZvPRcV-S( z!6vwL7FXdG0CbM#acAPNf@{6-?@9SJm`zj@?v544sU$|Ytx>o)Rv3qr7~#%F;r+3~ zIK#vUcQ*?6#R}sb6C>Q)D4dNIK2KjkWJJJnxcl`pIP?cn;=|n|5ka^`Dr9ASRU`qk z+fVP4^i-V6wwR+%Jgz9b+YwgW554i<=E~q5@KTIB|6s~)z3QF;l^$$vah>e6oDq~0xK7BrfirTtKZ0wcoFUs$rg#lPmBZ|ztOia+Ntqv w5Pf~_3lfl^OMdx%v+<;`O5cKdoD{xI-vL6!;=B0$kgj5t2K5|Lcbzi-1s#dl*#H0l literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/account/UserAccount.class b/model/target/classes/com/atguigu/tingshu/model/account/UserAccount.class new file mode 100644 index 0000000000000000000000000000000000000000..b02e156ea45620c733af973da1b846355d4115d0 GIT binary patch literal 5039 zcmcIo+jARN8UL*vmK|TBG=#Lc!FM%nAXJVEiIWf)I}LH-LR(1J(pK77(z@D} zi@CL>l$3HQDPibz-~kvC9x?=GT6ZQe47`*X9(iJhCmxcL{~@LP&YoRqB`u73z@uG# z=X}5KJLkKeBmd=JH~#=&9zRN<3*9PWI^swun8@3etl<{xR7|Rtrjach)nazZt`_Hn;yxYyNGs@ZZPzFttq6GqBNAFM+*0G&}AE70;r^~AGvqpVaVYZuMDJ2&x!0N6pe0_eP!P!VcOUC~kL=kjmMd!f(Yc?FH6}QIvm}7Jp zN6RR$nl;C=tLGPwD^MP#V}pIK8s)kfr+wm2QII*y^tCGHs^wTB1*=sC&7~*}oL;i* ztn-{vESk0K=0jQAaI!`dkgb>n%gCF3(me&!$=9q6Ax)RQcjZ^NUwOx3PCc+B z3UJM^D^|f~1#hi!1!tpN539?b6D4rcGRp<(if@X2Do{l!UJy$9|M}Kc>bw2I@9tc> zeCOvsRiJz6f5Gr8P``8K#aq9AGvM}!YHKoYy>^2e3Yh6e%{357YQBAC`_{|9RIp2G zw!FG)L)^G^=_cJQ5gW!}Tan^H9 zbdQVZP4rCCX%_3Qjtrbw<=&P}w`3R27&W6}x=aLCBZXS3G2=_N7o(8xCAe9H+&{-{ zrN@E`G=>X~Wfn{~%8dDE3m>$14H0D9EtxgZN$HERpy}$~Y-5=An4Y_3o8ux9(K6TX z!9>ghR9d3KQ$rr85&Hl+ERh}aBh95-tsD()pp~<$DH8I)PzWEI?p<+>{Q9!7;pasB z%-O}|6Li=jTWZa8>SZ1*YQq!ySc}CyV`0F#je-#tj#hjGA&LD|EQc5L1p|xQ$b4asM=36L74}-SLA-WbA@BJ?K*DF*pP|r z^e6C23g5=7D!wDS@^=-CHPgweZrbZ+R_<0d>XSy^wQIZ;yb&%CA1IZcGOC5L>5MJe z_IiC|E|i|W*`b*h!E;+1W(54n5I#6$LsPzr1*2SEv0QUb!}k@GLw*|}6|eDWPA zzxB-hJl}#18vO*{!f*ocB%b28A}(Hhw+g=n^*3a8p(#8RDa;#Igm7=W@a{-qUbG^F z2ik@AMhf#T79l*;F1$Zdm^ZZu;n8;Cu}ERw;v$6ivt5>&x^CP@fO#&GZGJ*mc_99cnAGC%qy4(#Z3>cm_ol*)ZNiiG8Yz zJ?d|;IMS6$|jY>k6~hiR0`WT ziDyam;P*VoYov7iokxa4su%yjJ#b0&q0ap-VOZ7fqEChPK1Ng=;73#5$8Jd`|0fcD zay-M@jftPge(gR?b45Fdi>we{3O8TrCD{#v&MkU)iF;H6jU}%e@K>blPF<&{B1uJ8 z({o2+^IlTzP0y8>Qd)ZI8q}F>ia3ZEcQxpc2 zKSe*FvgWu;ObjC)00K;`b;^e&La-*Xebxu7t>7j;g5is39U@JsXr3>~|3XOvi4T7~ zdt>6CRMBjT)8EhI1({X6E6K~mK9Nu&dHBroImqV_pTjrlezYHk;j70!KbkST=%x8L j+V5d6;hS8H_pq1oEh01yF7f#uBL~J?VTr$vE6DsC6Olcf literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/account/UserAccountDetail.class b/model/target/classes/com/atguigu/tingshu/model/account/UserAccountDetail.class new file mode 100644 index 0000000000000000000000000000000000000000..7fea0948b5f645478f5a326b86f97629275dcbed GIT binary patch literal 4364 zcma)9ZF3t}6+YM2YS;2Qb{xmG(oh0b!LQvUZh^{4Ah8qbVml#DTxg-rwX{eZOS`Ui zQ2A)7COkF4xKV4b&|QwZoF0vIFi^ zps|j<=^~?^nX`PATNUn>tQpTOO$hbdOzNf{MjBpUu^IKoK=VNj#)hz7lXeJLM^NKM z`_#D=TL|wosh=LeD|l7Bol(D(uJWL49dSxicEPFgN~j@g(k`Jv_i9DEHs@s^zuTmb z&_j%j0(Xx-U+1uP=U~i$<4b4lLNGD(i~#R3>0|V9m{76<;ihn@cW@{M51qc0)SjU;BMeET8YOk3`8t2%8UE$G~3vUi$_^0Luio%hgTNtn(uh->FFs( z>?uZFkyQ)4Qnxi&Fa8*#>`By!Q?(Zy-&v~Ihh5hTcmPqDKRV-hmj41TmF$|eI&OK~ zw|E0!Rqdj~t@%RPuJQ>+okiO()SML|jey;Gu6g@QAxh1^8 zU#ZmN>a0^7??2|)l_GR$tHMqcrs$JJp~QUu=C5yG{_*W!Uc7hpGNVIsdFQP^um9q; zf8DyWZ~xwXW9t_#tiN+{O%dYwdd;9CA$_HESl3R zAmAKfhXZOe6_g!B@bS>|YdT{6;(NXepwh1>||w4$5Bf1h4U`9U$8<7DB3D zHZ`oO4IyO;NYp0sHBob9)oYsTPKae7rg{S9gkZ!6l9~s|nHQAp8tOp!o{I*Y8SZW@ zGa*yWwNA-Xt8J3iFt1y&8#_{UG}x5tjb$jWCK*azN;lT?0WU1i@)eaL?ZnCH*`x4h z8u_o;e!YTOsc#sX&MC7pxsCBE_|e;p+=gZ&@MMe;sd=wnE1-A(a4sHinPR zm)Mq4G07{Hc_*+Z4EipkV=X}(6akqo9%Q3?!rX;KR6JrKb0;X3yMt^9O)>4dc5Sl4 zec$$Vy1?j>miQ#OtB-?1ITQ(y;TDvvtf#T7VK9g3{StjSNoChoRmxISD&^vtWR=^us#4ajQYjbD z(pQqK?AxkJS?o$>f9UvEldT-ss!G`%N~K)jHY=@U@8H>mFuyl4{2S6z*GK+J#ud`q zuaCS##_Z_u8a)^;L40&>6kqw&*x#u$n|hbFUn6rYn_8oXBg9}{17t9t&T0aaewTW$ zQCC*WremPdybjQ4-pJ|#WGIlHHDVwu-vN-7&ty9UD5F3f*-Q*Hp6>)`Ja1+@1;|t& zP!T9~9j>* zXqH~3BB(S~XqjwKI@R#}8YqKa#|SKe>Y$%tR+d3!XbmI80o6&j=s`LQ%7i3giuUTp zziFFJ#s}1|Qx5+I`+x={+428LQi**IwUQFQfK>TC0e?hSX(FQ{4DmrF!ywx(nsQ>^ zoq=I2(s(AUKKzQ1V}QL66$TW&)-!P+bucW5-8~a!l!MVTa*gz{HTu*Uu|Jqk2}U-h zIEE+^$r{aTAq({p3K>}~Vp;ig$VzXpP&HC&JgSZMC5@r7jQoWd? literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/album/AlbumAttributeValue.class b/model/target/classes/com/atguigu/tingshu/model/album/AlbumAttributeValue.class new file mode 100644 index 0000000000000000000000000000000000000000..f642c2a1937101ef80f0ce1a8e2859b5ecc2cddc GIT binary patch literal 4383 zcma)9ZF3t}6@J#1v}E5?i*rO+$goNg;6(s$jcmoVt)g$(6K78%tVO zyK);|1AT#k=}bF(fZ+ol@h}r++5ti)Q#yqYWrjb{A3#F;BPiv$dsos*-j;a0yZ4^+ zoM-QOxo5Bb`QO{`062-CrZI$J9SIXjq%_Qx-G(LnYTK!{E#GNYy;|F9xD~r@m4s(o zr+GWu^d0}2hSUkC>G+Rp7@nQm7=eKi9cdF8m>Q0MGLNX2+70WJyr1&@mQ!l`_J*jp zZ4G*$D^@gQSFVa}Vbw*mYOT1<>XPIiGchj7GooWxtVsDD6BAOdZ%Y~_+iPM9`!tMp zv1_8iS4>2R*ZKC4dcTRBgpULi5}GFQeI^d#kOreHnrEMHi@JuX*$BatrK@(?Uz)ot z!Jjel01j(NS8YG=PWmx1I~TzRo}_UEGddnL@j1zz?K!IG7+71r%af$DCgvpRm?Z6a zEmiX-7CP?>;#aIl@k1soJWSrGh4OuG-(o`VrOhKIj!PSpHUX6iz!5xZ;tTj915guQ zZJA{dB)d4l+Ih@G0ZSUD8)DO5cAI74KjZiWH9cQ6eNRIz8mhqc!BBk4JX~D_5lW)* z3`KO-vs;d+Z`du*ahp#U&uGxjGx?p>1WqNnYWb&W$X#r+h#U5X<2j|eeX7}Xec{uT z%U)P zFTLLsEniryDW?+9TV)xZmT(v#Yt8l7+Vwg)^oH$uqRQy*z5CX0|9ySOsoc5s+J`Uw z_0Fx^AN>9{X**&Khx(U(>DpHR@~0K_?)A3^Niq=)a~;lJf9->vH#I!GB6n;_xDBV` za?4*UalzhJy&ZMlx+EB_bBL`-7g^ z&DMtW`XSjnHH@oG*R4RN?zHRra-(gjqNw+e-$nYuJd1%4}FyC$)tKA~}%LFb91a8TPJDP3Bmk#b(oPE!TzT*`AJ6FiP+c$~8#e3=)|5uBgmJj3T{UdtZNP{A_* z?^3as&$CpV^YGOU;t3R~8HF~9o^D7U5Oy1#?-+e;x6ygRd4dR+Am0=&VFjxcu3g5H zl=0B88*!nB7^jv8E8d^tsw_S=K9l*sKzoaWAzb8Ls)01td6zyDfJ=CqPYpa$@ZN9y zC+Kfd88zM$Ys{lVjPdB8@l>oa4;L}U*+Ju6tTB%uF~*aF#)o2!c@~K=o*pzl9BaIR zXBZh7umYb!apmX#3_U*F`xGJ!w@ig9yRXY6@Z*jwSMrT`%F%nJlm)9Hq#O?@FUM16 z@0C)PbC+@=pnMkJjB|YQUMW?vhpU_lD8Cg?Ieo8`YIlT`xqy;qUbRZ?T|P${=J)6G zze6%{WBzY2euL!jjrn(BtS;nl;y^Iv;QqA*-U^Aue;|`fyoWtIFc)))oA_)8akP*m znL-SWMla`DjcOy$0lr!bhP;V4o3#wz&TVo8o{sd71TIN<0iMU!%+rr<33#F z$fPCMKPPnKKN!iC59&Xov~Gd%Uk0U)u z*1wScn1X~3L(`Zb{)YLO6utS76igx60dz2leo+WZMPNPTpfm*Q{oo!xMiH7AyG(jk z@j4nZOn$fVpJ6cMhwy+*woELqJg-Gw$8O_Gz~I*)`uRK%CLn=!P=4Ek$A}m3A{7Q- UagEoHm=pQ^)$kL%%uMC}2m4p4y#N3J literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/album/AlbumInfo.class b/model/target/classes/com/atguigu/tingshu/model/album/AlbumInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..62311f0ad1939adc64ad617a39521361173c6877 GIT binary patch literal 15026 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 L9qdllP5N&D1FtDC literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/album/AlbumStat.class b/model/target/classes/com/atguigu/tingshu/model/album/AlbumStat.class new file mode 100644 index 0000000000000000000000000000000000000000..41e5276f837e19bf35bd0c15a686ce894cbc2297 GIT binary patch literal 3310 zcma)8ZEqA+6n<_yvol?`Pzo(9A|jO9b_;`|5q4VyN`b|;APYqSh1uP4cj)d+*_j3T z4TcZKm>5koevvPPK%!_MA^HUqe}@V`Ld56J%yy?`Luk5p?#pw|J?A+uGk^Yf{~>@$ zcu91jTZ58Bl`69MN6PRhAa3Dni(MbQ&@-fR49>i&APz47%=bnR>f-MlGHhv!Uk-l&XVa& zUul{(fq{`2_C)crRq}JA=OlPj3a?2VWKtN%PWo3h zz3LRh7X&Ha&zKu2?8ch{8|vnQHRU=b(?4tb1UY2Q@jZcjoQc4*n5WStv7MHgaXumx zN${+OZPwAou-ZitrC>mGy7_R9VW*cDCt+H(zg;Le3n>kWdw!BiqUX;>g;;&!7eDd%Mo1xo1 zBa^&nx^=tkGP|!Ad4soDYsS?Xr%m2}#I|Z>>Qb*tJEhXi`pWOc8@!bc1 zfA_gSkIcD?evqEg(LZ0^dHn5d3I#`w%ts}R#hMx0u^929)d;SU8SR!xlS#68ZM3QQ zRhxci0((0bWnfRcm}qL!i)HD$=R!F;&!Eg&e$_3XG#h5!@);VEMXAD4UM;JID3(%C z>XxV=SqI~~my&=e;V!SxsF=v2>sPG?sgr&UEmeJQu-#sV$C9+*p6Ix}4y5HWEP~ac zczdI_;G3m|S#vR>Q9XGoKRZpk@~psyb@JgPQMFovr%F; z)R+USgC4*;{9Urb8TzFS0psO!YmVg0cm+IMlqN7Thg{e9{D!$0hR9o!z^6%6P}N|| z!o4go)b1;`bJbn2jL^)mmXDYv-)*ove;p4`1PqlPGo5nH@`h$yccHnMie$XQ zLCH%8`1u&V)i`5Yk%}p^Rx8-PmD9m)n_1#)B=A39o)qI-B?vo)v;e7?goZT zag@hE4-RvbCJ}&X9N|;Qw-m?a!aqT~!^1ALh5I`S^Yzj}xOb)SU`JuT$~p+IT`9b& zqwrB2qkYosET1w0iLuPj&^kLk7$PF4B_UyK@|08A$bv8&$NQaB_P(sjFqo0ba500~ zPAb>FtjaL@k;-*}mHbQyRf@fQ_RxVFnXw0@Vi#2;cyy*OH=#@h zf!N%at1=9FU*;yXo%b+yN$zjUD)Jz$L?^loPIxq&Rf8kOB@oinYH+l=5zB)*m^p;9?NK gODp@Yi6Ygq|CUfDLg&KbZvl0#lAJkMWNxMZ2fm`gWB>pF literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/album/BaseAttribute.class b/model/target/classes/com/atguigu/tingshu/model/album/BaseAttribute.class new file mode 100644 index 0000000000000000000000000000000000000000..66ed27ffe8b252621fe096530ebe81588e9325c6 GIT binary patch literal 3764 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/album/BaseCategory2.class b/model/target/classes/com/atguigu/tingshu/model/album/BaseCategory2.class new file mode 100644 index 0000000000000000000000000000000000000000..7fd62910119b7390a78f4f9414fa5e944dd15755 GIT binary patch literal 3335 zcma)8U31h_7=BKhY|>?0N=u82h>ErLlOX5_yA**6y4n_`P`|~~-PjGyCS{XFx%0~L zLPoC~#~)yCxX>9z2OURmbjIHy!=Lc$Ir->j%j(eSCg+?y?{nVsydTN$f8YKIz#OjT z(Su$CS^+w80+Ut0Vaaf<<*c==(DBxSddq6~HQTjTWnf#Uc{$^SPIz4)cii!u@Pt6` z#N__@zj+-5uCOHs!-~0W+B8 z0qZiT&ohWos47E@yj8#XZ3f_}z45M}Jh~>+`l5K$1uxpOAmaBEUAG`0nk^J0E>` z_v;_-e0t;V=2rrT7F4pXO26UMd}jOgRqhpRxUDR)by3ojvySc7$f{pc9xJ}@KiJ~C z`{QSKKKV|du$85k9j0ktl!=!;m5N#%g`EqIXEQff?Pf%)65p>2dq$AvMn^&?@t9m;L>BF^?$^%CCQ~S6T$tH3>d5TjYz9P$tt@vC*3Q$> zEM_YQ2orv1H7CVH>HM&6H|c>o+}M^>s-Sm8k2=@-BUrnb2VzWnp)Uf&?IRyQj3@oe zp{%Yi%8f)#{rrW>;u(5YVf{7jpyh^)Rp)MfV{Kx6EaovoKNe0PzwEb~Rc3*!Vy}8( zD%jzJs>qqr9gAt~?kl%cF*9}ps?T0dbzy59Jnj2o5H{sT9J63&4z)aNylY@hm2q8Q ztleT9@0!1EC*3oy?6a~Ovds#7o{d%lj7eXRUd^?Gu?62>Z*7z_g`Ff#W~IaM;`I%? z3;c}?KJBBKrG#Q$y6&rk=l=hPGD~7L*u_o0B>@e4aTrG+@Dyh~c$z=H?Kppi^WB^s<@i{D z63QGL5BRi4y}9m1%%zAEMDT@mFJd@FJWCdq4RXAm!i+&2CO##da(8V_|f=4-EuasPJX(XPgPwRJJxwcU7cSK~7{ zOaGMHCEj~@&rMB#3#0p?M`J{CXeCG-o9Ah#vu{OVcmb7el>PTh83!|=j3+PRrEZkF z?w2x-enL4MdCAX)m{J_&y^jaDF+KGqbnWK!FEGD=-g|TUXPApKQ@1b@O*tqo&G1sv zW`DzuqV_9xZK5z+)NbLS6mg)W6LO%GE9wf9`xQf*=r8KUTn02=G6)(knMFf^%mic< z%@m~Fq(i;;B;A{_qg(plzycN-{1Lp5B_?7IzjGX%<61AKP{nzUG(683zs!-&-$`8H zH3yd!x6F}&CO^6^a%AEX_nbz-F#p7W0rM}68raW&Q~ZSo;$dHQNa85$3lvmS-+4)l zj?p8PNxD)}9VA--arMNBlva5==MW+-gV1xua@TLzHJ+NvCAGjf24U4v}qaL&?E4ycGrT?d|>d cGTtFA`>(_*5hf>9{v51xmgmTYhYb|}1tX}+aR2}S literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/album/BaseCategory3.class b/model/target/classes/com/atguigu/tingshu/model/album/BaseCategory3.class new file mode 100644 index 0000000000000000000000000000000000000000..e9bd0483a22b11c0ba1772ee49c7972ba52ddf56 GIT binary patch literal 3820 zcma)8ZFAhz6@IQQt+Z>|ah%v;(=_G9X}x}7Y0}cN#x%qvWT~BmIG7Y@jl3(oinY?R z(we%Z{m9Un7APMm(-}VS1uqlvx(01+MA%Xsh(sCX;@)`;T24D!xd~+PrS?x5#K=Wo`t$FRuQv!->HZ6gX zg=^-9S$0f!t-KVp`TkiMc*wv33=0g@Vvm#6y1;M>yx_&q5d(*CSU~sMb*p`$(-b(A z!c|?q(rSlM#|#{iP}TOYc&!58Q#5cC-=cHPbk9EDF&%-?iIn%n)oWHQm@Pde!QVD; z9N!TbTC;*=Ct+SA6Qz_-m{|dL;cgB07#NrFhr7FsLXu2NzR#C|ziZ%onBZ<1_~PC! zMth;q7^3Iq_lNJXeQ@+)H9ZO}V@}CeWUhc3uo7S@J+pCWCu-r9NjrQHwyy7Sr} zcDHT_+_xaheAV=tcHQGS*<9tj{Fc*62QFVRnaMfZa_Wq#Zpe&fyzSrb#oPVc8#}Ll zEMV-__lnH|&wcsI>pR=83gp9LUU6kL8(+Tp{?2Rf?Ed||f4_Z`7~5Y7ycSPTq}+i8 z+qGEst5!RFuRK#;jSQOPk$J?EO3<)LNjcm=_Ib}Zr_5jTlX~ho8L?ocWlFYa1r4u$ z$!xRi0t&|?LZ_Z1awuIj;R%tR1B7)8ek_ei>PEtJ!ooUdEqJ{>BR-&{*$Wz0o5{$1 zj_=Vb+s46gsdsKLgmqiSP=x7D6hc7QD41uo8jtefQq;c+(MmKJTnfzE`l8v2Iae=T zt}dQs(pAdVw)~D0P|n^&^5fli=EmbUsN+#UJ@6u)1qw@Er(I)JIkJ{yS5Ejnb+2qL zJR&`liPX1MtFm8E>LJ7sn`#tsjiqLK9ItG)tPJ?mDSXnu zQ&Vw>dDC&0?7*7U@q)kuJ={%5_UFX(oe34}@^Y9cCGAkDIZ>jZRoAuJ^N#8J7J2!V zz=>NZ$=a!g7X^<0e<>s=fw?P+DGwYJOF_TM}3&(A1`2z=Quvh(L=O<;^Q

YcU!dLKVjsHBBbm;;nKPUR_dAbeI`j6;a6Y)- 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 auJEt8D3?A@?77;6`Ww literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/album/BaseDic.class b/model/target/classes/com/atguigu/tingshu/model/album/BaseDic.class new file mode 100644 index 0000000000000000000000000000000000000000..9e49b41a85c1df7d6faee9a9457171a3c18ed4f4 GIT binary patch literal 3136 zcma)8O;a3I6g>~Rr<f`McbjENA#XGV=5$pF!WfDnO1NQfp;@|bCv4l~_2-9yaM zotu=dEX$QE*<=x`lvJfGOEQP7~^@}JVkl{NSAB(Eyz;U*6Ek}69SpJDvO|O zFF3xlRI<;xt{2FFrgUs@+VQgf9l5-0SF&rTvYzy_a$6x=whNBT&gYAESq=*{7i>RY zaaNVJz-!a0aF(Q3b_yOV@9q*|{nb)6iIKe`dFg~>mkI>X*OYSt*5A zu0J5Dte8cYIS^>t{Az=TPriQ0>!PArjH*tHSZ|$nTzj@!Ua~78v?@n0Pd+4B;Z?Cv z3yKZ{>~wH=8!)wo*Z{bcyO=LLRHk*g8aerpP!rm=`y2BhkP}F)8 zG9P#qj=b-ZO&2Rhpp()qlx)9e+VfVbtHXQyE+N@rc;)V@T}S;!Lccb-5~3JlOqNRX zPGAq4CPhHvSpL z10FW;?O8K!uWQVgK^^0k-Nv1Djrq!`W8Aje_)uNrb2v}`RLnVks|=+22Y!K3Kj_X# zBMw@{6y;`&b~+~}+UUuJ`j9Qp3mGLdhHMQX$LmA3JuhUG{TQ-6gydT~3S6A#cM}7+ zH_-nhbnX7YA27d%-gtlDcbGGS{Tp~O+;VYXc94&pHuNW&GumV9TZc82(Kc|nrg1c< zQ{`wbmC=<>>M`2a(UQ?Ksf1E@&Y)6v&deA}$&8hZj9F9C?$e>hMBPM1cQbNyi~oC= z!26`U17Bd0h1h@|IGCcW5&g*HB3Bwe6Zn8n9W&IK<|>5}J8p(60~H*`ELSEj@y-EQ zhWR&MFkn7Kr-3g1o8l=BM$4w;5;36@Bvezss3Jmfh90R((iM{`kYocyfkcH=>mJod zlXOAU5GTVF@fQz8tW9x}5Gev(Z5tlZM#DsOwG9`U2D5Eo9mdcGUcIH{M{}Aw$Y}A2 zsge^Nb?5Z(h0uHf$X8-^I literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/album/TrackInfo.class b/model/target/classes/com/atguigu/tingshu/model/album/TrackInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..6c7ee635bf0b6dd14e12124611406a1798e1c461 GIT binary patch literal 10655 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/base/BaseEntity.class b/model/target/classes/com/atguigu/tingshu/model/base/BaseEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..4667d15c895becdb5d00661020e1db5a89ea22e8 GIT binary patch literal 4563 zcmb7IYjYb{8GeqX)ymR3cAVIWob&>5i!EPN45qD|geFeXsMtw}9has+x|TNb#?r2< zU4^7v3#C8{O#7(}KY)A*GceF}rZ7z5Lz&?Z^asGtpp@sFv(m0*0cIwvefPZ2`NiVvSZ}-ab}4kdda%_lHT{~?C~ew- zQ##9^^IqtNcLj_cyJa^8hF4;0(k@BLgBC_{NMOLNaeW$~7P#Vjb%hwSFpeVvxoXR? zLucJ>I$fk%b6SYXf%&N&SybU4$Y#7q@0bm~rPDM#$1 z7Cwbf3uLRdcmCzJ-4Ga?N?^6ymZq;u@T7&u@HqEZcftxuN2jI}P_+RWfGG>pk~8B- z!a!QiSeV6}fF&*CRgLW;NUp17;R$?JV2B3G2|skFj6EUwKWE|d9r(4bGoG19jDQEX(R;jHMEv?R6TfZ#u#J;T5WEWhgA?Gu0+l@9S%Q$N zoYbExcu`~$BT>nmmiuz~zQg&R?9J@`uQbpleP~Z2Pj9gMtUBSAUsLr%@3gqEAsQqLvtt-%yfl=k zxE@*ma+iHoXrG{SU?RqDrgyNvl4x$UVQ^gbORIfXAn(R*UZDEi@+ z(-JUcNG4_9&Z-e59?*mFo`xe`Vnji9b#skL4h<_%+{o#44N4B>6ev1f@>(B#4XuSN z5B8175yq9PmDTgyRfUbXz4EIY2l=6VeM(HTN-Cb`w3Zuo5IBK} zHv}HrO+RVYlNL9kKlWx_#Q;@4=`VN4}!B#)o^2$NL)dcGAcAXs_`^Ut?aK`WPSUHGZV8 zF>gQIob+FE&$(XX6Mc+zY`(&|U%>T~)`wSJU`_e-g>GNK$;lwT)hN^N!5Dv$1$Qs;9-IYCNU4sv5MwFPeArGE6s z_DioTBBFn2550{|Caw&WET68AReGlq+4-M*EbB?2N_(C58CKX8jzkk4;DkD$wVr+P zvaTZ`KHz(Z1Ru>5e+46bf9B7~{}M*({>%r+ug(@9;1Tsn;l!m`{*=>me?`8K{tyT6 z!I~?iAK)_`M6qlTQY>c*hQwq(#OOT?6^ueA0h%wH1kIPT1yh2u5y&iL6QG6iAVCY| zTwzdxauH~-kV}9T%Xxwp%T^&TK~@B!)B&aMb8CA&`I_ExH(Nh~gPZi*82*Af8^-`9 z@jGmBEQKO|4VO}yjqxqqqGVtdZ(y5J1`WO&luWe9(WI2c+iap9r9r%dXW&!H;Q`yz z4y8Q)h+}w}l0^%!6OWqNf8v0N{KptKF~EOW@iC5SaqxeOonSi*wrqk?VDU8fBQwg7 z5tVL8w!36Pb=n=F+`M!{lsFUj#@IV}~1bfn43B+;t*vY}MW4`q}s7#-C@IipmWu8LWstrp9sQZZp7D^sbC z_Ydz?z04@QDf}1#LTu6INU_f5QZSFON6Abe=D5ZJUtl|zOgRO4?cPV9vJ%U## z$?yVyNA432q!}zB7$6Ao2`S?50XZ-RqXXz*(z}NuSSA6Bk-ei4*xU_{@qHALNp_D( zY}H>!L%Qjk_?C`1?*s-VU_u6)&pe+68DKt(@AH3O(0iun#M0epq8os3tMvO0zRP!( VjNjw)I>RE5Z-JlSP5cane*<--wS)iw literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/comment/Comment.class b/model/target/classes/com/atguigu/tingshu/model/comment/Comment.class new file mode 100644 index 0000000000000000000000000000000000000000..00819afe9fc8935ab18a4b41c0654506abbc9f76 GIT binary patch literal 8561 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 Q^e5c;A^jPv>EB5IAHFtN(*OVf literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/comment/CommentPraise.class b/model/target/classes/com/atguigu/tingshu/model/comment/CommentPraise.class new file mode 100644 index 0000000000000000000000000000000000000000..b7fee6d07f543a1c22cb9e721671839ae7011c12 GIT binary patch literal 4046 zcmb7GZF3vd6@IQPX;;!ZcAQrwX@DY9%P(wzzJMI31SbKtc1UewTIdUFX^}RTv|@La zG;KcsLm7sCDZ_^_?My#5{Sf*x1-DH*4DAOx(?7ruD536uD5cNcyOP%SHce-w-E;4G z&bjBF^W1ayZ~wme9)NlLAdeJAG^7n=kQEreWL>t*mepyPPp)6GYk@%al+$s7(*h%t z<+U7i8s8h*29w%xkjlA5;N3CsoczUWzwZwsWHy1>NZ zaG90BqurczyvM*8#sxI1wccx22^^0B7u^UpVPKzJJQpodtxMwr1`bN&Y|pnnHFelP z5k~~_HP5yJd(~+(fXHPpa9ZYB&d%j&e9XXSa9lvIS)Fq)^sJV^fyvm~Di?F*XC(M; z1NY#wblb3lGyO;>Cd)B=7^_Te$-sTman_bzeQEwV1C!D`NAst`Smo@LfoaSLWH>8# zzJHs)C`l4{zX4MM4FaRwR_jvnfPn|`kie)^#5O#LEWYIwzF^>s_!76=wEX4*OBNQm zIzd`IVxWRKfkSO;!(MPZH7j`92?*-=fz=6ofo428QE)rA9~<8mF$^o7!N^3QxZLXm ztlXO8JL@g`OsC@pR^Tueftf|eHT^4AqhWjI<%dky@=a?9Fxz(BvCNfP({5YbPoZx6 zHP7ivYk|o{*K3%5SJLl!&uZIOTyMjyTY(kxVOHxj)Nj51i;rJ?Nm5te`qe92zq~2M z!arXA!`8b$+j{Yba%9|k?Wec?c=O|HoBzD_jzC(abZpV-*cW>3b=zCD7{27bTeDhg zmgmTEG?@;X4)^oGA}RgN6YQmxbvYosLO$d_U(7E1BnqX(|43{fj?&#T$zosbhzs#TM`Up7Z(@1x(p zx%J)~if@W)0uTRp(ze+j-TFEkuV0EXu&VAbGPjQ z+YDE)cI^cCvoR0-CLEiJTr60v){4VkuA?Wguq~UDPJLd?+#L~3ii7gVfvR0NJ>bB+ zD3fy4PRI5ZT9)tIzJ~7#+_x(^Nqg4tJ%Qu5hmuGtLA*$G-V)&Do02yw1Ws`@#?d_G z(>^D^%!!n|7$aqY?@0M56}$>}E6z~C+it1s+ah`8>-NO}>Q;Z0dIq zzX?M)$EQ>SdvTsmxvq@-aXi7dkoOm#+l}9W_G>Cr7#bf=H0F((U_83h_-LXrFT@1n zy*rJMCmQoIPB7lT)A*i5W8Sz4#)ozqmlBPu_zE*46IS6{(jYrE{VufRbRSfRDBZFY ziZEZLU52+&SnfqECAl2EQ6`0rJ{D^QVlNR zYe^eFbf+%Wp@>`-!zlUTrd*2m`5tAOKb)TWIWp-R(|?Bk6J$niOur9(X=Z8@N5dh7 zyDrS|QAyAK6@_B@1MIyHW44&y#JzpQiAsi$6P0W+BQeEj@f+@U>HA-ose~hOoWmw|Z@pVdBw6KA1P~trU z8_!VE@di)Cvy^hUhDY&DN_lLu9e#^a0e`|#e4CPi?=ZGAn9%fpVUGs=6CBi#;!hW! z;II;N|64><*ku+rEkE@mt~|p1gzZ;WRHh-`s8kx%vFmp^+3!{vnCN?44XMH}Y1IbA zM|7dn(T~RGPNnBVLL3{PYmyH7`1EyXvzz$*b8`MfB`p=jbfnQGNtCKw$%HEMBQ(;B znZ9bak_}bafr_kARwpZ3s3Kt^D=kzVOD^xS3NtG22wuZ;u(*i~Ud1}46bteaYTWAx z?nM)IN@<*CS#3%g7W6?pPbrH4htQy;g~j?i@}F`dtw9%p1%eQt(#3F`k`o7z=>z(h z^!BL;mW{!N$epthSlbRB;u92+iN4EZXqBv^A=A_xTsdc%40#bAVNuJn;QY_Z0`q_J vCLRWM-UjjO^GH;HG@Ourmv(*tZ1DI1ZT@vG)8RkBWsdTcuHY)ZkK%s--=!w^ literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/dispatch/XxlJobConfig.class b/model/target/classes/com/atguigu/tingshu/model/dispatch/XxlJobConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..a92f1cd82c398c074a445816eb63a01442ad6028 GIT binary patch literal 5408 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 a78UR&7C7tlw8-BIR=FxrTEiE(hsu9`!Ul@~ literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/live/LiveRoom.class b/model/target/classes/com/atguigu/tingshu/model/live/LiveRoom.class new file mode 100644 index 0000000000000000000000000000000000000000..ecb2151ebff715d93b5dffc7ec3c444af37fa147 GIT binary patch literal 9187 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/live/SocketMsg$MsgTypeEnum.class b/model/target/classes/com/atguigu/tingshu/model/live/SocketMsg$MsgTypeEnum.class new file mode 100644 index 0000000000000000000000000000000000000000..d45f075879fcdf1f4e0b54b7ce46a2c3337e929e GIT binary patch literal 2178 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 B7R>+v literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/order/OrderDerate.class b/model/target/classes/com/atguigu/tingshu/model/order/OrderDerate.class new file mode 100644 index 0000000000000000000000000000000000000000..e208b23024e7e5c6b50c7a735ff43845b57dfbf0 GIT binary patch literal 3906 zcma)8?{6Ge6+O@1-5IaPwd2H2wuCmJ4tQ;EC;b&*UAIY`q;av65T|Zvq3(Ehx;ydi z%ywqhB~bVVfuevSgs2cjq9B4$gxUfD6{&(RMdI(kq5U5y<-B<_-myJJvAi?y-FNPN z_ug~gee=)%zWW}4Iefc_KJ;tI8OWm`P_B7x(+V41r_nV-$87}7uG#kLcFSC|0^2;v z$7wfo!m9#>#~s%RpAhJuEUyee$AE^Sfk7Ao)1Pd|^Xs;6o|n&4wr_>DfELLX>H;H+ zSF8=oY*}u@T=d+=th9TNfnkgY6sbb|rK=t4jHZywp-)#M?5Kgg*e75p?1{G5bwh!1 zg>GA6(>&=kPT4i5ZM7neaRd9Mb{>WmeolfvZQwrKPxl&j7=Ar){q|fwR`KPq?lZ zS|L^G?98I$nZYYoqrs}&c*OLqz_fY*vu)QM%UrHCnVeaH!MYvPe5WI|nVt`R|K{fP zpExA^=%Ot7HOp%|b&qG}>Kbvz8YD=9fvSy{Mn=jYcqU;8D6kzev` ztcKCyFqDB0uig0Y%{Q1Bbr@Ey_%swYe|_!FAAT#4Q`8PGI<9@L+g`K%$U%9!yc!d1 zG0k*17UsgH!;Dp;NVA(n6iNDUGt6R;Iv0C))kb-Rgf7`()2m;we5-ATq?JBXD_!{8 z&R<*!QgwI>m(+VH-ePCDOSJSQE_2q5x4n(Tr<%lgVbk{6L}b7dTg_=G68GlA(Xz^| zI-Mg5krwSqff5f#)38LSHjA4O<5!s8d^xmg>q}NACL@30;= zQn{)e;|?c1FAPH8>L~hy;R0SR!bhMXlwGDPFwyIhj=SNl+op0>HJ&q8E%bceMX#sJ zDh4W}XDzqhvV)05&s*Qnwm;vpg1}~Wz9DdAS7Nf_)$ppoeg7ZI`ccW@ z{iO4A0Q?lV7hk{^AyDP453~I7TIYO@^L?B>!SRy;j^hLeCj-n=#yfg9;#7h-O$2Y| z-H0;@;wd6{6YoZxO%VGr#8rN%@VP)wOumKmck0g&Z%3{^&8J)j9sUxZ(rFpcB9{1O zE^t4e+m-(a?JX|$p{KkrQ<*n%hVsx(Bk3Oi%p=`P{APzeE2S^8L4_{|0?& zX6iN$L{kn9o}1yLnydT+gQeX2*mDy`rIfpkLkZ$YHBZQqYN3>un8N!Qy@{bxzEnto z%2kb^a#b&B5~RlLb%P zp;d0<=!;T*q?(fprChwCOM=x>xtfob$Ze#gm-5L{rCNxV3R_ELoLUF7Njj^1iAm~5 z8*8Z1(>!UYbJWMQzCA5D%5QSyHW{bLGp8gwC;aDFR) zOvT>3PYTA6PXGxfw_Oy&3Mp6*xl@K4XC@jM3TZfyWt>Z0qBa4w-uX%KTN{ x#iPJmnY62mU_8!T4p$=7`pz4z#gs-jnhTEzos$lK8~8eBMUJlGoA?$={{s>LNl*X) literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/order/OrderDetail.class b/model/target/classes/com/atguigu/tingshu/model/order/OrderDetail.class new file mode 100644 index 0000000000000000000000000000000000000000..5bbf55597bac410dd4df7a328d9d0f9f4567d1e9 GIT binary patch literal 4351 zcma)9YjYb{8GhE5v@3ZXtFG-tX()lZU|V*#xZEnog~U#%ik*ZwaiImAwX{eZOS`Ui z9egQs^FQHS0l1?wvDSRk1{DJ-eQd0f{r99{CS!-=?z#eP$p7%WO zyYKxR{rx|0z5`$$&lk{#ejOPTS>!ZK*8H|*hmEe==vtxcHG*c>YWsDkWv$zRW1ZmR zq!+s3WevGwuIGmLY3QGrT+PEkUPr;i089<#o9ppAb*E#U5zj>@wB42lUGl1R4aKEP z_Lgn6Y_DN0`CemA=sjR!NGQ#@q0_F`1?v_Q!?;z0Ay}vFwxeMxHUX6nZQfO3K++oIzD6KvqE>V=Xa!z z?mFUKflxYWVoE5@Q)yKOL2#!{%-}8!1Bx5PVPwaZf3^aJj*vVMzj!j~%?7tajw{giZD^bQaa5}EtT6H>s>w6cfiyE{CGz`Wzt=g@w zlcnwAPt#C3*JX*fomDq**IUkU&+|h&q$rJ_UUGdac+_q*Sj1cRSiT)tb`M~+ow{pV zE48N6w&$3dx)ano?xv7txITR4cOSg)OP3XK_mb$4b=z;db)PMEd7Wdqp)=MA0_Qt<{`^JrzUl9yh<#KB{x%I(|FWk8Dsw((3 zPxi~`4#3Or+<5lsZil5UTWU>`J9J!s>-B&B=53abXqvUnsB1D&@`sjO&pF*~uR9%S zvgk&?#*o_#JY7)COxSc8!x`y&`jnBrC8q-&F9eBJx^++WOs+D;%TCzz>u2o_eG8dr z`bw#&SC|GxM;)@Gc~zANCE`7*G1v}jq1vIOUc0B@D5v>5r;nNk%$OfGoep&gzsI+S z+@NIl)&p`|gjLK6Gun-pgWH>t@dtX_5hGGA;B07Cb#Gs;4{XaTPlkE`#Ti@)?b^n& zy{XcaJ$tUYe3E`uIfOb+&~1e*i=Msucx+r=Qjr~oq~$vcl2qD_(2ruw0I&GnPK^cK zVi_0Zbc~LGyTtTkni4Dx*8W>WSinLtWr)}6>R2hB@cl3dJN9N&9l=lzKPlib{8Y!| zVod!^!+3A*y55$*;aHKe(d0U1*FwL;v+kv2)hS@4^nTl`x13;n$@e$9n{ziCRPsdI zA$b1srjr7HIH4gvSQ0FyV!>{;R+xo315apJOvG(M#-LiC*QSp~X^JTkq?l%!Vp67Q zUYlh2s-EX`7Fu=?IDw9*HQc!;I%!Vpcvi#h{~O9miXz0*(cql}$l);V!&ji;t6cTr zI6u5QaJ|6w2v>`wPX;)JuaUSvK$SdR1ok2xh!I~Wg7<>Gh@}{@Oa$)(dl9EF%Z zJJ^dj8za6!E7;uhK*KrOYVlj+cXsM^Xn&N>tneweL6^?+DU2on7qH52Ou5do|4Th`B1`OnbP!#x%uRJcVdqRRS~NCM{!inQdRbd`hqRT-6{QaL15K8$at zSy|k#%BXgg%3-PUJLxJ%_Ny`~cBOJms{Ah2(yTnVUzJgJD3v9tl6TlhrS>kr2N~w~ z%TvEcHgmQ77Z|@rw*PART^P&LQ`c~tT$1?Y>1jSHnVG*~ppDuq&BfC>tfFBKA? z*~$PxvlX*6AV8)9k%~c?t8}eD(VB5an}DE^9dwtOEi`+q`>ynbHf z|A0EF49Cffa7bmbjOXw@QaQA+fd(lZ9qu(r8TbW9pi3%`UvXAmB2~aOj*tyf19%&^ zQOf3sY16jj7}kw{bmD}E8)kIRW6N%b)ykK+;g+K)S!v<|5Z54U9mq_XsX79pt|p9j$;rORaf z1BH*t$mlRMjS1q9kB_OMx9$^+QDkF4jLGa|DOfH6>mhe@6ZYx~q#WH7`*cvvJ`B$l5tKNdf;Z*sI__i2zkJ`bw|Wbmjgzwht9DO|=6sGc{4 ZAL2(u7+n0ApP%DNt_q}{V(Okl>A(Gzm2?0A literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/order/OrderInfo.class b/model/target/classes/com/atguigu/tingshu/model/order/OrderInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..1b1df3393748c2015f4eeb8f97cc734af42529c7 GIT binary patch literal 9537 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/payment/PaymentInfo.class b/model/target/classes/com/atguigu/tingshu/model/payment/PaymentInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..315fa425bf9e487c1a372ea394fc0bd79d133a17 GIT binary patch literal 7222 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/search/AlbumInfoIndex.class b/model/target/classes/com/atguigu/tingshu/model/search/AlbumInfoIndex.class new file mode 100644 index 0000000000000000000000000000000000000000..b1fefcce26ebd0a9b49e3284f29c0f89872066c8 GIT binary patch literal 12350 zcmdT~dwd+%RX%sMFRf-*t6jZDmSxFaIg)I78>eZLk?q8hqgsxnIFaMf7;s0cv9!@@ zSKgg<XK0kiLEH zUMpiW3hv3~v-UnlO+&*+BNV3Q5Jfa)`C@J6gp+*%GT{C7H`4ff7 z{JgcwsAVN*o}RT$d#1e1D7j7*?HYA({dlQ7SIQK#bC#m;`nxph=FZ4mxuV32doa^g(AQS zSBqW9?HXM}LyUacdDP*;OcnAALTf~$9kdgzHhGU6$=bYXx7w^-L$xYKDV(y3cNKHI@U0r%z&oTZo6qFR^VX4~ znOPbK(dJ%5qcKrOwlsktDJ@#_ym+rh`*?9^#XNoF^omfwS)=`Q3!0uOTBdCs$u6Vm z>LJT^HkUqtQqk}O8r{mfp(TTog+lT4wUa{iZ5kb{Dc>#24{3B;P5E`Qd|IO!x}8y% zX`@%>%C>cs2d0RjscZ?6?XI4ej78A+J2bkJW_dT5`CCtx%^ZKZu9qQ)#n|vY9DJ8X zN9k@xfd$K+#9K=YxuZb5H$K4LuF*YQGiY(a5@&v=M&Cu>&8VF->-&~h=@wFBOSJDD z8kxMx7>MIe4{^lA`Q{?H%1hV^kHTo%f0s~;#T(ZUsd5ovKvo=8al5OVg5@UC`16xF^ zE6`PczTuKe@HQ^w^p1;D-@Gf`dsMsOA{C3WHKKK*|J_4W^;U>}24h;xdD%jG)+%Pr zT=srb%n|XDxIJnWOW8vHuE_(8*dYW-<%Nj!6u^t)Ka7!nC(0j@iRI-Jvu+%fAFBO zylj-v*C7=*Xn+g^&}Xv?dDAZQ+5BK#SnQd)@`7gVARpU@Rt0CQl5L?o{Bk6>PG$2J z7CCcP@raC}#8e?;=8l?(D};n9^xKPBwDZ~qDy~^cp~gd%oLi0RH_-e*NzQ`FHECt| zC{pgUWiJ-y51Tw((cfrs6a;rdubF7oh~m^L4sW7ZfE4Gsvp2#CMU|Y55y)Gzc2@0l zH>{EkDit`H9r+x5mCt4E?krw;JSR2?|z}zbfTr)1>4;uCJtgPRe zT`{Nfnrh}$`S{LETGNjzdGR*(fVu7jQ}b9dzk$+O8*muSD(G%gefh=%hqsL3t-2So zYL$hRRl!~qy9yrTDZVleixOdW%EGlTx=Uf!dg6lOT3Vt%CAg-n7A9U_9ZZzf!o*9h zgNZT;tJ$?ESWQ`nXj}bu1@AyMaIK?N5S%RxMuvpCi<0t*>jI`-J#<}hRDhkWN=(9> z0$HVd|DmdM7r8){5i4~BNEIbSReaK^ZbL8v6t1>ZwyLr(!N8Fyr$AQd>_Vy?;V#ld zg=$ZNVI@VX_fn%~d!njwt>AiPqu1tdK42JamW*|G98qj2GfUIviW)?L!*@P_RpO(Oi)eW2rUB zwno@CmI|>!EZy05Mk(j?B%41~ShCWxALMF&!pzv%A2WKddtOsODSFV%&*!XCYN}9J zDzA*W*3)Wwb(Pc*#k$SqRPbZ2qRLL#Riq@w&0KCai~W3<4KdbV`<8~X^LyFOekYi! zcOsa?oqPE6f=V!Pd(E&Ah1G2tzf%z=nAO26?wkqQeT&iKzQyR_x31B{Z|g@7FLOqZ z;MXKmUQ!u7++HWT_p)J(>&blHDvo10Ub0Fdwu8~&nm6zDLPKnnQQzgE$Sm^h(*X9G zK4SFKl%yVdlHLdVXAz7(`Z-)Ud&2$C<35Pb_lt6zHmR}%K0g4|FIeG@d{9Ew( z0cw&>`xW}|F=7^dgg#0igH@tmMPqOvrNA}M@gcZyCbgam$5QLLaPsNp`Zxq}Xt|yX zN0#fkaBR7r3&)RMt_!FO2W0qrQM~JC#JjI~zDqO=CJu)2_gR1*LN76Vj*dJ-Y^3QD zg)UH3eJ0gsr~1@KVwb4*0u6jrs6U6lyGg^}R`TO0Fo^Ew2YoS`pmv(1PC7)rG);YI zQ;P1O?Kp+oiO*jHLz9)#C+OF4$M}((YET-Vyg`AHkJI2sVEBkv#M?_a;C0A>Dj6q9 z9^~PAa<3;Dr%E2=(R%V0PcjakJjidVCvWv6<6z2zd|f?xyC)eZjUME;)RRX%$vFD* zAm3O|-sMTg>6iz3Pd$0JCmCmG9^{+q$=7?5aY*Vx9DB#zCtG zd9t3o&y$R!SPycvo_vcZ8HcqVqKAu8Gc3hxACwIw|(kfIsB|@bX zo^Isa`5Ev63^#E|{s#S~m*jAxl5*-*k~@UtZ+T0OHYzD+YbBW$lAraKd{d*6a)MWq zyM^TQ-jdffDk&ERO7eOk`2zj6S6{xRQAxR$P?9$Y$=~sA<&BL>%H@ZW921hC^OoGx zsH9x6D9L?7@^|U?ydM0fMkVDUM@jA%lE3dA>f?<{%B7H!yj4j4fw$yDqmpt7r6dmu z$v^a#oNQE5F1?iGZ9?+%-a!;?R8lV4lw_Nb{3CD4WTTRDsi!16gybK4OLjIYDVK;! zvRg=g!CO*qR8lT2mE3AvlD*||L6uN)%_RgJ1U4{MgWjwMoM<8+$!G;=$%yN%928feRz2pd>egT^L+9yEIOO&rv#K%4Yl7wC+!8K5&ppT3!c`V?rh z-sb{6Y-|DOVWVH)!a@BCv_H{3KRe=WdtuD|b#x{T+F;e zqpzT>iAH?yqOZd8)7yL}=`UafXxg_#FT)B_&NoG0gB7BpZ-V|3R+t|3T|<8btC=46 z4bazNMd+f>N8feT{vQ{svYI+qFydx3F4SkbR6^ffZ+i z>^<~%u-b6&@lN`CSP6VFnx}t&m1Kw6BK;$*c6>)LN#BCi!OCo${s~qmdyJ*%pJ8>e zCs-f-3#@MTEWJ+u3QK37qW`9UgVn>niXQlPSew|_=|%bvSiQa`xEJU%_s53-9{D#?U)Gf{C|9563seTDb)zAN3MkZ6b z5h2DicYtS69+~d#xI1xIw&Q>z9(iP{H2q~U7vMh{P=vW4%$GkM*z>; zjF504Nh?;U;#xGq!WFK%kh&#n$!HcXWNpQ2uDJ3>M7SbV7jn5|oitj63u#=jS}HEv z(1c5?y0nUG)rblg^15P0E3OBOm~h3aE@XRI*Mml@a3RqvR%^v|#)u17yy`;wm#l}4 zHsM0%SFE;*>#UIwu0+*^`9QKBF_OZCsX(!k71ueVUAWq-E=&+$^?D{W3|SEcDxo#8 zZ!#a_XHfz64d#dCqX>JM1rSP2w2i&Mg0TFwkDX^BSOI!Fdz6J?1<7WoSTn2;onyyX z1Xh@yW;e4ISk3fVBqJm)B(#@VghgSsVCa8~#b9ZylU`)4u%hf*dX~ju#n=?RkF~*S zWefBWOTdb=GqlK(u-e#@G|k#!C6M-Zvkq8E_5~!XPFU?cIRsvz)a%qmek2Em#^QXI zy^e=)?tQ$Vg8~&m1>>(RQm~*4<{;}!6*yE2cJLk!MG3E=I4p0UBI3VB2I)112%OR9V%laaY&J{pPO1rF-qjqJS5{zC+(9vuNs$}`3BjO75%lxXh z&?s7oRAN|RS#sZ;L; z$*Su14OQ*bzHz>4K*vTK;I!clNuU`RWL?$s@Ky1J4bco=)Zkjh^#HC1ah<_+4A;ZB z&fPl_VlxEj$*p_!lxZp4_daV h#Cq9g7=8D!Evz4iFm48LUBiZP7lAdxcCuZh{~wJ_{X75w literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/search/AttributeValueIndex.class b/model/target/classes/com/atguigu/tingshu/model/search/AttributeValueIndex.class new file mode 100644 index 0000000000000000000000000000000000000000..d6d84682b065d39e02948c81d4c9e143cca06f80 GIT binary patch literal 2610 zcmbVO&vO(-6#jZM`y-o8vIGLGK?Mn#pA1TfuuD(~L>4!I1Vfcx?CiF?Lw0B4%xsVw z|AOVk^5D^2I7pSEMOlkneKl5-uK@7-s_(I^`8e1 z0nFh>776sEVdRiRN+5qzu1m8i?Yeno<)*6o0;$uMZTV*edd9|=dyzqJ8rdBBkQ11x zIxSQB^|n=So4#e&y++$?IW^TZJtf_0!#wNzuC>zk)v|21RoSkoPX+qqrnFq6&&syb zieuMH+Q~o;gW5xSJ+P}~DchC95Oxb>s?xsjNn17rhR0&YVZ^2J547@d4tudrV4$x2 ztsu0!p|SCpP2f`ft*`6u3fCJ|{gNaACMDj?8K;c^3_N|s$wmfU4 zsm|KA<4fNnu0XNkxOLN8)2bi4vZZc0?y6anzBE-+dcIYSY9Y6+%mqs|YXmm@+iOhV z%yVO0r@h9}xo`;i7_3;fy4-H9DEGQ#ykx!NRAqBnx|Uu?Lc?!ZOklS1JZ(g$1Ky6> z?tX^d@ntsHqVgL~?W)w|_{ycrEG?sw3J6EXx7~zM9|m^@SR~O}4lzsB*wesQxx-YZqT;;W!JZ-s7$js=LdB%6bb`aRp(ZX9z zl3jAzZdEN6!7~XsMbd&82EXwIo^Y zt0}MQT5G!91O|Wq;qyNqe)jm@SAX2uczowavUARHe9w2~TFA3En8Kwj-bE#iMSUPH z3yf~FYuW40sxrfRIvAB}PK>jbW!qNnJkOw~yfl^s zjyyv{x9rk*U*M(xR%OeCRNxSAss!(z1pjy`L*P}e`Z>PFXG~!n6Wro$+I_2+V&46H zPtwlhC^#l3zK6IMz)tb4w?RkKd}|yk;3$>BIj>p1JB`0Z`WtR0ux;Gm)tDD-7vuh& z#`&(s$M8B`XwOBCnuOHE3p(Z;i=`uaPwFPX3I{mq_;9o%{)z#i@z=$OlVK_FSIgt7uIBg1&XIcj3p&zxvxJd`72E7I-E*__yM;I#(93TzMY;)oBSey8 zF<&}u%mpMK$d?+VFq5C$KzjNYUBMia}e1KkOm2~i`$dPvP_{&do( z<^<`Pqt`5s;VrIuaG3r4HfKga&LtR6DKJQm5F`XbJf+h1I-v!_NNy@@>KL6Os?pzB zoQpC&siBzZfKE~;^Z>5_I}c6#xDG_o8<-EMJ|El?eMGsyXTf8AFLEQpMVZePyvJ3R Lvun7HWfcAeSfDRd literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/search/SuggestIndex.class b/model/target/classes/com/atguigu/tingshu/model/search/SuggestIndex.class new file mode 100644 index 0000000000000000000000000000000000000000..c3704a8abb82e4f0c318d26b2823db360ff9a847 GIT binary patch literal 4604 zcmc&%U2_{(8GcsMYS;4GR#ZEQk`P+zfc({k@=+?sA&HZ;O6}CdjteOt*+?hS#?r2` zyGr8nQ98pgOnU=YF#Q3|O_(VIgqaS*6fVjPf1p1Aegqek@|@k3v~o6SNH3VNci(;A z=Y7w4KhM$M|MT9T0j%JS0y4;I$Qe+PS5Ule-L%ZM9=}j$8CtV=?lxNx6I96vnl+b<}}1@1sS`c zptLqzWHa!nwJgm}8kmwc)xZwgLUQ&QDB%eO+K$-0<$6>-x#oIJ)9*^9Yo65+Wbc>_ zE3iz_w*0`Z$II4TPndqRwz=wdx@{5It`jaaV_?5DI}w}Ru$^7okqaI)P?nOZSh6W@ z^n_Cv1C^P6T0PC?cLXeM^a|EVabj? z^ElRr4cp)AWYpKE21`tKtlKrG+Y8o&(+pZ!7Th$q5|!Z8n(c@Sz0OtPZCMPjoH=gY zYHwSfEx%)CE@;_|x4HH|O)+|``cYet41lmq2mjSWkVs6cpJM5jvF&Fo>4 zgC1UeNVZ2)_@I#%E;uw9wJtp#vic3HKygRMZ#=Z+Gv{xU*QJT5s>BjMn?loa=O_QVLN&z(*}hdZ7b0T1~Tn}Jo|S+}}zF4c{Twe_>~ zu*PBP3BT87NoK?C=V#;1>a&B5P4>zD^2I)5xP%_KQBIk%O}FRO#W`En(!S)G_KZBs z6s$Z>nV)g%y^e4KR@9g+56BBF7e+Wfw`}Jc)Ad|fo!5A{3Ga5NZC=4sar{J^uiQH}ajc?1RYa8tuAIk9<4 z&koOL+qvoP2s4U9G{nzY^}zLZ75q9mzGGly^hI`mTllkUuDjFgE~m`&`&Nh)!-;Y~ z{M7`jf6gXY@!G3ayS-@#Vp+#)3eG39RIwW?%Hoq@9Y`Xsg9I7XL4wh*gB4{?fl+fD z;jQwD;R|2Gj}#nxfCruTh-v6wliX)1>mr>lHZP`IYB;neU9e9>u&8 z-^a;W5jcTw;G~aJ{NiOPme25g8rev&Dy3&?I7lGu`C$qneD$ zJvO;NGnr z4~N1}5=SpA@=?t#{SD*g+y~fq2gXu4cMqTIBaT&7LXK7QWmRJGAE0yx6J@oWPk<^_ zji5?ZFKZH{#~`h&CqRqUF@hGWh4PpL6=Kj>xsU*v)p3H%s!<-7AR`8m>VtB3=~_0? zp;3GPG;(=RZy#b4TP(2|{1unj@)`cb`5m^&%koFeZ}1AK9IgBU-y)@A9dF{>r1EHE z2bW1{@F4IiDILFL-G7JF7=DG5_%5je?r{cukJLE+gv0ngDFauyw^Jx-`oA%$LH`K* zHDvgwD<9!tM2>wj$<2gKvdP5eh8Te^p5uSou}YEBBuxmcphB8fzm zsv3$|AEA<7R{NsGYCaU@2O?HYq-9pMP{e|XwX{%lBt5+sqix21W$|-ZxJoBf{0wzc z87AZnH0Wy3W!zx*fJsx}^M4mV P;8%gv5AkFC1m*t%?K$;B literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/system/SysDept.class b/model/target/classes/com/atguigu/tingshu/model/system/SysDept.class new file mode 100644 index 0000000000000000000000000000000000000000..6d3451c1042ff6f3aef60cc448b724590c788919 GIT binary patch literal 6091 zcmb_gYj6|S75>(iw357j0uJJl8ZgukKtNhrWK0MKCr)kRVnQ0yl&tNowIFL9?TUoH z0wiq{@+6^6nkFO-ZA?>Ak`yR)nNIqn=}doiI@9UnPiJ`LSAKVZ#O>5$ ztZF$FZ4k(CiH1npjNkMg6`>q7yNT^6^sDY-S?fQD`1GZy~r-u&MTa5`v zK_st_8w#5G_v-ugbWYEYrH7mXm+lfe>onA(K|y>%FBo~JZ&X1;0NHPOxF!vA#KLi> zU>JkClNG}AG&JKT1qs_KIJ@**k?YI}NcZI(W6UVH3#BwH5DH>BLmxE?LVS^i#ex-` z$XaMJSBfj_wp~!CI1aa*w4A79BH}?l*0xD@oi64WCAv!0GvI z4;J;Df_ZI$z1%gt*BEiS+II_ZhlWn9R8TW!ID@5wH?_3~1l*%1u^MR=Yc#AC${Wfy zl=`?;Lo8+st+#0S3_hzsqt>CaMdnRY>)S*Kd``pXg+M|GxF;6ejD{|3RG^Z(-Syqv zX&OB53Fsybw+g5@$4<{Nf`6NaErKr;_q+BM+^rh632vO+L1A*iyj{Z`=#wgXN+vFu zB535*_=1Lh3{XQ>x3fJATQ@lSni%VMX&A&872Gtg?=yO={D|({V>$%o>C3!hD|jR5 z4(||^_703^B7D=`5cEl6@sb0IA`3J&s%gPMS0+r{ic<+AJWH|1L^&@q%GY}>t#TC+!!_W^w3Dw z7}vY#flOnw0uXCU`>T`W~0Q{QA)=zkcEJ@yEy)xxHtC$<467 z{LJ&0rk+)h6uG^}Q!pq_GGS;<;2huK{f3kECp3iug z$zSa{0udRF_5Ehv*j^kTHVUpSMBTGS=ue$qrENTB#L1d;P{-`oSFp)X!vA&qs_p0V zw8G?tUi&Tv-+tS z74GJT9V^H8a6FfzFOk02#%|n4;>$K?t3(Sr6LG(f_zDqhK4&8K_=pFHU?(~gq5Fto zBG`Y;g(QgcC{hG^DBj0LxtJ=h6pdL6mAO@W}_Y=d~>Dn z%1~i;*z`%ItCmy>uL%*Bfi%IjA4I`ZlHs>Vwpd5!S*YRB(ku~Pw1`NOX=sZW;??eE zoP%PR%G%kglzHo^l!N`@yKJ1TN}1@M$~o>XAHu_7yPP{)m9jE;Dw|!E2f}wbf3_-R zDe+V;a8-UST;;;qs+6_IQ@Pkx`StLF-#lBDvRHX4TU?djz&BCtMq)p0S_+~iLS=QJ zYRHl^Gl)cWQ}8XKWjTtm-i?vtEwYS@$cTM}O#Wt;j;nf#-*Z^BdOJJbL^N`$^S6k< zjA-?#&i4@?SlMw7%iSS~_U$YA$V68C9yO`R2WXsxwkj1lhgCjeT_#G%x=bt;6`0ru zXqrTADw>J~Ksyb znmkZrs>ugMPK7$_eQ9Aop8@dT*^Uc_k}A(g~AJclPq)!+g-Pm$8_HwM?! zq-yaG7d7SBDQ1Hw zmGGx}Gf8(US(;*wP-;dT~JaFE3hNvRB>0lY#gj<>K5uaZjOckIWGlS+!`T!pjna=WHu>h=$tmJxNbvn3=51H^p;xk0bQsHx+Am0Sb0}>zn zch4IUFN(vbJ@Mpq=F6+!2;nKIxxSLJo=*T#6=UMHQeQSm--;%81yf>!NEd$G^x*eq zetP&>&rk0ZwgZ*zQ?N~5;YD5que*u-qsmVF4V>Uo{QdD`{DcUx?wkCa!p}KMk~)od I@e8E>15*R{H2?qr literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/system/SysLoginLog.class b/model/target/classes/com/atguigu/tingshu/model/system/SysLoginLog.class new file mode 100644 index 0000000000000000000000000000000000000000..62e6a38a05dc84e94f937909f7b24b0c87d419e4 GIT binary patch literal 4277 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 X5ksMd=O5{xQA$91jsBJXjm-ZA%)h*w literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/system/SysPost.class b/model/target/classes/com/atguigu/tingshu/model/system/SysPost.class new file mode 100644 index 0000000000000000000000000000000000000000..f8ad0616d349cee433293a1dab1501c5a3fd3063 GIT binary patch literal 3702 zcma)8ZEqaa89mpY*_mCBW5l@1PFoDsue*fNDx6lRzUO%Nc@gERzL9vO6j>Xv))-}LAJaz_dfSL z=RR-ux%1us*1rO941dm`2fZ2;11eGiV`Z;qTETMDS#Fwv<1YJ^rdjir?5eqF`L=nS zkCSfT1Zx7RqmJtY4+`|=#}?Aik=Bqg&<8^x|IThVu#RV~gkQa!?w3Qi2Z}xEY58(#v)* z9}^Gf#}e>1^(b!9@Jj=?O7_9FHxVH%v*m8Sq`l3+?YM(ZkXA+_3c=nE;y4HrK4xHC z!ZpIrFb+~SVc@Wo?V{{NI}{m=!ZdIMchSR&O4{L9trFJAcm+RJxc z|L7kZUwkooWaGlSn{RyZ{k2zE)lqf^rXANl)2uDpjc_}88oV-tWHD6SJ{BrL#i7^Z zq21jNYUcr?#eIIV!a52)PRZB;lQLrm6>n+QYOuNjriQgfMOkaCFpd%xM(-(T9fpx) zxojn#l)~#g)A6xl485RYH)xskCdaZ1Ppc71x2FB!V!J!+ik91gbO?}5K_C+?Mw7vC zA<-NJc1PBxt1@r5F3N-3mG^g5=B3?5dCzv`LtT}p@CcogJ{S3x2~Ld{K7-ahVj~eEj+l&Q zl=?@hr?Smqkd{n$r|jP;WmGFMU|)17i~r<74~#gs!K zy@JO%QZWM?3mm1`wNK#*jx;pb7=F)@j@Q{-{=iWhZ{Yx*1Xm#M}9{2-RcOkH_Xu*(PEqn z)6DNpig;wiOQg_9R39uIRgQ(pJUCdYFqQgX;S#jNS8?YvQl2X+av`h4E4oZ@w3IKZ z;SzHjD(P9ZwNxmk!ll&K5;IP%gWZ#KIMj(Ql@XK{`W_42!Y z2G4M$uzmgt7Dp;mun&tIrNZEU2>nM26b-r%3^>0}f23l2-XjIWP+Nc&M(GsAuv7xp zMsAnJV679}#&=nu3VkeZHPDCXlWglFGVJ{2`77{uV4aR)ds9qa1S4_e6fA|sVQ;_D dp2ae$d81X}5TSE&p1(Rv8H}xfk0zc+_W!;P1LXh! literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/system/SysRole.class b/model/target/classes/com/atguigu/tingshu/model/system/SysRole.class new file mode 100644 index 0000000000000000000000000000000000000000..b060ba36ce9f411ccd85efae5f3e382bfcb73b9c GIT binary patch literal 3176 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/system/SysUser.class b/model/target/classes/com/atguigu/tingshu/model/system/SysUser.class new file mode 100644 index 0000000000000000000000000000000000000000..d7dcb92895cf00ad24be72a6c67dd620868604fb GIT binary patch literal 8794 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 Zj9In;c;g7% zz2`Y+?|Hp<{kMOwzYAaz7ZYeftBQz@C}Ii*v-V2LaF@!~QaR;X#U&?SPOaEEvyfUe z95Z!@w}wujm?z`3VH&_S+~UHde|Nv z+XC2eVugxc9erY2J!51|f9@_FNe@~wopQlFY`BJi-mPPoFr(dGHA{wTisfc<337Jp z_$cmCpkL3_Tu9z z26PMx)m=67r8fG;6t8lG&S4!RLT49so@iX%{W?wd-AjE}32oy#9;g=( z-V&To==h}IB&h1BbeNd_l#T~00;j4z6BbP9IEYDlCT}?TDW;5<7?~dC*{5}U1`jLP zv0^NnQ+AOdf7EgbDmt!FbR7lH1byf^CEz4~z5n-&r#I+*UooA@_*zC`-YhxH#ktI3 z1XuapT$_ZoPeB^JkYg ze{_BG{BLNMEU1MXD~d_KdFhuMf4a1J;rz{aE=v;?bo#}$P+e_ArcLLxRWy&6R~F5Z zXPzi@JInAG3=+-tCnIj&qQA#IKZW-!p}D!&&{J`zR*~D9a&K^+ewi`dyq!B~l#CVA zWnwTLC={%!y2AH!Nr={PqL^4hl=DkSGHZq7rCxmyV#@BZ9W{J)fmiG(e zM8DL%+3K*zW7ah;1=}R1VYbtQ20Ln(#095NKWaVCcm-LNU5eemO5%ZmS#&t zaH@UQHL}Yy#;PCR=*d%=nIm*Zh7C{xnc7u5JNg@}Y3mOzyE2mN)B3AxY3mQZRC8?^ zIfiN0E|;<_rUFZ-Z;sxr+oA3kZCOEg6GK62>!o^}*~I+o5y4x?*6)B_hiuz*+>)^> zbI<9F;l%`A!pkaN5iRt)3i@lCgH>F!m(7%1zU->ZGS@C~Z+<_otJ!TYh1=H!D zw(aHe>codO)jGk`=T^-S_~QW$mCY|O<*S%73WZtAH77KjS70>xa6tGYlbcjV?x_W_ zHWEP;BR`0OtOZew>QZ4+8Dv#tibY1SU^tHHsCZ4meNCRMX2kId;sg;q$222O zRuG>jf=8NW#Hk8mmIxkjnh~cfh&dv7)@eq}R}hb)n_M0bdH({fN%5)h86A2H%5Ob$ zzsS2_193dYyHG~}9>)`WD&iExd%f`Qpk61l1vTNGP+^{ELWJ8Jh5JHAsMM&aF|!aOF02=8bV-V-X!BVLH`&PL(Ap~7Fnm+4mF?KGbvJ!3<|Z$b@^ zRi8xou@Z5ViMv3#DEAsKd!B?5rm}sjDrKhoD&=4?TxIuGRm#%vRmwp&T;=wys+6_l ztCWLWxXK+{RVjSeX4~e z_YYW{YsC=$j0 zIK$+Ki0@Uub|0j;{$2EqZvKYg8&4^Ip2~J5P3}mSa>Ar=mBy zCJsg>y`rOhsVEa|2G5X+F`VQ0Iw=*eVh6rKN)y3V_CWuD6A=}fqA;NR zg#3WYYU36$(TivWP{Bm%r+io}0IMMzXMM0*53b=u7`}+sBvO+K=lO#C2aq(7_~6g8 zHzNK&6wanN{rzlp!#qY`iUY)Mkx;xwd5!Vf&+7oMp>?_+jhkWc=&{?6W(3c9Y5siU hIqaJZq<0Q`0pBJ<!G= zGOe)Qaq1m2bliH-=$I|9W;e}FVEg6^e9U>xW@ISi)C5K=y&V=ppDHub=4}RsF~ZHH zTA8?!6t3bWs8Iu(B}xl@tGZIINzJVW#;{EwU-fM(v=^P0y{6p>ou+w++?hO)1p_;9 zyMSJ`+{15mtfs)$iPSc6z%!GtNbns7?!;XJxw;+7D5OuL6O$=;sQOM@Y70zMJil%RZP`7ieXC`^?fENa%?hoQ4YORMqW=5&FR!2bp?rws zwa>r)^RsUyX700!Yby~}|zi826*{ojGYA#v6Bi9L2 z2^&rn!L9c`9Z`e0MJ9gd<8(!^%CF2QgpF8BJ(rvxX=^{m)CzbLXg#rC)$E6I0v#8}^TJnylpWq%`=nc9N8i4>>FrNab*W8C)cl#|!l10ERXFFWja< z{~Kc(GW_Y{Z)}gr+<%Zrit;RrqR21Jq|T4gVcFoStcHv;eW>F&F2+Ag@Iz@P)uJ0V@c)|yb(3Wn;UPe ZQ?Mvl=3nO)RsJ2OR^BFpeeI%+!oR8=!Mgwe literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/user/UserInfo.class b/model/target/classes/com/atguigu/tingshu/model/user/UserInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..f509b6460644b593ff429cdb4eb4ed7a982609e7 GIT binary patch literal 8655 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 G^#1}^{27V> literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/user/UserListenProcess.class b/model/target/classes/com/atguigu/tingshu/model/user/UserListenProcess.class new file mode 100644 index 0000000000000000000000000000000000000000..d00036c7083c2a02e276371c315f7604dee04fd0 GIT binary patch literal 5914 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 L(hInZ-=gphHJkX( literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/user/UserStat.class b/model/target/classes/com/atguigu/tingshu/model/user/UserStat.class new file mode 100644 index 0000000000000000000000000000000000000000..6aa160ae5766beb615843ccdb536f9b6216299a1 GIT binary patch literal 3250 zcma)8ZEqA+6n<_yvol?$Pzo(90#a?IuM9#|+)@O}+d>OSp(vnbx;yR;-JK~rvmpP# z#PCfMqlv~Z;s-(?QAi*$`UMmJhv1J8@wxNT9op5I1$)wSi&k*n2?%nT2RHBqj;A9ILr8^`9NuCn9r;X9XEBU3Tqee`sv~KBRq5F1l;fHHb*oGY&1<_& z&+<*H2{3DR$+66tV#TgmJbG2h_KS6AQED?4Prvx_$!8B7lC*P5R@=Pg)tr*Ya=kIn z6a2+$BW=z+Yw`Rej$JL$mU>P4$zqY!Hz$o4Pal2v*PZX5-h1@tx1X~JWEIT?Va3H; zPrkhS^qV_zEzY@(nt&2-Ue z@`8$8r%~yAf6}Z*xVkj$3^!%Uq5@wXZ8sN;B|vyuXLCQA)7|32w6z##N!BQ4(E~54Q-Sp_bl6h$W@o%cy~rx4lKW2C=onMoN)x&fl@i3%y{ z9@$6JbU`E*r^7OVh2rRXy{zm_+DiqBw};dc!f0RT_d-kjoruKWx3v$SL8-c ziFb5KPP8?USHmsx5-RCAHQd_VI@SB41LIV;Gg;>_OLtVJ@;s$BWSRUA=yf~46nEi6 zN(%Nd2^T1-VKT2H^PCF`lPLrf$nUD>gg57Ha-j!m0!T2*i%T&qlY%vo%U21en-_5@ z${qIdM0r(p%e2W9@i*`gqrmbTB7L!S$AK&OC?xRX<@fI#F4HXUUkmd@=$sV!bFjc! LmQoci7LofGJtC~x literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/user/UserSubscribe.class b/model/target/classes/com/atguigu/tingshu/model/user/UserSubscribe.class new file mode 100644 index 0000000000000000000000000000000000000000..cfd4e3256ddfe80cbe421026ce7f1e44ff44d823 GIT binary patch literal 3544 zcmb7G>u(!X7XMvm#xr&%Bn@qfp*$P9iIaACEelQql=NkAO1CLtm-mf5wWqOX%*?n5 ziLao3LP8)Ff%eOO*sfO93Q#GiNC>`w#NPod{140HcW1`&I5n%TWY3&?&hMOiUiaMj z_Lr+)09eK=MdUDMK(nADFEDjho|AT4dQJPOjk8WY638EPJvVwpU~F!Fy#Nyh14Rqt zuml$Ce#e$kv*$K@cI0}^u+_6We#2?oz0e8lr}wnxDOQP_%HV2#ikh}?qe2<7z0vDb8%lGRg&FJ?DAofv;7UgWmz z!{ja%i7Z*T8Mg?Sb?F^>r6=10yXG?6Bq1-&KdZpETDT3j3ly48q~cIMP0!6|;IUUK zfp=QCOWDmk%4n#xXD!^Vw2Ra}l=!OHf3Przc>$elWpL+^!89ETxL{!s`voQlT*<_> z?z4A({NimzTHl}l;QP<7{&3;SPZur=Xi3T@Yp&;<=yf)n;IyQ}s#*QI zY_H3}RqK?gMJ<;R9H{+2-A`BaFe&;_&!x$lUuVy*I#J7SoRlh}$O*VdfhzsxyD?j) zxc8J&k%+Xx*ezUSyQQy^sS{O%KYR+)wx@%B)N%qQTLn1VKZsV$9V}yEdj7a&BHdaW zu~;2+Gm$8AGG-2)&qSDIO{_(-zPT#9X`1zur>d(*=x&uKD{#VIo72eH^240n+H-7H zZ8AQawPr?sl3J!{&F=+u=cpT3RHbukCLK_-i0zOx$&dg3`%mw^A@I=ew^xUg$Zu@e zbw6+6Qjqa*JwN8Y|ZyKd)=kX*-X1B!x>UM{aV)<0e>!o@6W&t zD>bnq+wC=%qtwJ%fd_~3IOjH&#o`@F%P1#IMUO?SZLDOL^uDNE$;YDnmWUOn)}GNtI-dBF7HJF}tm7Gas}4gO7TQRm-fYSnEb*w-GqDE$V^rNs&W literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/user/UserVipService.class b/model/target/classes/com/atguigu/tingshu/model/user/UserVipService.class new file mode 100644 index 0000000000000000000000000000000000000000..fa5c18abb325665b1fa9df33a466fe2dcf567024 GIT binary patch literal 5013 zcmb7I`*Ryt75>(iv}<|gXPj8YgwU$sXJy&|shk87Cm{yg331}m2X)rcVs9+%y4sZ! z^DNJXgpw2z5;~pf6o#b31X^ZN2TF&5U&;(W@)I-s#0+-A|BzC?yANq4FO2a>yXW5f zowN6x^PRI-{>#7L{sVx0csYqCG|Pyoh$A6kAa9kjnzK+b7AjfCFc<8_O15Mb^kQ~i zv-RvjUJjd%;jBtX>@`fo*)O5Fe_*x+3R+|&RkT8tF!JB+RBXMRJ;lqcu{@)fSB$(a zLAJ^Ty*zD6=$bsEt!UYzW-erBoHDmCCTzEOWEKtiiwAE-Fi3EkAsO6U$f zYQl8%1-Fpc3-seEasr(q z`fxSkVr8#N7ILM7E7SF1?8m26d>RKB#zoCu948B1u1$22y5lMi;jn}qC2dI`x6Hie zJYhHlnM}Ru*b-L50rz*_7*lUt+iUdL9dcn}LGxYif1>MeeOx_;@7gwaV+l=GTZG71)}dUc+U zu$POKu)XX_jT<;(=*0q!#aF~enE+d|je)Hnp zE3a-`J->177aOmxcUEA#R5Os5^3#&H!ln1Gf+uUWBH=>nFX!ii&85dG( z+l;S=2~Tyopt`oqHtyjXW>buEerZZu_PG#0eqv&ZjYXPZLoMrerRb39RX^2Coj*#Z zy7y!zw9D2^csp&GhKDMSlgvJUDGeoD2}Bh~SB7Gh#MCJV68xPn!{62oO&a!2{D~ z#8Uy{X>@XxCsAIXp*LCHCEnwMcOd=7b@z+Bie=F0XL%Kl6M#9K=3NqJ7+&j@Z$o~Q zi%qC0Z;MpsIV?gs)u`MXsm$|GgmP!2a$lq}k4F*8J&nq{B9(d6i%{-uRL(>y^Y|5^ z+}EhwAE~Tio?#Wy&hakjnHU^;3vzU>wtEOaS0axdar4xR^9AE_v;aNIWNND>J*N96 zy}_5T5M{D+t0ukD@J)8RyIhPm*|SxXUM=}1ceo}EoQc|H?^aEE#pj!Rz%{uPz01C> zn)IsGH@VX_$sZryE}LS!w=;A1hX!vT9=kR4Cnzr?-h6B5k5HzD2iNc+cSzx(>0w@S zv5`NcH642woj0M5q+@INXn+{b#R(bCCDL($NxX}$n@FYO=|l)Lnv)3{%_(VFfD|7j zr%<%;{loY&#B~&Q2;2KM1g;El0d?lQv)QWfblj$5K6@TX|W0g`0|6p7G zGNm?rh5MaEkF4BBn+)YWY?sl`k0QN?UQcZKzeM=tD3Tm8KF}uz9;dsa9mEAIM3lnK z*Nc+Z4T8=sdbr6wN`Xbwr5k_$dEKe$C{47`(2b6_#&U|g zq*RwkMQZg$6XO}r1D_bp_&L6cuhG9aUc=WZH8GX1;2R7>GakaX@jRs%_G1y>q!h=K zq{g=>B}j!wxh{xtiSOm_P*Oy4r3azD&xx1}MUt3M{Lhy`Co*`!j_ieB>-`M)O5LE^(7*WZ}B`IBHA^#NV{{SlhHo*V@ literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/model/user/VipServiceConfig.class b/model/target/classes/com/atguigu/tingshu/model/user/VipServiceConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..1ff5ea4f2884c00b018401989b128ca2bfac6677 GIT binary patch literal 5474 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 S=5rS3xohF-UAzwyng0N3XiZQ6 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/query/order/OrderInfoQuery.class b/model/target/classes/com/atguigu/tingshu/query/order/OrderInfoQuery.class new file mode 100644 index 0000000000000000000000000000000000000000..ae442bc5c6409e903037b3891e94ab0fe21be8c7 GIT binary patch literal 2513 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/validation/NotEmptyPaid.class b/model/target/classes/com/atguigu/tingshu/validation/NotEmptyPaid.class new file mode 100644 index 0000000000000000000000000000000000000000..19cf9bdec6862628a676f70987ad501273259db8 GIT binary patch literal 864 zcmb7C-A)rh6#k|K)&eS36j8C@1p!Ii3!^txlS-FJQlQyZZhAHBj_cs=OtU*fve#bw zAie=)YA0I#s&pu(^d=)~nFvNE!+kt)hQ zSoe&_GUP^TUxeOi5Ff5(&Gw#M*MefnbsR)dNIfll>%9YY)9NhXVGB}CI zG9C$r<*n_`1l}_#Wo>GL!ahLDfT{a!4J0{i(;5UAE|`K<%5@A*{A-oDpq z)9;Y}_K1WAFQnZ1F~MHQ^5^#+$?h}k+XgYxrN*GKF17}>AgdwcLi2(537YZKvm#A T9u(KZ;#$KavNr}`0oH#5{z>;j literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/validation/NotEmptyPaidValidator.class b/model/target/classes/com/atguigu/tingshu/validation/NotEmptyPaidValidator.class new file mode 100644 index 0000000000000000000000000000000000000000..bf217fdf327ad1e45ba69dcd15b995f63bb8212e GIT binary patch literal 1267 zcmbVLT~8B16g|^z*|HR~6?%aFsxpVLR{`2c8fTvitkbq$#nL!Fe0@;0e zB<-ej8}_T}zEjfzLu<-adR@Sn&+nv>77%YOSQs&p$zT*?XS^!fS8hWf)jn)0de6<5 z|3da2OZhkFb!lV;lFKX0DQXDuwYNO|qIIZ`x23A@^wgd&V5)X>6L{VqB_>O%2h!KF zA85mK+uE1P)qh~9($0HLQYLN-%>J7fQ{M3Ej=*?Xxz1M5syhB_S#462D|yQt z@3Ate_Y{BQN%?;=EwL*6jUWO)R}_J%+NEg;*aQ9pV@cna#{v@cD5}ANqQ4FvPV%e!bKeChnwl z7Qm`_fnRf8s<6aU7dGTlSQ^}CYbPLZi(_g~ayq%+;mxKLl&QiOh|fGEaF=`d449ba zp6MCj9$~;Ur-N3Z^GAXuDQ6aPW*5U-#nTgv<;IJ~<1Vh8AeHPCPg9?eGCIi)&5Q^- z7rBfOJRG!9f{sOD3O%Se3_|=m44` r`;5Q~F~?P!8=-k&;Tx>QE+#`Nmt|?i;eP{W3CNYeV&qiBQY7tPtZYNn literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/account/AccountDeductVo.class b/model/target/classes/com/atguigu/tingshu/vo/account/AccountDeductVo.class new file mode 100644 index 0000000000000000000000000000000000000000..7cca29fc328d984a8789878e8869e8bfda4c99da GIT binary patch literal 3497 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/account/RechargeInfoVo.class b/model/target/classes/com/atguigu/tingshu/vo/account/RechargeInfoVo.class new file mode 100644 index 0000000000000000000000000000000000000000..e5ab94eae031dd2bd9cc5f92c19bd56d0d1b9f68 GIT binary patch literal 2527 zcmb7F-ES0C6#w1r%+7W@{h-j&)rtj+cH1sP`4HM|(SAa)h1$iE=!=)>b$96QOr4pn z;msG~qcJgtkobTP@X~-JiUA4g3nu;zK2jo2zW6BOxjQrMZdr|{-TQIQ?|j_fIrq*l zf8BckU<~Jzh@nA)qC-WTq3t4H<3^F&dE@Mbi^B97;-i*r`6n0}`qE2{NT5+eQb!YX zhK%Wy4DRR4R=#ZbmYw$sWn;}TxM@0N+cy@4S>SG7%-SC~OAh(sB`IgRetF_zr@fUU@J-Ge3znRlZ0#6u@k!(5+=8&KP>YiLq}f~ zG{`@jepiA!b?inLLt|d}<6#b6ed+pHNKRhR@uKt|7t*ySeY~V&4_*#@EQGo3ihR^& z7sFm1`|t{7SKwY@(peT2{$|^W_5C_t#cK?^OMFF4I=0FE^OjE_+w-~YdkmxDIkwYN zb-Iv<@C4P-8B&YHu~iaFmS3*6-;;R~07Nzk~Mir4G8Z2qq< z1Cm3R!G<3F(B&UAYZR?8(0?7OvOe$=5?7%%tPlK%#Qb3Y9qg!VY0+_JkcJT@^D~-K z%0uk90X>sa?jRK*x<^!kbdSVSs>H+}qWuP%Q)((6fs}QM)lgM}pnj)<95#6<;24fm z5jv2=Fx51MUQ7|A$H}%ICy=F;f|Jx_qqI^nPoJ?dTE$5R^w7sU@h4g|B%Y#ELyZ0t z>?yi}Wg|mK#xdeok>A&ljA05XOQuQ|WTw^45@Z@wEb27bbHfyO)8lZZV)RWUk!*rr z$%RVuNLzMP8LN=k-Igs7g^9L-8_+U$(DS~OcaJDiky1iULJ~`=?)ros3A~1cH4t5I z;7y9D;wZ*x6+@DA6O>v5<+2--v{EYMoQCp@1PYPE7!d--o)KtkACrO(s1YE-D77Mj zQM{?myK-E*qLa4BL&^i)qncs+rK!HIEn)TwrYls>Y=0q6;uI+oUdH~f|vTL1t6 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/album/AlbumAttributeValueVo.class b/model/target/classes/com/atguigu/tingshu/vo/album/AlbumAttributeValueVo.class new file mode 100644 index 0000000000000000000000000000000000000000..d3119c49b25aa2e855ad03a61385b1735ae699d2 GIT binary patch literal 2681 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 a7(y^Lp_^gx|2ozRT^a7@p`2|e{eJ;=2P+8x literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/album/AlbumListVo.class b/model/target/classes/com/atguigu/tingshu/vo/album/AlbumListVo.class new file mode 100644 index 0000000000000000000000000000000000000000..21a3c03c1415719b6855ef799776bc694f90bd71 GIT binary patch literal 6794 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 M3qhJesZEOg2QHJx`v3p{ literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/album/AlbumStatVo.class b/model/target/classes/com/atguigu/tingshu/vo/album/AlbumStatVo.class new file mode 100644 index 0000000000000000000000000000000000000000..63e4bc401ae784f5a8e7f3618e3aa747f28142de GIT binary patch literal 4066 zcmbVPZF3vd6@IR~t6fX$_t-`uygSsg9kzwOfSd#pHvzYH-W<$(%Ua$_8%w)JyE5b> zGthR*2TEV2OusPjfqY3qI)wnClTtpw41a(hKqiF$Pzul8U0Ew>r}cEkTAh2&bI#s- z&U4O{KmX5_s{jt*Yz`UpX;2KP$O;Ufv9>I;X1Nvf_}Uq}90+9hJFXKP6zH2SuJ%Jm zzlNNFJPd*9vR5~)pwe_IO*3%ZieGJ-Tb^mv)|z$mkbJHLR-LutXUTrOF$Rhz^>Sh5It&OOrnSV=9*t_IBRz7B14TEn2^TY zTC){Ns&6t-km^D1xo*2b?2)7CW&?Y0i-2CX+#}C5t(w62bmG-fD&~t%O7Lw4ZpR%A zU$KMmgz`+I)5QcnJeADsT?VFP;H)j9`qKSw1K-0mw?X$4$+M1kglL^sy381ul`dm+ zS?M~kwC^);kF*caet7%L((-)+KaiFYS{AyFoxyzueuy9O*j3A~E_my9SmVV}GUF!( z?#BZHlXYvuUhv$q6+Gqy1i5}-xq&aRnM_c4;6wsiyZ^sc$!x9!4Kiz9pm3_`22R~x zb$n;7W*>50k3?~}CxN*o$20xstqLh(Zrx{kmTy{ZfLXWK9m`xPSM9pRQ2BLR@@7+d zGXd8=_~VVMuQ@Da|Mfpyxc;ZBU;pM+$~P{)_4Vs7$MU-uu6=kZmfv~l#>Few|9nY6 ziSjnIP{>f!*LM2IPw zV7GdJ!=k*gY;DGMR8O2*Tt31KEV8#7w%@FAQ0ncI8B-l67@6wbWPU2So1v-hSL%Tm z5ucmtm<-$PkX!MZjk0~zk#rkQ4BLC;d}V1OR)6);8#gY#dF`KXUVrf&;tqRW;0FzB zGvbUtltnFvI$RB&Z2C=ssrGz!+%0dzHlue&bKs~|4!p)$f!C9aih)tkM=W=}X8Ti1 zp10B5oKH|B-h4vS;duJ&rkw(RDuHj!;)E&=v0&9|D^6g~>mc`@NF-!Brr-fFcYC5R za@k!NscRQTt~v{IKorUAMc1_(3pLC4ZC^uEU~f;#(lVjpd4XI1JCuZq(uO-Yz%!i1 zDxbVpwPx+KPmAgKIqx=@~w&b(Z`CVw2XiPfiQ=NHNrZ^9DI}fHh z^VUpp9_e--Np2GjH7#=gDs8$yDcu@dz^`6ISB4q(F9N_C09n>7IxX zak^y@BC;&fPvuP)R`qB2d0NPUora8P7Ke-$OX(p;b{aAwXdE(HET@OuwbPIhwd0V{ z;#hjf$(@Fbnj#JvE%=Kr%BA?2-vdnZ7qc^OLsibt{tNnFq4u4h{TTZ4+{|U{4wn>e zJvPTjN!j-q@&)BnjGTk9ub^DUoh`)Pl1j+lQnsK@fA znk!{PQ+C@#)e>7UV@d%d__3 zE>vMrQgD!EU8AJ3WcQ*>DT@G;Sf`|g#rhJtZ>dl;=t8hS5aL^gXsvMNp00othe%0>F-@zFgbiQJPpXcCnm7^433ooGX9niTur~m)} literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/album/AlbumTrackListVo.class b/model/target/classes/com/atguigu/tingshu/vo/album/AlbumTrackListVo.class new file mode 100644 index 0000000000000000000000000000000000000000..6ed243a21ef1ece03d3a8b224a39382a3c13f014 GIT binary patch literal 6039 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/album/TrackListVo.class b/model/target/classes/com/atguigu/tingshu/vo/album/TrackListVo.class new file mode 100644 index 0000000000000000000000000000000000000000..4facb9e5140237b904b6694ed22d8d66daabe37f GIT binary patch literal 7326 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/live/LiveRoomVo.class b/model/target/classes/com/atguigu/tingshu/vo/live/LiveRoomVo.class new file mode 100644 index 0000000000000000000000000000000000000000..5c3dca36eda4ab551ac7e07363445bdfcff985f6 GIT binary patch literal 4893 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/order/OrderDetailVo.class b/model/target/classes/com/atguigu/tingshu/vo/order/OrderDetailVo.class new file mode 100644 index 0000000000000000000000000000000000000000..97c61cff94bcd0aba318f4834927a162dd5dad98 GIT binary patch literal 4317 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/payment/PaymentVo.class b/model/target/classes/com/atguigu/tingshu/vo/payment/PaymentVo.class new file mode 100644 index 0000000000000000000000000000000000000000..7ba7f7d4fa668e6e4db587d92918fba2879c4bb7 GIT binary patch literal 3887 zcmbVPYi}IY8Gg=sW@o$}Ut(~QO;ZSTA@e)`ks4YRAwXOjAr+~pYQChQsBI7-N}(U9)IY!vXx6|d{s0u7GiUZK_+d1oh|M%Jr08?mWkV20E&4P}!z|dLyoL#Ki-g5EynX^tg6i6R*JvTfg&@(!= z*b5WA1~L}GVL!hhRnyzFthkQ3*W~N1a{Qy6^ABeJ3Q@%RPut*_QF8G>-IYK zV6#vEA15I=0@;&Hi(7LR-M~Flbq;%;AKIbI6A4Vrx_&YEg}uD&)Qjg16n#4=+8u>r z%~^8o;zGIN)a*&t&5{$8>+Y(w7Px!u)wgfHfAN!d-fzD7{O8x-*mvOGeT7f2yw!Z+ zwLPTw7n&C?G=F)Wp;pZ1i|-1I(PHiLjkVX`YhHg*8ttP|^Tw5%|M~6)lBLs9mtT=VYu#;;Xg$x0)Z(TU=vON3bzci5I*ru^h?YvI zI++1i!uB$nBdm%pIj)Gi=Mc6Ev#4z^wIWHFNEA8B!7* z!pOCDG;?iqGxSx!8MOt!Q7=2kT$${F_)F? zm_{W77iSHu$Y$k5lf`()ex(4D6!7iYEI3F3AE3>GDGK-uZ5AA&fRE8;!F}9;y@fQ#`?-CQvyg|%zYFmW zi4+cVlwvs^;V4n$si*M(XCdDxj`x%982=5%U&!b-wi1o`HYFJMZ!{iEH0BGIU_7+Z zcsS9R4_$)sEgOwT5{>yDCKzwuXuLDg_$ZDsGBRK#&MD66{P^EtB!_#u(ul(?lc0*_ zLE7njj4;HLJd_OCzg0+8W-;Vo1UZuoIkZ(sRiH8Ca0L0|WXM~#3aLsvh8&3?f07Kj zeXEeFDPqW-5hQ;>sq}~sIQKKmACKq%1YNs4{vpgap!ZxJ{{ZIPME)wW(UQcs=O;Ln zw8Fp8m(@PPwo9-IS?wzBXldk1I#qI|bXJ!->5njc3H@0;o99&YfqpS)gBNDM-Vk;vO?M_bbNp;LPy*>C19>e2wLdSD>f>eqLc@|I7*B<^aQNdHB zG#ujiGk!V~vmZ~BN+ZM$*rbdoS^q)iD>5_#rVvaJg!qaOopnkwMxeJ8S~}W#R;-rp zQtN1L|AH<@&-l4Uexn9j5>{s$Ng!Hn;c$(D)bx0hd@U*Q_Q3v7H1 lx}VQoaRM}yqw-tY`1m{cIRz%SSmsxQ&sB!hDw`=p_G>CL1xx?{ literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/search/AlbumInfoIndexVo.class b/model/target/classes/com/atguigu/tingshu/vo/search/AlbumInfoIndexVo.class new file mode 100644 index 0000000000000000000000000000000000000000..ae15a94b2805478a2f35f966df04027699f14005 GIT binary patch literal 8579 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 Y#NCY=e}(J!^bVdpi2gu-!V0eb7fCwg=l}o! literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/search/AlbumSearchResponseVo.class b/model/target/classes/com/atguigu/tingshu/vo/search/AlbumSearchResponseVo.class new file mode 100644 index 0000000000000000000000000000000000000000..2239d687387d15d7d57dfcdb4e9a18758fdb5cbc GIT binary patch literal 4082 zcmbtXZF3vd6@FIU)vlygWZ}FclutZUyD7z6LtHw>p?AY zov_`lo$qb+cUw}v>PCBkAGw=>2E9i*M$#O55e^!H{D_STj%qOCAa;5Kkc_t(_#FwF zvN4T&G+291$8C8xT}G_PByQD@-HsbdXw}AyfaV2sJrFKV+PGJ^C`uPssE>+Nf5XQ8 zcz~pB$G`MOUpSwd%do0!HRfLw;0JBY;vs@NZoHu)t<245&@xt$`fuBq6SR3(a7s@L zHWqP8Ly5-1y*k0vKKt|x!r8+%Y64$K@auule#gcmB815_guzL^YvWNororTnNUVlI zY_g;>*&?>@+jtyxo}%kS-IZXQd1MQ$R@gXaZ1xUY;+|b+$6X2hwi7?^#RU0L?D%n{ z;aZZMA?4`tGwbv?U#yZz%Vx0^his~bi6=E2lilJ4wU!%tPS3mPZ1os$q2+aaC+>%o zFDUv!L}!`@=+9OE^2%nnBy?Z94Q$&xulx zyB?GA=s`SOpE^YVm70+(ns&A%KWB=>HVSK*h|ANueotI*uLU~&aNA~A&+ut zl;JC6QTVhNQ!*N9P{Sz}fD!@2_MgtqTG}oGR!Cs$yg4RQPTA`kH0mmuo=Rqv*GCX{ z-B8Rp%QKtYB_*j$SCevUZ!mv{)b3DG8UTcAd$=u@hlj*TEaeP)qAEy`y6uW;TP-GA zvD4mJbM}%hGOk=*UAx5dtn#7=-KgIa*K!(ZVRjglDP<8sNo^;tj9JBO#eo_c4ouox zGVRGIF(s{_AGY1go|vAQu~+oNV$^u|UI>CXibH2lbxCwMkG&$^KxiTo_XC5Rl~XA_ zc>eWZ$E_(x>dLt6wBsPWq2UkN>Lx%%`jq2u_uOc<83a51y+)>(NyHh=KEn-m@fi3^ z8GL$WXH*Hriqq@0yx476xUS*pv00cC89l3=x?i@B5YjTF@_I1XmSs4r&9hNfecugN zdQKF%kqI9Dp}TT4?&v0ds^PvbhO#MCp6~!)fE+YD!B;&e9%IVqd2i=%fge7hQsyfu zfB6K;U%q?%6RD&yVVzZ({+~0^Qv>P>sWn`| zbK@wF9h6eE=YVorQeGWTdHkT1qSFVIGm^43{@^DLN-2hBKzXmEDN#_fc9qwQvXb$t8tvuAkypU0?bbrK(IC)mIbnWHIuh)rG!IZpH6@H}-BSiqn0 zBT72;zr_ob46NbTc#%>bJ?!8mN+v?Mc$t!g-;wtfN(KBLPvTWdMciS+e@v-_cX0x* zQL^DMw)3c%)_-xxMCnsZo5=B>rG1LyN-TW2m=4PZ3#)_w14ughah^v^q#-IQ(vZE% zvNMw2LWJ`0A`Qv-ZOT^RAJ|lJ?6m)o!XnXc%8fJnS=kUL%Z)DE!74A_g1K}D-+N8y z=j*!IsOrg%C7MKSE!7RV#r}{+R@F$iPS^8tD?iv`*C?yyx+%BVFo~5Zw@!{P?^P9M zQr-!?g)Ovs2m`;uHl-X3@(Y$rl=ne&@j4})@5mZDlnfU65o$$wV@{(-$&|(VH;SKA zp|e<;#sWdpJ}1R+ofC>F7%3pd==)U(ET4f5k)zrKZ0-jS@nbd;6YDOMq1E_38Zu4S z*wgAIyU1jSmv4qeT^0ow#pP#-pVRN40gS#As`ZR(zBRoz-sU$=Glrt29E{iN$wO>4=pnkzO9Id~6?aW5Kq{(z{}M1X->pEzcD=7R|vADhRUUA{uqc zb4YhVAh+DKJhNe}n67!fZk)6%+moJ2y8=^1leKtXR;z}iuOHQI>FTlr&>Kd@lzORL zGa8bndMk!ocFZ-U%_KHAKH2=}dy@rAm&~dqy{5y24s45Rb~}~xwA8=(@s|&7e`;19 z-1=Nyl@Ud{Bw|Nrepr(>XKXwxsG32UR*ju z*Nf_e8g8@BbC+z}>>Z0Lr#w4oJb|4pw*AYZ-Hw@(-E_*vSyL5vD0%@LR)=07`{34x ze|~T~Xb^IJ%CbAb7F$@ELxV~EYzjz8g3GA2^@MX`))}kaZOGxoCW82{wIjD{4+}~B1*D_JtmHW0U4|P!vGCD@zFW|+{$P8yi zNFqP^Ba+?Y9|;g){3^GAx|dW|Jes6S;5bg8$B(NRHQA?3_C&G@D0$qZB3)pH=zy*S z%P>tz=tOM?@fRrM>xxbk34d`;a;{D0zeZfUGx;l0Um)IdXYv=MmZtJ|G2}mTvFpMV zhZ$}9H}vMT`xx3lb~>lsMXrSyorx1NI+Mu76((^X!yD+!#dC=kNW0TDopV79ZH8)? z$t(iUk#Ew4I{Fw|Y@^Z**q!VS-JPj3vo-tx z4PFovqtO^|ys=zxp++I$!srbq{swQ+dhex(&zYIsotBL;?VfYyJw8=m{jIP0RFV1v*AXmphR{XA~urnO{Ojb)pL>aO7|l;|Yi@{+f$a!y(8 z$)Fc~0%?cvg;L&h={rQ$J+rDSNiI#~KnB~eT_9DI*2#D4vMR7+Bw{iMJU4n-fd@0# ziCqGnWy8A|`X3k>jllf~6b(;g@T9VvFqBbOX+M?0Zagi}O>LD%Bd(@}Xk;<$&0rt) zGqQ?wEAw{A@JU-3Ak_ylcm~f3?5xQZW8Suk(z|4O1X->pEzcD=63xL6DhRUWA{uqU zb4YhiAiGqzJhNsjo344aYRp-d?Mct1U4e#T_wXUI_9dD3)3v~NpP(_5*WrKO&Y^^Z3`{LU;r zxbfM>SGNSTfQ{a~X&GnhwX246K{8r_fxKOm)n)0J>Nyl@Ud8mo|Nrepr^Ai1HW_Oh zTc_LVgl&&;KDx}VTQt0iT{?-1cfpgzl|{K4aveXvw6J)R zt{2$(j^Wm;Ja@^a&9337a>}!V#uM1yVB5ben(de_*mb99oHA8$`=b}YL3QW_G7oNi z@aOwCH$M9E!Oc&}^>N$wT+flK0qJgU0_W3s9ZN|R)S0=!!nUpp(^|7v3_Wlc9HUdR z=-JM7fzPAG41s~s)6yzc4R<(i+bi|eT!i2-?ucZQ;sutl4g5+3-?(ieqR_;=tX2!A zXXH{~X@{d+j06>&5fgh_^v;M;(z9S$hBIH4u4}kSyeV+tvFzI=mBbZ+-Tw_`fddAx zmv>u?w^EFMyvQLi!ly3Iqx_Az80QABV~!I(Y;r5$AUcWUJAm0%erDG8mZ?I8Xfg?wGni6Y@I&PmRd@v*NF*KUvhjMNv1cibNT38}@2u{-GZ zAGz3Zc7nr{Hu(#>vf6$0uOl;=)$SnMKnzXA2^pG7WaA2xxQ~H#bZ6t)L<6MVZkx{O zAciJG6-@IRgRf^4Fw3gPFpLv;nX(RyQSu5`8eU~P&T$pTA~QP9RRZ(0zlUEMslU;a zMCu_1lZf#@B_3i|ue& zoFYZ=M+Q@3*PD&BWt)cdW9SN+4 zgmtjWCvcKJ<7~}ST*Y{F4v`>5*nS?E(_CpjIcK0fqCg`#LXZ#$@ra<-b4&?#Al?8p zFxqAjVf43vGhwDjl__T0qmon!-DAzL^;ks@bWa$)hSz+m^INZqMV#eEie}I8cM+HP Nl;-LUT*h0-{tGXXJu(0Q literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/system/LoginVo.class b/model/target/classes/com/atguigu/tingshu/vo/system/LoginVo.class new file mode 100644 index 0000000000000000000000000000000000000000..d610e7d609d6da25a27490a817fd18aa0df4cffe GIT binary patch literal 803 zcma))+e*Vg5QhIv52oVLf>%`wYVWu0l5T0Tl57;;NQF+lE(38M`z;Y(@m4=6q1wFPQ2iZKYm#bbLU&cC!9yBRi;y@>^~P`%Q)cAl zFI612#i=yII0KRPjV#zADJ;4fi#}2~`6FFu&48IJB0Ec-ODi+GyDwmmN!T1&a}3xh zk#)WTFpn~M3=61`{h9m(`+*KEjFQU}lNYf>Q6~8~VWU>Nd(W^(t<6IMMP;y@RH!6= ycF^9SnRytU5;f^V3&YAprs;8}wTVotlbNQ+nKp@O>klTQ?U1RMFs+fbu>J{6^oLmh literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/system/MetaVo.class b/model/target/classes/com/atguigu/tingshu/vo/system/MetaVo.class new file mode 100644 index 0000000000000000000000000000000000000000..721b9e1afdd779416b2968c5e4b30911cb090afc GIT binary patch literal 2338 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 PuQ@7HdWpIEEvo+qH#%mG literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/system/SysLoginLogQueryVo.class b/model/target/classes/com/atguigu/tingshu/vo/system/SysLoginLogQueryVo.class new file mode 100644 index 0000000000000000000000000000000000000000..364cab6d1cb918481860839adc2c86fec1d1cdc0 GIT binary patch literal 2916 zcmb7GTXWM^5dMxMS&E}1#t?#mrlf>6S45!~uoGI6CMDo-i9=|ChaQ|WwumjIk{p_U z&=;mJedzQDKp%K$XDFHBq0_$5nf{MnenctVBgwIRnGT)AM@PHg?%Dlz&)UEJ^Xw-8 zbGVa20zDcO11gdX>3e*en^kU?&8v6siIUHdoV9GrKhMxJKC#{l9laV-2KrzyoGLjr zll$emRj!-9WtY85-Q0FeZ^!dR%`EPC1*dG;v|O(XcW2#U(CeOXZC(=$nL_ilqVJM< zUiu#}Fesf5mR!Mov1Zl8ydW=9x6eRE>iV0yMSCMfnga%gaFG0$xV`v!omUx##$yMB z>EtJFN$?>9SsZ5QD+~X|UOWfJCt?OsM3SJR240iClR`T7q=(lH9Frb02S~F zO@LVw8x}W{ht6c^q%yO_`+2TsQc2~G- zoX(Ri;FNfEox7HNkA#X}u_%Dkh5y@KG7K+X(UuN~$eLKEvaATd;%r>wE;XVrTskd7 zhHZr;T#Jy($H1tEhj7W#k@?t>k6-4rTg3)3ne|)aoj*m6gbs=CuEKxRdniZ zNi12ibi$_@3|bt&nDKFo~-vT*Gw@tFpn13}el!Z`s? z$m_VlFyBeRc%$%hZ2DLmxve51caBZaRav%e;Vx9U=Lt{4Ck!V#xapR%hFc6H{|%+G zhx}lahEjqCOb@Lzx}fP?g71zd-*MYR}`TpP{czPd>%|;FUJR zSEgynDKo#KFRMJqzDF=-vdU8&X&^>&DnUka$*d|d$>+#CLVs4xCS#z{oJOG0oSxMr zNRL2TR&Rim#}rUctZ%}myAuYw$NvMWTAnf+!WWpOMoeG~7X8x6lkFr*I8QqTA7cq0 z&`!k)KBT`q)vZdGE|TQvMmj&M z%msxwn$B0K40?L%5ww}782e1hM{c?Y(e6~A4-br} z?!hWP!XkyE(r90zT>>dwCTbRizf;Zn2 zQZNLy0cc>9R#5~?#$ZikyOh8b=B2%%FiR)OQI(OjNs8z*`V8Yh`-F%Ow#;7QmxBTp YsCPg;!f=H?YgnhZ6zy)}Q`|=OUq4Y%*Z=?k literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/system/SysOperLogQueryVo.class b/model/target/classes/com/atguigu/tingshu/vo/system/SysOperLogQueryVo.class new file mode 100644 index 0000000000000000000000000000000000000000..94e8f81e30da06fd6c1d9893eeeb6b7573fd6cea GIT binary patch literal 3216 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 f26zYb literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/system/SysRoleQueryVo.class b/model/target/classes/com/atguigu/tingshu/vo/system/SysRoleQueryVo.class new file mode 100644 index 0000000000000000000000000000000000000000..8a3f6bfcf491269e4b3e9080250e52e6aa3ac084 GIT binary patch literal 711 zcmb7C+iuf95Iy6>ahnDj(llHO6yB18x*yQemm(xkD3^fWH|fgR%JE9}x>EQmkcyD{ zzz6VAh~uPEfbxPR&+N>enejQ}A3ra@19*l;AYR8B)+01q*g#A0bmC@8`=qonq>;~AdJy5Jpu0$0r$#2XI<=qlI3>JYEW+62g>~7-m(KcZNmI}qxiX)a7q${$>rXBBE1B?^ z+Xz4zXzyVYZJuvYfB+r7+z`(-=D1qgE+a)R^x@t&$d?6lo3^?J8}w*fO8{=;4kN)` zw*I^L0?}t)23QsM{#m?(`$ScfkLUyX#@>^!h*qPk9}pZ7VrS8zw?tiyuRg8fA$UMk NNHysM4`~DJ{sL~skvaeX literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/system/SysUserQueryVo.class b/model/target/classes/com/atguigu/tingshu/vo/system/SysUserQueryVo.class new file mode 100644 index 0000000000000000000000000000000000000000..e864d722f7297f576b73a7487e2cb80e14df9347 GIT binary patch literal 4234 zcmb7H-)|gO75?seW@mOiYj4(e+(|-ciVL>a@q!^h$4P-W32|$uX`DFF6zF6y^&0p6MtB%T-hN~2FuWCd!K*zlINbIH zj6Lu0EkD>1sBH{hv=s&PT$R)l7A7U{WHa#G$h+Cz_bz(7?XI*Pvrv<^%D{HHyCW^r z7G`jqGY$NXw@&tIhJC|NxSz3LE7XA>M(fJ)q=i#Twc{O7RVLSI3m?a`0%p_gUVgLZ zb_8bTGjwrORu^8A;O8uS0&@bTT`#(kyt_8Pkb$eW%NT#s!lxu}(UYX1^j@&A*!RA! z<|MUC7S8sym(po9EPNWD5h(LbFZY8uJ@l$1jFRKC7CtA@HKNysBPq?Fx9|mNt`3Q zl!?YsG%8{lpWJaa#0jZ^uLw-5s%rab~`;!=L+SY5YXavPj0lk-nHKTT`#y96V*2SCV5=4kvLImQLD|hFK>L5&AcdID%!M3RASzA zJgv-w?XOw`_h$@yN?#j+tDsDcf|a(i6}ip5P4^&4seb*&`sQT@VqJC>FYI;L2#s`w z#$10n#$12y=3F|@>fBRvnaHTr8_md%v&=f!@_RwkyV91WIyKxgmt{dSyBB>w3ZuY1 zh|3|IEP_2GLeIc`xhvlim>YD|cK5!&=QZLN#2fXB+l>6+P~h!sB_zO@^s3w4>3HGX zhVSq74puXJFsa9kX2|j8;enR}zmviD+h#_UP^`I~&Q?3}R!wkrcZQcgpTzWnSbBCO zro$@6R4U?%lv11^Da8r8AQo6|>)oywtaaQl^g;vQ6L|iqpykEFzz+mY|9>b8B@P_U zu*DW2@MRb{fs0t9e2I;vfXlpiZYr7QoO<$1Q%{~?>d7-oJ$W$kd5pe1n0fyyM-4s& zpZek-A%3r5S9zCa@ZenM-HHKt2`_UbRdbwYN1adPI`i<&aXvBXd@|R01Dg!1jJCsPfzRS% z{aqOOxjG&rl3d9=%Hj~XMn9cR7F7;j$)~Iwl~UGON;#=0ujf-%k4h;^Hl?g7%2#nC zZ{br%rIgj5QqCyKt$fPaqf*L^lv3J?@@78eiK9}=J(*ITQk49tix*zd_?%?sp41oL zfv!EO{}tvhp^rVP{{`me(&A%$ObscVxwgccqn-U5#%=9=9D4}stgSu9^L@m;qZ2ak z6m4B%itnTL5EWauiy2VeF$k(Vrfo=&nSc!2%z&1i5<$yO*)B;?IRTaIat5^Gj1#ot zSoXLCSqX?z26WD;5OmI&uqzTYk$@`pL?5I*;`+xjZ6)qWZ^v;->--6BVVi-R!GCa@ zeX77M_fLF{x-otc{{vsAq;VI$i`OXWtk&P+4y7VG_!(ZOWFWv#@C`~PevUnSlTr!4 zfQN5UD&sM(;0;RS_!HZ(OUc5&*qHB9s^H%^i6*59>~Ovtm@&*Jm@r^|fa3-V{5Qo1 zcqSH0A4%-*-CHaUP5zQdcEt-^u51UotO^;WZ1aty6n6tXjgrpT$S5V<;I=9^ewtIo z22;37iV}(5sji;aE~uh9Rb6edq|9plA&j$+@x?c!e%{ff!PXLsDGMz&)g4`#SYyh` zwDrDe*(oYhF*ULBVy_j)P$m{#;$`$r=Nwa+%+$nEq}QqZ!gxJiL9*mA{DukqHrJ=) z*Vv_0U@Cuw7Q-;cA6h>~o07(_ofhs<(pe~*Ouj6P2rDcOSr|XXEcPjxGP&Y8SRYcM z88C%lLiu(7A;|{gf>g{v?*sZ6ZCI7SiW%4dIjT*-#xQt*&oLw}=2I>MuY6nL$lv7g z0*TN5tMzK~Cwsn`?u>UgJ*uxVmhxlbGz({$*9xz5yw32N=T(0X=Yi3~F#G9oI?bl9 a%KQLt@@bMa;Po9m;HXULyZAnS2>X8=*c>YW literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/user/LoginVo.class b/model/target/classes/com/atguigu/tingshu/vo/user/LoginVo.class new file mode 100644 index 0000000000000000000000000000000000000000..10464c85539301dc61d9e6d726a9c4593629eb09 GIT binary patch literal 2359 zcma)8-ES0C6#w1bnVs!+`$46^T11ed{bW!+gf2y)d=i$wZA0`XUJ-K@u$yqtO>k{2P4b!*?G={N0(^c1t&gw0l3!J?D4M`JHp`?jQf& z{RO}zF6EFy+JcdXiHtz+6}c?!nsh7nh09k|ITXkobzCPrCXgN)p6@^w9TswVbRsXX zyX@6%8CDujrD2DTTM4QSd)c!af%5H=S8?2VPrzKNdae@aE3Ki=g+A4b8m~K#9t~!c zy#}T`PaEo^0Nhey! z<9Q97Q5rSS=G*glL7Q7NpNjma@M0c2v5SyZ8C10}%6+E376ewJ5xS>;5^G@JguBqd$>xD9Oh%GQyay&cuP*y5r zc6q<;$-tIt3U*yBIMSXgS5;jW1v(d0Q1+cAZ7tC8;G>Tpe0BH!r*{N;;`LuQK6!NO z+QYA}k@q;oo|5CL^Nsptx_iWT}O0OjtZEI zPvTA2Tqw(nGjb`($(+47J#$JxOtUw96*OwP@0&2@U~H8Qy*O$*o%0%gS)Fz?P5GqJ z_v-HE_Td*l-T(Qs`?r34bo(1-cf#|+AoS%@oMzCI!I>P+V%owv-A!)^46fY^$6fXo zl^r{Z8|<_!hn{~`;PckjN)%(zv(jCtsbH|=d5evu;>Lb!k*qVkbahF!QGc&Rzj@nQ zLuHjN2t*;iABf z|5s(9;;gZY*Ez*In&KZ{CkVXET_@*P_!$Z?%mcnO8xKa%K_MSNj-#}(ISbC_$Q_8= z5#$(0eXPfEjv9pu*h^(_%{PeSdgJe5eaFKT){Hyb8uJBeW8C$$ad%teeR!2FwC4%V znt;s6=nt^k$Gs)iNaEJn#8kaTJCpAQdKt<7_K;oA3K^4}K=wqCe0P&5|K@DbTXl5g zTbRbp(ch5$5@!15=mjE$_IH`;Qs`TQ7%31j?sbQX+z*mNEF@q)2}ZB31V36m-V z6Pbdkbu#zRcO6{?vyf>j88_)G-BN@LZ!8RN(=g7HWivW#(ELe=;2u&4Pc;XHRat}fth_C?`8b_Lf! literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/user/UserCollectVo.class b/model/target/classes/com/atguigu/tingshu/vo/user/UserCollectVo.class new file mode 100644 index 0000000000000000000000000000000000000000..cf303c12bcff5654e01924445b95b659bee16e67 GIT binary patch literal 4045 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 literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/user/UserListenProcessListVo.class b/model/target/classes/com/atguigu/tingshu/vo/user/UserListenProcessListVo.class new file mode 100644 index 0000000000000000000000000000000000000000..69efc7c46df38377bef2c4c42c8559d6a83ca2fe GIT binary patch literal 6298 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 Q=ry!rkY1-#^cJcA1F7#lnE(I) literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/user/UserListenProcessVo.class b/model/target/classes/com/atguigu/tingshu/vo/user/UserListenProcessVo.class new file mode 100644 index 0000000000000000000000000000000000000000..eff0cd3d909c9540059a71c0d88d5f9213dadc42 GIT binary patch literal 3327 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 HoJI8iP8{_X literal 0 HcmV?d00001 diff --git a/model/target/classes/com/atguigu/tingshu/vo/user/UserUpdateVo.class b/model/target/classes/com/atguigu/tingshu/vo/user/UserUpdateVo.class new file mode 100644 index 0000000000000000000000000000000000000000..27ee3f7f51d42eda1b9110d865d842b2420ac9bd GIT binary patch literal 2250 zcma)7T~ixX7=BK&n=D}i0Sj#eE45Vf0gctFZ35MnmO>5Kk%BXN<00&jEnydTH_Y^( zIQ{^+;X-E=XL{l2O`Y*K_%pn;*5_n5$x<>-XOr{sp7-NFicM+kR{{0)f8CYAczz`h=(%bY}0^{|5n2o@rT}?S2F)^yV8jjuA zbL762p>WK^I9{W$A)R~Qv?a|a3NiZ-X07<8Ql2m|iSq*Ht`*$w$2(Uj#w?r9At}#k7exl#5}ySnuIT;7t=VxI`RH={J|$9jimg>Nshn z3z|0LmFllrm>S9QPmy(s-3V)Oi>t;vHZVg2Fft84cde3e!7EWh1i%Vy#( zhi3cMM&O1SQD?(#dkt&ZR$Pw7d-bYnPUd^Zbpt=}MU=P`>eayUwDC_!|G>ip`o@`o#(XIZFwVYgoE>Of#vDVa$kk3_#91o;jPzjK zlhjd}gt*m85g{;7sm@!695+`7yUf0-OT}r=qZ!p&8N+-y5wp^TBpW{%~=KsKOUVDbIBbf7f?F1LP8dFuBDpS=|UROG)XBa<1 zHm~PXT_x?9v68V8g!NkqG4yz7vgq#;^aM6=jWtd165hpolqI>lh4;DAaGx!7ohuz{ zn8F8KrSKvB&+x-#{DYA+jOUn4Bf*~`p5sEe9O{u#AsL$b=tN}PWJpyIU9q5$#+xNX z8dgm2A=QabA&n|_twS$A9~7x3_=_%d&edFPL0jyQIGw9CNuiM|A0a(|f{R}(`BYU? z2YD?zF%+>pnjTEp_0VesBZ-gr++a+dG~DDWfec|)`A_09`?dslQJs!36ZKLRUvSEutFZE%fe+im5K-h)Pl=^b~IaFJGGYbsg!UU+hqQ3mhyVZp literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..571afd9 --- /dev/null +++ b/pom.xml @@ -0,0 +1,183 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.0.5 + + + + com.atguigu.tingshu + tingshu-parent + pom + 1.0 + + + common + model + service + server-gateway + service-client + + + + 17 + 2022.0.2 + 2022.0.0.0-RC1 + 3.5.3.1 + 8.0.30 + 4.1.0 + 1.2.29 + 2.1.4 + 8.2.0 + 2.10.1 + 2.4.0 + 0.0.3 + 3.20.0 + 23.0 + 2.5.0 + 3.0.4 + 3.1.0 + 3.1.0 + 2.11.0 + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${alibaba.version} + pom + import + + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis-plus.version} + + + + mysql + mysql-connector-java + ${mysql.version} + + + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + ${knife4j.version} + + + + com.alibaba + fastjson + ${fastjson.version} + + + + + com.qcloud + vod_api + ${vod_api.version} + + + + + io.minio + minio + ${minio.version} + + + + + joda-time + joda-time + ${jodatime.version} + + + + + com.xuxueli + xxl-job-core + ${xxl-job.version} + + + + com.github.wxpay + wxpay-sdk + ${wxpay.version} + + + org.redisson + redisson-spring-boot-starter + ${redisson.version} + + + + + com.google.guava + guava + ${guava.version} + + + + + + com.belerweb + pinyin4j + ${pinyin4j.version} + + + + org.springframework.kafka + spring-kafka + ${spring-kafka.version} + + + org.apache.kafka + kafka-clients + ${kafka-clients.version} + + + org.apache.kafka + kafka-streams + ${kafka-streams.version} + + + + commons-io + commons-io + ${commons-io.version} + + + + + + ${project.artifactId} + + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 17 + + + + + + diff --git a/server-gateway/pom.xml b/server-gateway/pom.xml new file mode 100644 index 0000000..c09d741 --- /dev/null +++ b/server-gateway/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + + + tingshu-parent + com.atguigu.tingshu + 1.0 + + 1.0 + server-gateway + + jar + server-gateway + + + + com.atguigu.tingshu + common-util + 1.0 + + + com.atguigu.tingshu + model + 1.0 + + + + org.springframework.cloud + spring-cloud-starter-gateway + + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/server-gateway/src/main/java/com/atguigu/tingshu/ServerGatewayApplication.java b/server-gateway/src/main/java/com/atguigu/tingshu/ServerGatewayApplication.java new file mode 100644 index 0000000..01c4b4c --- /dev/null +++ b/server-gateway/src/main/java/com/atguigu/tingshu/ServerGatewayApplication.java @@ -0,0 +1,17 @@ +package com.atguigu.tingshu; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@SpringBootApplication +@EnableDiscoveryClient +@EnableFeignClients +public class ServerGatewayApplication { + + public static void main(String[] args) { + SpringApplication.run(ServerGatewayApplication.class, args); + } + +} diff --git a/server-gateway/src/main/java/com/atguigu/tingshu/gateway/config/CorsConfig.java b/server-gateway/src/main/java/com/atguigu/tingshu/gateway/config/CorsConfig.java new file mode 100644 index 0000000..1c4824f --- /dev/null +++ b/server-gateway/src/main/java/com/atguigu/tingshu/gateway/config/CorsConfig.java @@ -0,0 +1,37 @@ +package com.atguigu.tingshu.gateway.config; + + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.reactive.CorsWebFilter; +import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource; + +/** + *

+ * 处理跨域 + *

+ * + * @author atguigu + */ +@Configuration +public class CorsConfig { + + @Bean + public CorsWebFilter corsWebFilter(){ + + // cors跨域配置对象 + CorsConfiguration configuration = new CorsConfiguration(); + configuration.addAllowedOriginPattern("*"); + configuration.setAllowCredentials(true); + configuration.addAllowedMethod("*"); + configuration.addAllowedHeader("*"); + + // 配置源对象 + UrlBasedCorsConfigurationSource configurationSource = new UrlBasedCorsConfigurationSource(); + configurationSource.registerCorsConfiguration("/**", configuration); + // cors过滤器对象 + return new CorsWebFilter(configurationSource); + } +} + diff --git a/server-gateway/src/main/java/com/atguigu/tingshu/gateway/filter/AuthGlobalFilter.java b/server-gateway/src/main/java/com/atguigu/tingshu/gateway/filter/AuthGlobalFilter.java new file mode 100644 index 0000000..eb30a27 --- /dev/null +++ b/server-gateway/src/main/java/com/atguigu/tingshu/gateway/filter/AuthGlobalFilter.java @@ -0,0 +1,31 @@ +package com.atguigu.tingshu.gateway.filter; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.core.Ordered; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +/** + *

+ * 全局Filter,统一处理会员登录与外部不允许访问的服务 + *

+ * + */ +@Slf4j +@Component +public class AuthGlobalFilter implements GlobalFilter, Ordered { + + + @Override + public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + return chain.filter(exchange); + } + + @Override + public int getOrder() { + return 0; + } +} diff --git a/server-gateway/src/main/resources/bootstrap.properties b/server-gateway/src/main/resources/bootstrap.properties new file mode 100644 index 0000000..8eaf3eb --- /dev/null +++ b/server-gateway/src/main/resources/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=server-gateway +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/server-gateway/target/classes/bootstrap.properties b/server-gateway/target/classes/bootstrap.properties new file mode 100644 index 0000000..8eaf3eb --- /dev/null +++ b/server-gateway/target/classes/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=server-gateway +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/server-gateway/target/classes/com/atguigu/tingshu/ServerGatewayApplication.class b/server-gateway/target/classes/com/atguigu/tingshu/ServerGatewayApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..5246a53d339951f0286bfb0deffa9dcc2fb50607 GIT binary patch literal 902 zcmb7DO>fgc5Ph4ECQU=qrcfwQDsE|1b#DkMP>BZ0#e9gMaNx9dHqI7jH(IY-`m;EJ zIPe4bQHWVLs6H4ZEP2K=v-4*6z4gyu-+usjiv1QUs5Ve*qmDI(%`cp`Mn--Kr} zatv!vlveJTq1r!~G|*%?jLd=y7iTKYxKlb#=NTVMdoJxu;pBz5e70OBDiTf^-9if+ z4Yb?1feypK*qEnFOIa>h%_C3EM&&cgAEUY zGUUi;CqFwrGI~b4wIWPpVFaapdB{*3nW<#x21?7<*&>woy~?#wN3oJXL|_u8YW=AsTb~$r(q1mc??n+a literal 0 HcmV?d00001 diff --git a/server-gateway/target/classes/com/atguigu/tingshu/gateway/config/CorsConfig.class b/server-gateway/target/classes/com/atguigu/tingshu/gateway/config/CorsConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..ce4049e5ae95d7133f860d8ff2e94cc298983c11 GIT binary patch literal 1523 zcmb7E+foxj5IvIwHpWFlkV^pN;w=|oK@^lAN>W}Pf>@%l@NJR|%i?C&+MN*n4?jd- zz>+FIz>l)*Nm5BLRFtHuXQyYn`^=fs^XvDIp8y`=Ndy4|HH38Zp`Rgo$d9;TbH_Ax ziie^k8TvOY$C8^2!9=p4A5Wx^) z8isXT#R$VtdrQ`JZNVu}JK}a#?Cdj)Cf+AIk~DW@RQ)j>|Bxi89H z9PYYRuOuRvQB2;XyD(D3rP!E_^1#84)!IsN*mg7D{f#;L@y;$P7vH@DHkn$)%|A z&!j>nz78ESgmP|KFbw7`N4%_7io$!ti#B;;dAG#v0{1L6Z#qNrz#=6W`3qIaFbtGB z56-ZbNM7K)Eyfy|Iy#79sdt|43nO_qcxX0ZgFlAny%V)A;2%mPi1F7|>Y0itSiVKv zZ8?rB>-|pDEu34007>yl8oagD$Wq%2}x-Zg-m5S&%>BZ}12B zpz*=WgFnC@WjwpBp@EGWp3Ek5IeWe{-}&a8`SJ7HcL3|STSNv~2e}dkFvu{vFAfCv zMd0zB#=dkd!{C|9rW9(Ifhygeh@@=%-C-1T+T6L6edgHc;ovbX@j1;cb zhP&EG-iaE%3R~p5tpiyFH&B_EpZH6(MevLk!?Npbwl`FYDJ7<%)xjG z=W&5yGU4U#J=o_p?RnB{C1)Nn6g+9WCWeJ_?O3;}FT#-MokUg&7{KF#7{^H_YPX+%g zOX{?3XaA_}Z(%eo2`72IYJXe+GJ0co+6DsM)R zqXQY(3g)S?GW1R35*TLU4x`5{M{9c1Xq=@Tr + + 4.0.0 + + + tingshu-parent + com.atguigu.tingshu + 1.0 + + + + service-album-client + service-user-client + service-account-client + service-order-client + service-search-client + + + service-client + pom + 1.0 + + + + com.atguigu.tingshu + common-util + 1.0 + provided + + + com.atguigu.tingshu + model + 1.0 + + + org.springframework.boot + spring-boot-starter-web + provided + + + + + org.springframework.cloud + spring-cloud-starter-openfeign + provided + + + + diff --git a/service-client/service-account-client/pom.xml b/service-client/service-account-client/pom.xml new file mode 100644 index 0000000..76e231b --- /dev/null +++ b/service-client/service-account-client/pom.xml @@ -0,0 +1,15 @@ + + + + service-client + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-account-client + 1.0 + jar + + diff --git a/service-client/service-account-client/src/main/java/com/atguigu/tingshu/account/AccountFeignClient.java b/service-client/service-account-client/src/main/java/com/atguigu/tingshu/account/AccountFeignClient.java new file mode 100644 index 0000000..68c1f42 --- /dev/null +++ b/service-client/service-account-client/src/main/java/com/atguigu/tingshu/account/AccountFeignClient.java @@ -0,0 +1,16 @@ +package com.atguigu.tingshu.account; + +import com.atguigu.tingshu.account.impl.AccountDegradeFeignClient; +import org.springframework.cloud.openfeign.FeignClient; + +/** + *

+ * 账号模块远程调用API接口 + *

+ * + * @author atguigu + */ +@FeignClient(value = "service-account", fallback = AccountDegradeFeignClient.class) +public interface AccountFeignClient { + +} diff --git a/service-client/service-account-client/src/main/java/com/atguigu/tingshu/account/impl/AccountDegradeFeignClient.java b/service-client/service-account-client/src/main/java/com/atguigu/tingshu/account/impl/AccountDegradeFeignClient.java new file mode 100644 index 0000000..2c7217f --- /dev/null +++ b/service-client/service-account-client/src/main/java/com/atguigu/tingshu/account/impl/AccountDegradeFeignClient.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.account.impl; + + +import com.atguigu.tingshu.account.AccountFeignClient; +import org.springframework.stereotype.Component; + +@Component +public class AccountDegradeFeignClient implements AccountFeignClient { + +} diff --git a/service-client/service-account-client/target/classes/com/atguigu/tingshu/account/AccountFeignClient.class b/service-client/service-account-client/target/classes/com/atguigu/tingshu/account/AccountFeignClient.class new file mode 100644 index 0000000000000000000000000000000000000000..887c9e00a41bb0f0a25da975baf92b41ff57ebf7 GIT binary patch literal 347 zcmaJ-%Sr=55bTa78>3=w;zyXlvw8?hP5~i;_ufhG*vah7GLQA&Joo{AlsNGL0l_|W zK{wS^)$bp#Zvb!$rxgqkX4&Wg15*(Ejq#s!OUcUIV?3Jwvb8|q0} zaz;JW8`cS7^5}EWyb#L>=YM R=ZHRnAJwPZFiJJa^6~O5$BaxLW#PRO~`A(FAJw z#fPoZ*5|eI9lK`dLhX6EMi};Fb5T5t9D31w`Qsd6+>o_3=`F&|^1qDIcJ?>uJ)1yl h-q#o*ARLs3?P>tSuRemR;IwSUWp)%{0>>IoJ^=`nYEb|H literal 0 HcmV?d00001 diff --git a/service-client/service-account-client/target/classes/com/atguigu/tingshu/account/impl/AccountDegradeFeignClient.class b/service-client/service-account-client/target/classes/com/atguigu/tingshu/account/impl/AccountDegradeFeignClient.class new file mode 100644 index 0000000000000000000000000000000000000000..dd71bc7f4837f925b751ed33246354858db0ff85 GIT binary patch literal 505 zcmaJ;O-}+b5Pjuq5m6Amcro#&9OzxpgkU&rG*QF7EOi;&ZArJQ@n?B5@!${eM;T{V z4qhZpUi)VHGBaHIHx$5o=luAbE%@p=Eh4(*NGhel4~71wa`;dv6&>KjStWg7;MvTq<=I5 zwTWG5flf$9-{k3By9YH-IMNGkq>`C(RPar(=9iQSjKXbYwzoMHXx-b~MS4m_os)kD z8We^J9N+Qmlwg~Yirn@ zAx;tSLIierJAw}{g>jdeEICl`zeBunpn^7Ikp`OBV{Di2I`+{i^W72;(Br%KcL@9d D>?DfY literal 0 HcmV?d00001 diff --git a/service-client/service-album-client/pom.xml b/service-client/service-album-client/pom.xml new file mode 100644 index 0000000..b50e93b --- /dev/null +++ b/service-client/service-album-client/pom.xml @@ -0,0 +1,15 @@ + + + + service-client + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-album-client + 1.0 + jar + + diff --git a/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/AlbumFeignClient.java b/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/AlbumFeignClient.java new file mode 100644 index 0000000..e08a954 --- /dev/null +++ b/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/AlbumFeignClient.java @@ -0,0 +1,16 @@ +package com.atguigu.tingshu.album; + +import com.atguigu.tingshu.album.impl.AlbumDegradeFeignClient; +import org.springframework.cloud.openfeign.FeignClient; + +/** + *

+ * 专辑模块远程调用Feign接口 + *

+ * + * @author atguigu + */ +@FeignClient(value = "service-album", fallback = AlbumDegradeFeignClient.class) +public interface AlbumFeignClient { + +} diff --git a/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.java b/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.java new file mode 100644 index 0000000..2ca1666 --- /dev/null +++ b/service-client/service-album-client/src/main/java/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.album.impl; + + +import com.atguigu.tingshu.album.AlbumFeignClient; +import org.springframework.stereotype.Component; + +@Component +public class AlbumDegradeFeignClient implements AlbumFeignClient { + + +} diff --git a/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/AlbumFeignClient.class b/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/AlbumFeignClient.class new file mode 100644 index 0000000000000000000000000000000000000000..ed1708727756408e65fba96bccc7a81a72106fa2 GIT binary patch literal 335 zcmZ`#O-lno3{9%-)@q>_5B>!~2XBISC`wNSLBV@=njO>5&Mfn>{x=W)0DqJ?TQ5a0 zhZjhAdGF=x`{NS;?qOcR2;oxuR#7rpOjb#piEmkvt#hlE1Fl$%d$7VTRd9^3*iui* zk~8Y5-m*>zvlpL(=9O4RIRDGK9ta2*&)Fqu`BkFSmY2@?L`l4h2sdjVjEY?-@=c(Y z-+kCAZGGM--?3{359+|l9m2RLn~UB&a_B|#)!sA0v>|J2(mRCP_5azV?d)&BM>c^r he0Y6=fN)fvG}H*jdz?U3`l4*6Wp)x_2B#X%egMrYWgP$j literal 0 HcmV?d00001 diff --git a/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.class b/service-client/service-album-client/target/classes/com/atguigu/tingshu/album/impl/AlbumDegradeFeignClient.class new file mode 100644 index 0000000000000000000000000000000000000000..912da49544a6c14463fe788ab36e805bd5a511ff GIT binary patch literal 491 zcmaJ;O-sW-5PjPZQ){)gdJ(*M(;nQL2vwm}dI}0Ey>HSroto^1%|`KOc@jMM1N>3q zBzW*rS$I3|%?$JP_5JY);1c^?G|&vt>Yj$lGY8V=u6AL5BR5K=b%y z9-t#|7TZiJpOlo8(vwMwWhqq}m6@b0PvxXCuXWVK0sGsv_7{^`x7tF zn%adH=!azVO_@d7J*X&UWf%d@wVc{4w}y8z z#t{NOfxsr;L-6A>Fm5rEH3! + + + service-client + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-order-client + 1.0 + jar + + diff --git a/service-client/service-order-client/src/main/java/com/atguigu/tingshu/order/client/OrderFeignClient.java b/service-client/service-order-client/src/main/java/com/atguigu/tingshu/order/client/OrderFeignClient.java new file mode 100644 index 0000000..9fa7ea4 --- /dev/null +++ b/service-client/service-order-client/src/main/java/com/atguigu/tingshu/order/client/OrderFeignClient.java @@ -0,0 +1,17 @@ +package com.atguigu.tingshu.order.client; + +import com.atguigu.tingshu.order.client.impl.OrderDegradeFeignClient; +import org.springframework.cloud.openfeign.FeignClient; + +/** + *

+ * 订单模块远程调用API接口 + *

+ * + * @author atguigu + */ +@FeignClient(value = "service-order", fallback = OrderDegradeFeignClient.class) +public interface OrderFeignClient { + + +} diff --git a/service-client/service-order-client/src/main/java/com/atguigu/tingshu/order/client/impl/OrderDegradeFeignClient.java b/service-client/service-order-client/src/main/java/com/atguigu/tingshu/order/client/impl/OrderDegradeFeignClient.java new file mode 100644 index 0000000..7025aa2 --- /dev/null +++ b/service-client/service-order-client/src/main/java/com/atguigu/tingshu/order/client/impl/OrderDegradeFeignClient.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.order.client.impl; + + +import com.atguigu.tingshu.order.client.OrderFeignClient; +import org.springframework.stereotype.Component; + +@Component +public class OrderDegradeFeignClient implements OrderFeignClient { + +} diff --git a/service-client/service-order-client/target/classes/com/atguigu/tingshu/order/client/OrderFeignClient.class b/service-client/service-order-client/target/classes/com/atguigu/tingshu/order/client/OrderFeignClient.class new file mode 100644 index 0000000000000000000000000000000000000000..9093347d14f44388dcf5930eb1f74dcebb83cb6b GIT binary patch literal 349 zcmaiw!A`?442J&3i7NiwoC-CL4AR1~DPOfJgp(5#7#dm4oTrvj_J z>Xo$08M!U@q@%!M=Tp$MW=jH>e_c0&LE!2oxyTK@a>u2mN9TN0k-h6O%EkvHyEbHs zI;e);eK=$apDO8Fa`nIAmBfx52gJ`}LSoiK_Zn znLvGP79`LOS<_9C&dJ`ZdE%LVXd;!&l;tx1A?t3*xxi((w$p!NhXU<8Q`m?mT(&y= z<5Q=lZvqFmg?60MjC1x1_z|Tcs(+^4b?9dxUFufkpQ{a)VN G1HJ)@D2+7$ literal 0 HcmV?d00001 diff --git a/service-client/service-search-client/pom.xml b/service-client/service-search-client/pom.xml new file mode 100644 index 0000000..e6b5c0e --- /dev/null +++ b/service-client/service-search-client/pom.xml @@ -0,0 +1,20 @@ + + + + service-client + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-search-client + + + 8 + 8 + UTF-8 + + + diff --git a/service-client/service-search-client/src/main/java/com/atguigu/tingshu/search/client/SearchFeignClient.java b/service-client/service-search-client/src/main/java/com/atguigu/tingshu/search/client/SearchFeignClient.java new file mode 100644 index 0000000..f757729 --- /dev/null +++ b/service-client/service-search-client/src/main/java/com/atguigu/tingshu/search/client/SearchFeignClient.java @@ -0,0 +1,17 @@ +package com.atguigu.tingshu.search.client; + +import com.atguigu.tingshu.search.client.impl.SearchDegradeFeignClient; +import org.springframework.cloud.openfeign.FeignClient; + +/** + *

+ * 搜索模块远程调用API接口 + *

+ * + * @author atguigu + */ +@FeignClient(value = "service-search", fallback = SearchDegradeFeignClient.class) +public interface SearchFeignClient { + + +} diff --git a/service-client/service-search-client/src/main/java/com/atguigu/tingshu/search/client/impl/SearchDegradeFeignClient.java b/service-client/service-search-client/src/main/java/com/atguigu/tingshu/search/client/impl/SearchDegradeFeignClient.java new file mode 100644 index 0000000..7f19eb8 --- /dev/null +++ b/service-client/service-search-client/src/main/java/com/atguigu/tingshu/search/client/impl/SearchDegradeFeignClient.java @@ -0,0 +1,15 @@ +package com.atguigu.tingshu.search.client.impl; + +import com.atguigu.tingshu.search.client.SearchFeignClient; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author: atguigu + * @create: 2023-12-05 22:23 + */ + +@Slf4j +@Component +public class SearchDegradeFeignClient implements SearchFeignClient { +} diff --git a/service-client/service-search-client/target/classes/com/atguigu/tingshu/search/client/SearchFeignClient.class b/service-client/service-search-client/target/classes/com/atguigu/tingshu/search/client/SearchFeignClient.class new file mode 100644 index 0000000000000000000000000000000000000000..996dbd4081977747bfe7a7614901fcea83b9a55b GIT binary patch literal 355 zcmaiw%SuB*42F|xFV+iP2|k1l;!<1`rK^Hq!F|p&XPS1-%waCacXQzb_)y}U>Z0Jn zEE4jEpM1&Z*ZT(mJiz%F1_*cBH;R(UVzNr&Ox$D@nS$OZZG~M@t9`d%G464%jNuqz zwxy1gC1=!gwPl?UrYoO==7m^Bxcps1sma=k^bTRZ{Qpd8TKjwJ l6PrM5KHM`xKsYLo>tg`JeICKM)LEHKigprV3a1**z5%#aZ0i63 literal 0 HcmV?d00001 diff --git a/service-client/service-search-client/target/classes/com/atguigu/tingshu/search/client/impl/SearchDegradeFeignClient.class b/service-client/service-search-client/target/classes/com/atguigu/tingshu/search/client/impl/SearchDegradeFeignClient.class new file mode 100644 index 0000000000000000000000000000000000000000..dbdcbb321a2d40f9676a668a1f1f8c69b7276023 GIT binary patch literal 713 zcmah{!A=xG5Ph{Q%;a~zB=mXpqC1lN>CYp%Zd+*Tn_BzwO>FI&+S%d?| zgCF2W8EbYR5RG!^s?@8ls@Jdj=dbTS0KCJS4jPz?(2OyU1;X+~o=K5OtHr0$M5TeS zaA2$n?+J5T+rtPg!eQ!iA%iZBE=4d_7voYCO8Rsx(#$9ugvqCwIG#Ztl=kvO4V2Ng zKg)K|!J`OqjK^3ctU0emk)7^OMB=noejwA}`~{({Rj47t+pXk|TR)RU(c4b`tn9TB zVL8SVbeV7FG@<+Vr3lXmdk;UN=6{bkq1ksQim;Rzt3Hxf+_nFtHz z%e;1KX{Mf6cC4}ziuu>DUExTu zC-(C@*PzQ;dX;UJ1{Sf#Hm)z=Io3I9aiiPf%~=L$ccX7;Uty_gK)7oV^R$ J?5o1pz;6;*xKscD literal 0 HcmV?d00001 diff --git a/service-client/service-user-client/pom.xml b/service-client/service-user-client/pom.xml new file mode 100644 index 0000000..900a7b7 --- /dev/null +++ b/service-client/service-user-client/pom.xml @@ -0,0 +1,15 @@ + + + + service-client + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-user-client + 1.0 + jar + + diff --git a/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/UserFeignClient.java b/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/UserFeignClient.java new file mode 100644 index 0000000..bf0be8f --- /dev/null +++ b/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/UserFeignClient.java @@ -0,0 +1,16 @@ +package com.atguigu.tingshu.user.client; + +import com.atguigu.tingshu.user.client.impl.UserDegradeFeignClient; +import org.springframework.cloud.openfeign.FeignClient; + +/** + *

+ * 用户模块远程调用API接口 + *

+ * + * @author atguigu + */ +@FeignClient(value = "service-user", fallback = UserDegradeFeignClient.class) +public interface UserFeignClient { + +} diff --git a/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.java b/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.java new file mode 100644 index 0000000..72663d6 --- /dev/null +++ b/service-client/service-user-client/src/main/java/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.user.client.impl; + + +import com.atguigu.tingshu.user.client.UserFeignClient; +import org.springframework.stereotype.Component; + +@Component +public class UserDegradeFeignClient implements UserFeignClient { + +} diff --git a/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/UserFeignClient.class b/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/UserFeignClient.class new file mode 100644 index 0000000000000000000000000000000000000000..2aedbcd3cc18b29bed8da515804845e219d0c5bf GIT binary patch literal 343 zcmaiwy-ou$41n!Id!-bq0}BrU7BlLAK%FWffnd+2zTh^Oobq$L8v_r(Lm_fERV;Y$ zzva*V{`vd@fHhoHFhL;gTT;nnF`1G$6W=rC$bqyKc8Ok#zhN=%VT>y{MOf`sugEHA z=&9bbP6&$^pM&O&SVp+~GjucbBV0Xam!#!4iBem>cg`o3#Jh-ayY<0P>_S0kf@=B0 zheKiTc}Kou*9-`B1agNk?Ul`C-LfF|qWOB@MwmCs+FI!Y!g~APdD3=vyz!AuP&+=} eFhf8%DbE^Y0@G2?pelA%D)W*%i?D!m4a;Bl_Gpy= literal 0 HcmV?d00001 diff --git a/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.class b/service-client/service-user-client/target/classes/com/atguigu/tingshu/user/client/impl/UserDegradeFeignClient.class new file mode 100644 index 0000000000000000000000000000000000000000..9e117d974f314c80c92b6718a0a260ee8031b847 GIT binary patch literal 505 zcmah`%TB{E5FGcFQVK1F3*y8LdcYr0iiC=Kia_GgyPGblOJYZkQ^aR+LgK&&@KK0O z#DN2%vNZP2dcEV>&#(6n0An0 zB+!`H1qt**ZRom4=j86yJYi-K+DIic<#ZYUkPW}oxxhHw)aM_eBZ1DHEnGxXT{b%U z`#)!;VFHJ@h4DJ2na(xqxHQIk<+U{|V;EW&%RF=J)T2`=JzMuAb5D+}f5}KrY?@ia z#*J`{fCnP5#nTbIcqok99LXvMn!`7US0-xcGL~tejUC2rb#7u8y(-_Ya1R6C%X|C4 EH@=&SqW}N^ literal 0 HcmV?d00001 diff --git a/service/pom.xml b/service/pom.xml new file mode 100644 index 0000000..563fc12 --- /dev/null +++ b/service/pom.xml @@ -0,0 +1,63 @@ + + + + tingshu-parent + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service + pom + + + service-album + service-search + service-account + service-dispatch + service-order + service-payment + service-user + + + + + com.atguigu.tingshu + service-util + 1.0 + + + com.atguigu.tingshu + service-account-client + 1.0 + + + com.atguigu.tingshu + service-album-client + 1.0 + + + com.atguigu.tingshu + service-order-client + 1.0 + + + com.atguigu.tingshu + service-user-client + 1.0 + + + org.springframework.boot + spring-boot-starter-test + test + + + com.atguigu.tingshu + rabbit-util + 1.0 + + + + diff --git a/service/service-account/pom.xml b/service/service-account/pom.xml new file mode 100644 index 0000000..543e273 --- /dev/null +++ b/service/service-account/pom.xml @@ -0,0 +1,37 @@ + + + + service + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-account + jar + 1.0 + + + true + + + + + com.atguigu.tingshu + rabbit-util + 1.0 + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/service/service-account/src/main/java/com/atguigu/tingshu/ServiceAccountApplication.java b/service/service-account/src/main/java/com/atguigu/tingshu/ServiceAccountApplication.java new file mode 100644 index 0000000..5923361 --- /dev/null +++ b/service/service-account/src/main/java/com/atguigu/tingshu/ServiceAccountApplication.java @@ -0,0 +1,16 @@ +package com.atguigu.tingshu; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@SpringBootApplication +@EnableDiscoveryClient +@EnableFeignClients +public class ServiceAccountApplication { + + public static void main(String[] args) { + SpringApplication.run(ServiceAccountApplication.class, args); + } +} diff --git a/service/service-account/src/main/java/com/atguigu/tingshu/account/api/RechargeInfoApiController.java b/service/service-account/src/main/java/com/atguigu/tingshu/account/api/RechargeInfoApiController.java new file mode 100644 index 0000000..228bb98 --- /dev/null +++ b/service/service-account/src/main/java/com/atguigu/tingshu/account/api/RechargeInfoApiController.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.account.api; + +import com.atguigu.tingshu.account.service.RechargeInfoService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "充值管理") +@RestController +@RequestMapping("api/account") +@SuppressWarnings({"all"}) +public class RechargeInfoApiController { + + @Autowired + private RechargeInfoService rechargeInfoService; + +} + diff --git a/service/service-account/src/main/java/com/atguigu/tingshu/account/api/UserAccountApiController.java b/service/service-account/src/main/java/com/atguigu/tingshu/account/api/UserAccountApiController.java new file mode 100644 index 0000000..ba52aea --- /dev/null +++ b/service/service-account/src/main/java/com/atguigu/tingshu/account/api/UserAccountApiController.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.account.api; + +import com.atguigu.tingshu.account.service.UserAccountService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "用户账户管理") +@RestController +@RequestMapping("api/account") +@SuppressWarnings({"all"}) +public class UserAccountApiController { + + @Autowired + private UserAccountService userAccountService; + +} + diff --git a/service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/RechargeInfoMapper.java b/service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/RechargeInfoMapper.java new file mode 100644 index 0000000..442d5fc --- /dev/null +++ b/service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/RechargeInfoMapper.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.account.mapper; + +import com.atguigu.tingshu.model.account.RechargeInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface RechargeInfoMapper extends BaseMapper { + + +} diff --git a/service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/UserAccountDetailMapper.java b/service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/UserAccountDetailMapper.java new file mode 100644 index 0000000..c0138dd --- /dev/null +++ b/service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/UserAccountDetailMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.account.mapper; + +import com.atguigu.tingshu.model.account.UserAccountDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserAccountDetailMapper extends BaseMapper { + +} diff --git a/service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/UserAccountMapper.java b/service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/UserAccountMapper.java new file mode 100644 index 0000000..c98dbcb --- /dev/null +++ b/service/service-account/src/main/java/com/atguigu/tingshu/account/mapper/UserAccountMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.account.mapper; + +import com.atguigu.tingshu.model.account.UserAccount; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserAccountMapper extends BaseMapper { + +} diff --git a/service/service-account/src/main/java/com/atguigu/tingshu/account/service/RechargeInfoService.java b/service/service-account/src/main/java/com/atguigu/tingshu/account/service/RechargeInfoService.java new file mode 100644 index 0000000..d594cd0 --- /dev/null +++ b/service/service-account/src/main/java/com/atguigu/tingshu/account/service/RechargeInfoService.java @@ -0,0 +1,8 @@ +package com.atguigu.tingshu.account.service; + +import com.atguigu.tingshu.model.account.RechargeInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface RechargeInfoService extends IService { + +} diff --git a/service/service-account/src/main/java/com/atguigu/tingshu/account/service/UserAccountService.java b/service/service-account/src/main/java/com/atguigu/tingshu/account/service/UserAccountService.java new file mode 100644 index 0000000..6e5216a --- /dev/null +++ b/service/service-account/src/main/java/com/atguigu/tingshu/account/service/UserAccountService.java @@ -0,0 +1,9 @@ +package com.atguigu.tingshu.account.service; + +import com.atguigu.tingshu.model.account.UserAccount; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface UserAccountService extends IService { + + +} diff --git a/service/service-account/src/main/java/com/atguigu/tingshu/account/service/impl/RechargeInfoServiceImpl.java b/service/service-account/src/main/java/com/atguigu/tingshu/account/service/impl/RechargeInfoServiceImpl.java new file mode 100644 index 0000000..8a42dcc --- /dev/null +++ b/service/service-account/src/main/java/com/atguigu/tingshu/account/service/impl/RechargeInfoServiceImpl.java @@ -0,0 +1,17 @@ +package com.atguigu.tingshu.account.service.impl; + +import com.atguigu.tingshu.account.mapper.RechargeInfoMapper; +import com.atguigu.tingshu.account.service.RechargeInfoService; +import com.atguigu.tingshu.model.account.RechargeInfo; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +@SuppressWarnings({"all"}) +public class RechargeInfoServiceImpl extends ServiceImpl implements RechargeInfoService { + + @Autowired + private RechargeInfoMapper rechargeInfoMapper; + +} diff --git a/service/service-account/src/main/java/com/atguigu/tingshu/account/service/impl/UserAccountServiceImpl.java b/service/service-account/src/main/java/com/atguigu/tingshu/account/service/impl/UserAccountServiceImpl.java new file mode 100644 index 0000000..0ba782b --- /dev/null +++ b/service/service-account/src/main/java/com/atguigu/tingshu/account/service/impl/UserAccountServiceImpl.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.account.service.impl; + +import com.atguigu.tingshu.account.mapper.UserAccountMapper; +import com.atguigu.tingshu.account.service.UserAccountService; +import com.atguigu.tingshu.model.account.UserAccount; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@SuppressWarnings({"all"}) +public class UserAccountServiceImpl extends ServiceImpl implements UserAccountService { + + @Autowired + private UserAccountMapper userAccountMapper; + +} diff --git a/service/service-account/src/main/resources/bootstrap.properties b/service/service-account/src/main/resources/bootstrap.properties new file mode 100644 index 0000000..f144ee9 --- /dev/null +++ b/service/service-account/src/main/resources/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-account +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-account/src/main/resources/logback-spring.xml b/service/service-account/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..d970337 --- /dev/null +++ b/service/service-account/src/main/resources/logback-spring.xml @@ -0,0 +1,65 @@ + + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-account/src/main/resources/mapper/UserAccountDetailMapper.xml b/service/service-account/src/main/resources/mapper/UserAccountDetailMapper.xml new file mode 100644 index 0000000..7c752b7 --- /dev/null +++ b/service/service-account/src/main/resources/mapper/UserAccountDetailMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + id,user_id,title,trade_type,amount,order_no,create_time,update_time,is_deleted + + + + diff --git a/service/service-account/src/main/resources/mapper/UserAccountMapper.xml b/service/service-account/src/main/resources/mapper/UserAccountMapper.xml new file mode 100644 index 0000000..a52f377 --- /dev/null +++ b/service/service-account/src/main/resources/mapper/UserAccountMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + id,user_id,total_amount,lock_amount,available_amount,total_income_amount,total_pay_amount,create_time,update_time,is_deleted + + + + diff --git a/service/service-account/target/classes/bootstrap.properties b/service/service-account/target/classes/bootstrap.properties new file mode 100644 index 0000000..f144ee9 --- /dev/null +++ b/service/service-account/target/classes/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-account +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-account/target/classes/com/atguigu/tingshu/ServiceAccountApplication.class b/service/service-account/target/classes/com/atguigu/tingshu/ServiceAccountApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..e17998ff7d12aa59f7f13ec35328ce6e61239a3b GIT binary patch literal 905 zcmb7DO>Yx15Pi-^H%&uQQYe&gLer7HuvLH~cbvh-~2W zQ=Lh>QtmTdy8A4AUvy>z+($%rIXo4xaGS|?DB|Q9 z`Fj5=*q5TbOE#2&9b6^bx>$fN_9)uMHC!i<(EO+X0~+0^{|(#kF8jle1GH&qr-aeK fK5kI{CcSl%nOp@2g}sH_11MFzG6Ud7hPBjH<73?1O#DJNWyGf-R`NWsn}E1R#ng7&P`nV z3;uxMN)Yh_{Ev{o5N~$|9U+;`y>%bw+*kej{rx9^r`T>|3AGmL9W>AsSUaW($&9R) zuajeyMuFxNV@-S}P}{lRZ{do-34Pizvf++JCe&=$^pV0hcvn)i=Q;nd(~WB1PkD5ZLWG zuVu(RH#zh)R#WHS%0!V3a!6@({=KBX0NE{~n;NeMOk3Y~1MY0KXRLZvj1%RLi0K73 zdM>4`Pu`UF%vp~k!}azS&arScT(W)W3ZJUyrYv*!(j`7DZzQnOGfsvnX|24RJd%#W z+$=#x(m@`PE@!bkx#D7O*!i)EMG4x%* z=$Dk|d;^9yCX^N2%yPMn*{8uhwD=zag5_1TSueBIWZkK}46Cdawj_H6>&Am`5MTMR tgljCzWMBoWEIa23Si^c1->BqfMY@d|u50R-arK0`2!9h>0AH+ literal 0 HcmV?d00001 diff --git a/service/service-account/target/classes/com/atguigu/tingshu/account/api/UserAccountApiController.class b/service/service-account/target/classes/com/atguigu/tingshu/account/api/UserAccountApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..55e36dd6d2626e6a09225fef08e1d6f6e1663381 GIT binary patch literal 792 zcmaJJK94dNwPk*FMylHi7F?)Bzo!u9TDAGY{`C?y3y zK!d1|kdPu#@Bw@X<|`0$Z!F>>aWk{?IA>n_>+g@B0PqYp+OPn%7Sub?fTn_#LmCn0 zWHNk}9O^VEXg+1b;kkm^=DmIkE-84F+96WNB4-f;o6H|Xq%^hB1f+uTwb!nDYIh6X zvL-m2=h`V)jc1`D}>^aGG*BBcpur&q@O^5XL7}yS6HLlfHmQ=j3Ts(1ReX6k6zgHXXAmn`Fr!!B_L(1Ncy4x{F$R z^N>u)m-+F1lh3dB4*I|%p($Tkk?WE1<0o&?;|*dNnfXMlIu9@rvTp_ CKZl+G literal 0 HcmV?d00001 diff --git a/service/service-account/target/classes/com/atguigu/tingshu/account/mapper/UserAccountDetailMapper.class b/service/service-account/target/classes/com/atguigu/tingshu/account/mapper/UserAccountDetailMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..6c54e948f81d6100d9742aacfc2944d728b76fef GIT binary patch literal 443 zcmb7>O-lnY5QZmJyS6HL6+C-%?yd?I@w6gX^gf#oX-YnpdS8!CpNWg{k7AdK$RmP;9ipz{7rOz&*rLNA_orKDqLax8_wKinINJfH+j=2|&QIk14Y zW)oUB{{&w41Dm?6U$FUAweleg zIiHGB@1lUS#s`Jekz6wB-T&q@O^5XL7}yS6HL5_|!V&c)lRP!FCef<^DM>5!&uk|loxU(JIL;6sViUDVQ> zhh)Nh$&c@we15%u0Kg5LR4`I-rGrDtrdU%jTW`{;AZZ3?yaG0Q`eRxLgXLf9VH%63MLC{JmnHuL7wkI z>-j%{*ZqUtL@q43{mr!%sJ^WgOc$X<&G)ty4`*BI;PG-}O2PS)%)~l=vB@?q&%6&= y(gmLsT+Bl>NFC`FqwPZ@{awHTRLg)A?8!QiF911JvX9^pCVid4k<_v1#{l1#<%ZY* literal 0 HcmV?d00001 diff --git a/service/service-account/target/classes/com/atguigu/tingshu/account/service/RechargeInfoService.class b/service/service-account/target/classes/com/atguigu/tingshu/account/service/RechargeInfoService.class new file mode 100644 index 0000000000000000000000000000000000000000..658e376758e410ced3ee7f7da7b3538dd357d544 GIT binary patch literal 358 zcmbV|!D<3A5QhKQ>Q=pY>{B?09(vfe$ATaT-6xoh(-_%J$|jNeY94$5A4$iUi^pJJ+ J3B#_B{s6rQbAtc? literal 0 HcmV?d00001 diff --git a/service/service-account/target/classes/com/atguigu/tingshu/account/service/UserAccountService.class b/service/service-account/target/classes/com/atguigu/tingshu/account/service/UserAccountService.class new file mode 100644 index 0000000000000000000000000000000000000000..951c44d1c1c9483f8b1e2899b9e2fb142c0311bb GIT binary patch literal 355 zcmbV|O>V+45QU#9Z3=9<;})F-5}VLUY${bkVi9ow$5_TFu~BSC>D9X602~Tok_aJ| zEapcunosY|>HL2L@P$c&0mEF_lDJnvt3X~G<#vI%5H=W3PFA%Rk~XnfcC)M-B^WY% z?0L0bR65kKRhVmBr2BowM{iWf*5RR6_pfBI=mlZF`}gS7p&8!%K|U_())Yq|NUb HwRL;}X|Zy> literal 0 HcmV?d00001 diff --git a/service/service-account/target/classes/com/atguigu/tingshu/account/service/impl/RechargeInfoServiceImpl.class b/service/service-account/target/classes/com/atguigu/tingshu/account/service/impl/RechargeInfoServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..fffd8303f9a4516a81070a76bd7422d61913446c GIT binary patch literal 969 zcmbW0&2AGh5Xb*c(gZ@Gw0u_L!mV(?N07Eu6eOfdfkT6G_iiQ|!>+yZN83CWCnOF$ z058FtAZF7LZP5}Tv|5kHn)!KVJoEkM*KYt`VtW+DA#1$Ai;;D?^p)c*XHJ!LZrvxDk}_V-R2HmTNVRs5$1&J*?P$u_ z-Wxk5ft`^y^gfm;xeto*9RA2=s+cIJYkhUt3vExSX{%ewP!h7v_7W~$!8%R zKs@jPd;{Nt7{_U9nh+sgc6MfV&Rq7)k6+)u19*Xlbrevnpwz$$$_$RH13nNsP(z*Y zU_203#gU)HTz<4NjFk>~EX}EMC09Y@^IoRBqB}#mtwLoF7>cd^eg##AmnojGUZT8& zTNQfoal(b`>Lj#(0=*~LPUgsA)=|f51&s!-V2xo@8;{5S=;;aXYR{AANVry;F+s=MfH%Ty%=A9t;$uwNy_k~fZJ~fu?v7&sP zrA<)N7X-<*lKWRmTy4AllrFWN@m7Jh1MrIFf>BYD1i4)%!31u$Hrb30`; z?REh-aFcACbT5;~R~~->`!sQH)0w(~HSEyY$R6M}?vPf+-C6M7 k!~@itm9MCM#(E0CDEm3UDvH=8t$=$}Un=j + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-account/target/classes/mapper/UserAccountDetailMapper.xml b/service/service-account/target/classes/mapper/UserAccountDetailMapper.xml new file mode 100644 index 0000000..7c752b7 --- /dev/null +++ b/service/service-account/target/classes/mapper/UserAccountDetailMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + id,user_id,title,trade_type,amount,order_no,create_time,update_time,is_deleted + + + + diff --git a/service/service-account/target/classes/mapper/UserAccountMapper.xml b/service/service-account/target/classes/mapper/UserAccountMapper.xml new file mode 100644 index 0000000..a52f377 --- /dev/null +++ b/service/service-account/target/classes/mapper/UserAccountMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + id,user_id,total_amount,lock_amount,available_amount,total_income_amount,total_pay_amount,create_time,update_time,is_deleted + + + + diff --git a/service/service-album/pom.xml b/service/service-album/pom.xml new file mode 100644 index 0000000..5dff7c5 --- /dev/null +++ b/service/service-album/pom.xml @@ -0,0 +1,60 @@ + + + + service + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-album + jar + 1.0 + + + true + + + + + io.minio + minio + + + + com.qcloud + vod_api + + + + org.slf4j + slf4j-log4j12 + + + + + + com.auth0 + java-jwt + 4.3.0 + + + + com.atguigu.tingshu + rabbit-util + 1.0 + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/ServiceAlbumApplication.java b/service/service-album/src/main/java/com/atguigu/tingshu/ServiceAlbumApplication.java new file mode 100644 index 0000000..eb01876 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/ServiceAlbumApplication.java @@ -0,0 +1,17 @@ +package com.atguigu.tingshu; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@SpringBootApplication +@EnableDiscoveryClient +@EnableFeignClients +public class ServiceAlbumApplication { + + public static void main(String[] args) { + SpringApplication.run(ServiceAlbumApplication.class, args); + } + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/api/AlbumInfoApiController.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/AlbumInfoApiController.java new file mode 100644 index 0000000..d1a2406 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/AlbumInfoApiController.java @@ -0,0 +1,20 @@ +package com.atguigu.tingshu.album.api; + +import com.atguigu.tingshu.album.service.AlbumInfoService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "专辑管理") +@RestController +@RequestMapping("api/album") +@SuppressWarnings({"all"}) +public class AlbumInfoApiController { + + @Autowired + private AlbumInfoService albumInfoService; + + +} + diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/api/BaseCategoryApiController.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/BaseCategoryApiController.java new file mode 100644 index 0000000..9b8072a --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/BaseCategoryApiController.java @@ -0,0 +1,42 @@ +package com.atguigu.tingshu.album.api; + +import com.alibaba.fastjson.JSONObject; +import com.atguigu.tingshu.album.service.BaseCategoryService; +import com.atguigu.tingshu.common.result.Result; +import com.atguigu.tingshu.model.album.BaseAttribute; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +@Tag(name = "分类管理") +@RestController +@RequestMapping(value="/api/album") +@SuppressWarnings({"all"}) +public class BaseCategoryApiController { + + @Autowired + private BaseCategoryService baseCategoryService; + + @Operation(summary = "查询所有分类(1、2、3级分类)") + @GetMapping("/category/getBaseCategoryList") + public Result> getBaseCategoryList(){ + List list=baseCategoryService.getBaseCategoryList(); + return Result.ok(list); + } + + @Operation(summary = "根据一级分类Id获取分类属性以及属性值(标签名,标签值)列表") + @GetMapping("/category/findAttribute/{category1Id}") + public Result> findAttribute(@PathVariable Long category1Id){ + List list=baseCategoryService.findAttribute(category1Id); + return Result.ok(list); + } + + + + +} + diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/api/FileUploadApiController.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/FileUploadApiController.java new file mode 100644 index 0000000..3599943 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/FileUploadApiController.java @@ -0,0 +1,14 @@ +package com.atguigu.tingshu.album.api; + +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "上传管理接口") +@RestController +@RequestMapping("api/album") +public class FileUploadApiController { + + + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/api/TrackInfoApiController.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/TrackInfoApiController.java new file mode 100644 index 0000000..7b067b6 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/api/TrackInfoApiController.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.album.api; + +import com.atguigu.tingshu.album.service.TrackInfoService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "声音管理") +@RestController +@RequestMapping("api/album") +@SuppressWarnings({"all"}) +public class TrackInfoApiController { + + @Autowired + private TrackInfoService trackInfoService; + +} + diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/config/MinioConstantProperties.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/config/MinioConstantProperties.java new file mode 100644 index 0000000..005c472 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/config/MinioConstantProperties.java @@ -0,0 +1,16 @@ +package com.atguigu.tingshu.album.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix="minio") //读取节点 +@Data +public class MinioConstantProperties { + + private String endpointUrl; + private String accessKey; + private String secreKey; + private String bucketName; +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/config/VodConstantProperties.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/config/VodConstantProperties.java new file mode 100644 index 0000000..43ce17a --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/config/VodConstantProperties.java @@ -0,0 +1,21 @@ +package com.atguigu.tingshu.album.config; + + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix="vod") //读取节点 +@Data +public class VodConstantProperties { + + private Integer appId; + private String secretId; + private String secretKey; + //https://cloud.tencent.com/document/api/266/31756#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8 + private String region; + private String procedure; + private String tempPath; + private String playKey; +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumAttributeValueMapper.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumAttributeValueMapper.java new file mode 100644 index 0000000..66a59f0 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumAttributeValueMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.album.mapper; + +import com.atguigu.tingshu.model.album.AlbumAttributeValue; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface AlbumAttributeValueMapper extends BaseMapper { + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumInfoMapper.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumInfoMapper.java new file mode 100644 index 0000000..f483cac --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumInfoMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.album.mapper; + +import com.atguigu.tingshu.model.album.AlbumInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface AlbumInfoMapper extends BaseMapper { + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumStatMapper.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumStatMapper.java new file mode 100644 index 0000000..0b73de2 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/AlbumStatMapper.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.album.mapper; + +import com.atguigu.tingshu.model.album.AlbumStat; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface AlbumStatMapper extends BaseMapper { + + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseAttributeMapper.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseAttributeMapper.java new file mode 100644 index 0000000..18fabac --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseAttributeMapper.java @@ -0,0 +1,15 @@ +package com.atguigu.tingshu.album.mapper; + +import com.atguigu.tingshu.model.album.BaseAttribute; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface BaseAttributeMapper extends BaseMapper { + + + List findAttribute(@Param("category1Id") Long category1Id); +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseAttributeValueMapper.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseAttributeValueMapper.java new file mode 100644 index 0000000..80ca831 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseAttributeValueMapper.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.album.mapper; + +import com.atguigu.tingshu.model.album.BaseAttributeValue; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BaseAttributeValueMapper extends BaseMapper { + + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory1Mapper.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory1Mapper.java new file mode 100644 index 0000000..23d2327 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory1Mapper.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.album.mapper; + +import com.atguigu.tingshu.model.album.BaseCategory1; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BaseCategory1Mapper extends BaseMapper { + + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory2Mapper.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory2Mapper.java new file mode 100644 index 0000000..9c9bca4 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory2Mapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.album.mapper; + +import com.atguigu.tingshu.model.album.BaseCategory2; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BaseCategory2Mapper extends BaseMapper { + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory3Mapper.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory3Mapper.java new file mode 100644 index 0000000..c2b3d93 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategory3Mapper.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.album.mapper; + +import com.atguigu.tingshu.model.album.BaseCategory3; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BaseCategory3Mapper extends BaseMapper { + + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategoryViewMapper.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategoryViewMapper.java new file mode 100644 index 0000000..8f6ab0e --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/BaseCategoryViewMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.album.mapper; + +import com.atguigu.tingshu.model.album.BaseCategoryView; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BaseCategoryViewMapper extends BaseMapper { + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/TrackInfoMapper.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/TrackInfoMapper.java new file mode 100644 index 0000000..4736db6 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/TrackInfoMapper.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.album.mapper; + +import com.atguigu.tingshu.model.album.TrackInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TrackInfoMapper extends BaseMapper { + + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/TrackStatMapper.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/TrackStatMapper.java new file mode 100644 index 0000000..e25c482 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/mapper/TrackStatMapper.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.album.mapper; + +import com.atguigu.tingshu.model.album.TrackStat; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface TrackStatMapper extends BaseMapper { + + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumInfoService.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumInfoService.java new file mode 100644 index 0000000..af0d58f --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/AlbumInfoService.java @@ -0,0 +1,9 @@ +package com.atguigu.tingshu.album.service; + +import com.atguigu.tingshu.model.album.AlbumInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface AlbumInfoService extends IService { + + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/BaseCategoryService.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/BaseCategoryService.java new file mode 100644 index 0000000..274fbd7 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/BaseCategoryService.java @@ -0,0 +1,17 @@ +package com.atguigu.tingshu.album.service; + +import com.alibaba.fastjson.JSONObject; +import com.atguigu.tingshu.model.album.BaseAttribute; +import com.atguigu.tingshu.model.album.BaseCategory1; +import com.atguigu.tingshu.model.album.BaseCategoryView; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +public interface BaseCategoryService extends IService { + + + List getBaseCategoryList(); + + List findAttribute(Long category1Id); +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/TrackInfoService.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/TrackInfoService.java new file mode 100644 index 0000000..4bba8f2 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/TrackInfoService.java @@ -0,0 +1,8 @@ +package com.atguigu.tingshu.album.service; + +import com.atguigu.tingshu.model.album.TrackInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface TrackInfoService extends IService { + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/VodService.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/VodService.java new file mode 100644 index 0000000..72fead0 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/VodService.java @@ -0,0 +1,5 @@ +package com.atguigu.tingshu.album.service; + +public interface VodService { + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java new file mode 100644 index 0000000..6d4de53 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/AlbumInfoServiceImpl.java @@ -0,0 +1,18 @@ +package com.atguigu.tingshu.album.service.impl; + +import com.atguigu.tingshu.album.mapper.AlbumInfoMapper; +import com.atguigu.tingshu.album.service.AlbumInfoService; +import com.atguigu.tingshu.model.album.AlbumInfo; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@SuppressWarnings({"all"}) +public class AlbumInfoServiceImpl extends ServiceImpl implements AlbumInfoService { + + @Autowired + private AlbumInfoMapper albumInfoMapper; +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/BaseCategoryServiceImpl.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/BaseCategoryServiceImpl.java new file mode 100644 index 0000000..34a345f --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/BaseCategoryServiceImpl.java @@ -0,0 +1,106 @@ +package com.atguigu.tingshu.album.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.atguigu.tingshu.album.mapper.*; +import com.atguigu.tingshu.album.service.BaseCategoryService; +import com.atguigu.tingshu.model.album.BaseAttribute; +import com.atguigu.tingshu.model.album.BaseCategory1; +import com.atguigu.tingshu.model.album.BaseCategoryView; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +@SuppressWarnings({"all"}) +public class BaseCategoryServiceImpl extends ServiceImpl implements BaseCategoryService { + + @Autowired + private BaseCategory1Mapper baseCategory1Mapper; + + @Autowired + private BaseCategory2Mapper baseCategory2Mapper; + + @Autowired + private BaseCategory3Mapper baseCategory3Mapper; + + @Autowired + private BaseCategoryViewMapper baseCategoryViewMapper; + @Autowired + private BaseAttributeMapper baseAttributeMapper; + + + + @Override + public List getBaseCategoryList() { + //1.创建响应结果集合对象-用于封装所有一级分类对象 + //创建一个新的List对象 + List returnList = new ArrayList<>(); + //2.查询所有分类数据-查询视图即可 共计401条记录 + List allCategoryList = baseCategoryViewMapper.selectList(null); + //3.处理一级分类数据 + //3.1 对所有分类集合列表进行分组按照1级分类ID进行分组 得到Map<分组ID,一级分类列表> + Map> category1Map = + allCategoryList.stream().collect(Collectors.groupingBy(BaseCategoryView::getCategory1Id)); + for (Map.Entry> entry1 : category1Map.entrySet()) { + //3.2 封装一级分类对象 + JSONObject jsonObject1 = new JSONObject(); + //3.2.1 封装1级分类ID + Long category1Id = entry1.getKey(); + jsonObject1.put("categoryId", category1Id); + //3.2.2 封装1级分类名称 + String category1Name = entry1.getValue().get(0).getCategory1Name(); + jsonObject1.put("categoryName", category1Name); + + //4. 处理二级分类数据 + List jsonObject2List = new ArrayList<>(); + //4.1 对"1级"分类集合按照二级分类ID进行分组 + Map> category2Map = entry1.getValue() + .stream().collect(Collectors.groupingBy(BaseCategoryView::getCategory2Id)); + //4.2 遍历"2级"分类Map + for (Map.Entry> entry2 : category2Map.entrySet()) { + //4.3 封装二级分类对象 + JSONObject jsonObject2 = new JSONObject(); + //4.3.1 封装2级分类ID + Long category2Id = entry2.getKey(); + jsonObject2.put("categoryId", category2Id); + //4.3.2 封装2级分类名称 + String category2Name = entry2.getValue().get(0).getCategory2Name(); + jsonObject2.put("categoryName", category2Name); + //4.4 将2级分类对象放入二级分类集合中 + jsonObject2List.add(jsonObject2); + //5. 处理三级分类数据 + List jsonObject3List = new ArrayList<>(); + //5.1 对"2级"分类列表进行遍历 + for (BaseCategoryView baseCategoryView : entry2.getValue()) { + //5.2 封装三级分类JSONOBject对象 + JSONObject jsonObject3 = new JSONObject(); + //5.2.1 封装3级分类ID + jsonObject3.put("categoryId", baseCategoryView.getCategory3Id()); + //5.2.2 封装3级分类名称 + jsonObject3.put("categoryName", baseCategoryView.getCategory3Name()); + //5.3 将3级分类对象放入集合中 + jsonObject3List.add(jsonObject3); + } + //5.4 将3级分类对象集合加入到二级分类对象"categoryChild"属性中 + jsonObject2.put("categoryChild", jsonObject3List); + } + //4.5 将二级分类集合封装在一级分类对象中"categoryChild"属性中 + jsonObject1.put("categoryChild", jsonObject2List); + returnList.add(jsonObject1); + } + return returnList; + + } + + @Override + public List findAttribute(Long category1Id) { + List list=baseAttributeMapper.findAttribute(category1Id); + return list; + + } +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/TrackInfoServiceImpl.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/TrackInfoServiceImpl.java new file mode 100644 index 0000000..57b418b --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/TrackInfoServiceImpl.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.album.service.impl; + +import com.atguigu.tingshu.album.mapper.TrackInfoMapper; +import com.atguigu.tingshu.album.service.TrackInfoService; +import com.atguigu.tingshu.model.album.TrackInfo; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@SuppressWarnings({"all"}) +public class TrackInfoServiceImpl extends ServiceImpl implements TrackInfoService { + + @Autowired + private TrackInfoMapper trackInfoMapper; + +} diff --git a/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/VodServiceImpl.java b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/VodServiceImpl.java new file mode 100644 index 0000000..b7fbb23 --- /dev/null +++ b/service/service-album/src/main/java/com/atguigu/tingshu/album/service/impl/VodServiceImpl.java @@ -0,0 +1,15 @@ +package com.atguigu.tingshu.album.service.impl; + +import com.atguigu.tingshu.album.config.VodConstantProperties; +import com.atguigu.tingshu.album.service.VodService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +@Service +public class VodServiceImpl implements VodService { + + @Autowired + private VodConstantProperties vodConstantProperties; + +} diff --git a/service/service-album/src/main/resources/bootstrap.properties b/service/service-album/src/main/resources/bootstrap.properties new file mode 100644 index 0000000..2665331 --- /dev/null +++ b/service/service-album/src/main/resources/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-album +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-album/src/main/resources/logback-spring.xml b/service/service-album/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..d970337 --- /dev/null +++ b/service/service-album/src/main/resources/logback-spring.xml @@ -0,0 +1,65 @@ + + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-album/src/main/resources/mapper/AlbumInfoMapper.xml b/service/service-album/src/main/resources/mapper/AlbumInfoMapper.xml new file mode 100644 index 0000000..5ad3286 --- /dev/null +++ b/service/service-album/src/main/resources/mapper/AlbumInfoMapper.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/service/service-album/src/main/resources/mapper/BaseAttributeMapper.xml b/service/service-album/src/main/resources/mapper/BaseAttributeMapper.xml new file mode 100644 index 0000000..4a242ec --- /dev/null +++ b/service/service-album/src/main/resources/mapper/BaseAttributeMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + diff --git a/service/service-album/src/main/resources/mapper/TrackInfoMapper.xml b/service/service-album/src/main/resources/mapper/TrackInfoMapper.xml new file mode 100644 index 0000000..735afc4 --- /dev/null +++ b/service/service-album/src/main/resources/mapper/TrackInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/service/service-album/target/classes/bootstrap.properties b/service/service-album/target/classes/bootstrap.properties new file mode 100644 index 0000000..2665331 --- /dev/null +++ b/service/service-album/target/classes/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-album +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-album/target/classes/com/atguigu/tingshu/ServiceAlbumApplication.class b/service/service-album/target/classes/com/atguigu/tingshu/ServiceAlbumApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..b6124a98b0da86d75117e10f99b5d04c9fbebcd9 GIT binary patch literal 899 zcmb7DO>Yx15Pi-^H%&v*rcfvpDsE{i@C_jaDz$;0!iNY72TtCNvvJwABd<5W&*B8) zzz^U@A;#OF?jaztl4o{iJa5Kt?4Q5B{{Zk5hfP#a4Nz;Ljtz$G3$YYD5jy6t!V4KW zhK(mmD|fiVn2bTi5@D;=;xRySpY#lX)TC+)Q5!Pn(mLHa5p5w~;(ozR`of4B(+B zk755!uANHdL}kj8ptW(ufC%SgEqBFKMD7fcSdb@IGdiPjl}Mz6ovj6k5|dAPlqjhk zpQhm|7B)2zcof1X^ fd$>vdTeRvlWKtFE7xFglkZz-j1JZYC-2;9DEk*g^ literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/api/AlbumInfoApiController.class b/service/service-album/target/classes/com/atguigu/tingshu/album/api/AlbumInfoApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..e0da8979ac9046ea87100d78f034f9e1db180abf GIT binary patch literal 768 zcmaJ<$!-%t5Uq|kVjL2}8hqjwa-a@G5fY1JMM6RvKuRKCIMs~XlM3VRp%+{H0A~W%m98|C8W^4x~?^+X_ zEeh>~yH2SB``S%8)54T2rt+sr=X7VNM+!Ffq6s|FL-w2&dSHwV6xbTC;9+82j=pr# z*VxfS&#ZfcsV3ubOj)q*9nwDl4q~t~c6ubV&0RZ^rdAU+`emG?+8vP4D_Bo#M#YdE zSN55+84g+M?fhqi#oLf--F+Kfrk`pHZG`htmgW$zPbkW1!sQ z0p-;UMn+c9`}O_P@8gdrUp}9Fc)w^VGo50}W^{oI_p}e^M-#&N`%2IYO z(AJcSD9tQad#H~OccCL64nT=qhOX$#Vzov0YOjE5Yeg&+uM*wb`UdK&JeJ^!$SN6N o1y)7&P7`1auGaDOT3)M3`_O>v62IZ$Cft(1Z80`pgYt0aFRWtVI{*Lx literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/api/BaseCategoryApiController.class b/service/service-album/target/classes/com/atguigu/tingshu/album/api/BaseCategoryApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..255e5a487daa58fb457c6e9720885f3bc6db4f55 GIT binary patch literal 2396 zcmbtW-)~e!6h5sXd_8MPZVd*jlb zQF#fx+}40zq*Mo5J(y{s7pXN#ZE1Rm_Aol}Tqq!AN?pr2r#v`dPj^o)bc?T*#RFL; zMK9AUN$N<`UV4>Lcbq-QijK`)>G_uCm&1Wk!nw+5xH|%@@pGmp_UdsU;cZ__Qzz|b zw0lz7g{;=DGJFjWcGW`X9NPr&Ci0B-UG{CQigH4E%CKbCwjC|Ba%_*$>73)5+$*_= z=A_=p_>-vD76~?pe-wx@hCpcGHBRRN9cPO%FDMJ_n z{_ym)hai76K6WvBFPUK&Y93dnEwu0A?qUZVhn~Y)V6P{q9PZ5u)08fs8RU-eYGUN^ zv66Jd_(C`7`Ng7e=NR=?e!9E*+s~DS`N|IqI6|M3pAFg<=n1c}*bBZ!RBk&{;L-&whJZL8uJm*uGEdZV8K zFurcaAN|zF>5WH{3Y%qE^5_jT*aTWLIz`Z8F&@Bb7si7a8!)0zR93#Wn)cb(g zA|?qsgm17-)D9>L0iZx#bQmj!_V^}1g2NwU6&Pym{ezNAw3|_`?;*AS4pBo06Z|tE zG?^6b51~3D^(s^fphxH}fV>T@fM+D>#;gaD1oei@_hQxuS-(f`&{0hIC&WB@7qd

H#0m{!|*hnfnqZ7@OzjfC=-5%!ZV#Pe-=B#9-X82v600hy4m@E038$KoB#j- literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/api/FileUploadApiController.class b/service/service-album/target/classes/com/atguigu/tingshu/album/api/FileUploadApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..716f19f1c9f372a7479dc670e63822a648aa4336 GIT binary patch literal 624 zcmbVJ%T8255IxPzFfyVbzM~s==)ztYBZ)#nNL*btL7a`Nx-)Il*wcOO$IKtFV1ays zgs?SXg)znt@HL6&$pkSzXDjsjUJ}Z>Y_c14yFa>w`fe# zlGE}>hr9e;}|__@HI10)N<>z;zQJ-pYw8Wog{-j~nH> zis|g%_}YJIeV4iW8C4aJ;nvQWY-UO`wK9!HxPvZ>UN6C$WoJ9Xk!)h1bMF}9h=D2e s*w$(A={(!n=G>TFV-$DzQIKL2a8CMv%%E7hQ5E0jZ0f7RvQ~&?~ literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/api/TrackInfoApiController.class b/service/service-album/target/classes/com/atguigu/tingshu/album/api/TrackInfoApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..e2dae1d803b845ca8dd003c957c0b068bfa9379f GIT binary patch literal 768 zcmaJ<$!-%t5Uq|kVjQxt2A{Zv9H;{*io_yWk&uuEkP^!mPBr6pr;~B_(2K47K+gFC zgt#LR2P6)B0RMp^egaW52_y%bOI24@zgJbS`^WEZ-vQt$blb21wHDMn(150Zl>?d( z=42GUP7h=j1T>#$qr)=+wT=6O7F-eVD6?avprTe0gEq?VN2ENBoGmo=9c70v%*gf% zy<<&qHqWJF?(ny;C*4G6l9`hERQ~MJ1>HI7v4Hj6Xo4Qgf%ZDhWzQHJC}?ZEfbGOO zg}!h+*T~UWPOUq{RFd&HqAXZp)P|Jxn@>LwC()Eey1*|1D zqkKS4m+^VB9`-f&+xpK6^VQ&P?L8Y^CZFrFLwB}l56b5du#sqseo9J7hm(hB$zR&R zV<6?RPpaI(@X7)@KR_3q2*$M>fv$MZy)$`n&=hL^Z-SNd@AXiPX;&)Lwoko+~zg4F+5FYOS0p-NtTmS$7 literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/config/MinioConstantProperties.class b/service/service-album/target/classes/com/atguigu/tingshu/album/config/MinioConstantProperties.class new file mode 100644 index 0000000000000000000000000000000000000000..0f099c071dc494b9c8b741c6f1b64e079768089e GIT binary patch literal 3420 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 literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/AlbumAttributeValueMapper.class b/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/AlbumAttributeValueMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..3abec9fabc8d6480e1f004294991d957d94cf050 GIT binary patch literal 445 zcmb7>zfJ=&491-TJz79wWnpB*I|oQ*U^;|ErS8r(N>k;}DT$Hb(HM9D9tx4W79mw# z7-GlzoS*zTU*8{}0B{Fq6^sPjw80@|%|MW-sMDZvF|p9UkoZa$%|L*4-Xk^?fa1Iu9IM^=NFFkE^LNlxY>8}Adpt`I}z(F}j E09R^`)&Kwi literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/AlbumInfoMapper.class b/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/AlbumInfoMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..8b11dbf40595dc129d917c54e85792255e92bf04 GIT binary patch literal 415 zcmb7=&q@O^5XQe$?b@o~!HX~8(eb`2)Po?b6fAh3-NrN}f0j)m_-Y<}03S+BceO%q z9x{{ROMWxoe15%u0Jy8B)K)(0plc&%&iR;q xc^3pOD&HyMmYbC%-Pn+a literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseAttributeMapper.class b/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseAttributeMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..95f0a9805cfcba582a35d47eb534d2bb09ef2e7b GIT binary patch literal 729 zcmbVKO-lnY5S>`twO?AlK(7TwF9yNes!$Jtutl-peRel)Q+AV*O$z;M9{d6RC~>-5 z`T;`G!!RT>dGp@Oe0_g>0>B*{d$7geCej&4n>d*`Zly}{q2ri_F5?-F$HMRj%tg;y zBSU9Jzqs>Yn?YxU6XYqXgg=KP5m^sv4EPK$M4ic4JDyELv@##3E~kPKtC%GegZ8^r z@nQgj?nSUf4zx=A%ksimness9)~DfpVTU??L4%pF!sHB^5n7RGGrfL_8Po?dQD~hJ z3rge&Ax=e>AL1MsplJ{ zmOwu32!jemm9~)49(k}s=Q^FL3>uW06kE`OHs#i=dzWG_r&?uR>%e}|a{z~wYg9f0 F_yN72;pPAU literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseAttributeValueMapper.class b/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseAttributeValueMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..ad03b960fdba72b27137b6254b00896732aa76c1 GIT binary patch literal 442 zcmb7>Jxc>Y5Qb-?=1f$uwXn5xYB?2RVRa%Tkbd?uY&Pu2u^&SInuR~WA0=+?1SP2~ zc4y$7eR$v5&#(6n0C<3l3Pu9%T5pk(%35Vi+NrqCNJeIhmb#7uK2hXZN&q@O^5XL7}yS6HL)EDsRAb499RPeM#u;6{N9nzHiS@K8dt9kGNd?+#96|}v1 z$V`|o`SE?p=hyoO0Nlb!1tS61t+z-?WvwzM?NnT5BqOs$OI^nSA1Lx8C00JHuV($M zf_(v}D|#a|jogBzdbBKBHYrN;-BX$07v&%N$SwCUdPEr5sp5YIdP@ z^H1PSe_=O~^$RvXxwZn;ceQ}&+~?5plQzY}*_J-IyxiClaQ>2A(w1L!)Y9<1b3T=P y-bDcyjSmW`qjt%t``Ado2XFw@<%tCBm32@)0m`l_bp(en>H8FpN*@>f7~mV?WQLpo literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseCategory2Mapper.class b/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseCategory2Mapper.class new file mode 100644 index 0000000000000000000000000000000000000000..8fcaf2d2afbef64d435ab6f8ad12ceae5e7fef88 GIT binary patch literal 427 zcmb7>&q@O^5XL7}yS6HL)EDsRfOuOKRPeM#u;6{N9nzHiS@K8dt9kGNd?+#96|}v1 z$V`|o`SE?p=hyoO0Nlb!1tS61t+z-?WvwzM?NnT5BqOs$OI^nSA1Lx8C00JHuV($M zf_(v}D|#a|jogBzdbBKBHYrN;-BX$07v&%N$SwCUdPEr5sp5YIdP@ z^H1PSe_=O~^$RvXxwZn;ceQ}&+~?5plQzY}*_J-IyxiClaQ>2A(w1L!)Y9<1b3T=P y-bDcyjSmW`qjt%t``Ado2XFw@<%tCBm32@)0m`l_bp(en>H8FpN*@>f7~mV^?1rBJ literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseCategory3Mapper.class b/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseCategory3Mapper.class new file mode 100644 index 0000000000000000000000000000000000000000..202365353d14f01218ab5ace0fee968c7b220013 GIT binary patch literal 427 zcmb7>&q@O^5XL7}yS6HL)EDsR9Q3v-sNiXfV8Q!jJEST3v*eG^SM%Tl_)ucHD`lbW(a%}~w?`i?lxzC~HCvA#{vn_padAYGA;QS@Kq%FVdsHNe1=X@&p yyo&-Z8Xpu=N9~eP_pyIe>D()TGGl|C-|F~B$HbcUh; literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseCategoryViewMapper.class b/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/BaseCategoryViewMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..f790eb253297eee67ae566e396e75a6f684e34ce GIT binary patch literal 436 zcmb7>O-lno42CmRyS6HLmEL^6H9uJE zVs`0l5HPQtmq;x&8%EWcNBV8R9#rN<2{_8x8FTan`kPGQpJDV*gz&h>MEZ!9m0 A;{X5v literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/TrackInfoMapper.class b/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/TrackInfoMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..9dc82ec989b9a8cd052117440bd57a27ff99e4bf GIT binary patch literal 415 zcmb7=&q@O^5XQe$?b@o~!HX~8(eb`2=s^%x1S{TWw=qr4pJkH>zM2Ogz=smkU9HfY zhspI`4E04{J)U?gzXcuO2r(kfBZPK8AxHg&ROxou@fj~zEJx9-{B^>u-5 zfx{)gG8uM??(3y&Vu7&$tyndCtLHwEeXBX@(3%vo(8*ukH3vDM1ST`B9LLm2fwtO& zmeoIj=Y7Mb8|&xN{CHZMDKATb>CC6DkvH1p|Bu$%Fx}~D9D(D9R*CY literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/TrackStatMapper.class b/service/service-album/target/classes/com/atguigu/tingshu/album/mapper/TrackStatMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..741eef53cb6349a1186e04055730ba9bdea78acd GIT binary patch literal 415 zcmb7=Jx&8L5QWD9vLt{+LBjuK2C;uREH3|;Ep%Bh41SuVb zJ+_|b^St-@_5J|>S8!CpM8HMw3{p~=RmQ|t#brj)T{dXQdl~R4Q2){c|;hxQynlqr}nc9E%X-FYlJ398m&hEh|eY2Pwce+t9lC zC-8D;*mh&wLh2t+8#DEFEnwcd9C~@jy8M5#(Z=b{*W(B{eatqok3PUrOY`F4Erv96@!7M!-&4dnI@%r>g7|*oWCr=WtN!wCINb-x8gIg#Z8m literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/service/AlbumInfoService.class b/service/service-album/target/classes/com/atguigu/tingshu/album/service/AlbumInfoService.class new file mode 100644 index 0000000000000000000000000000000000000000..1ba319076d4565b329b80b73750071e162ad3fd2 GIT binary patch literal 345 zcmbV|J#ND=427SPCT`NDORo_E?dY^XmjD3_bnppeTTx}`r?8};xmt%DAcqQKJBA03 z9Y}&C_~AWXu776$?|4cuV|Xo{As%E@GEz`h`tL|w7txRx%~6$tKD%yj4=%qC56FhkPkN38m~ Fz5(!KZY}@- literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/service/BaseCategoryService.class b/service/service-album/target/classes/com/atguigu/tingshu/album/service/BaseCategoryService.class new file mode 100644 index 0000000000000000000000000000000000000000..f79bb80350aa885276964558df75729b0221f6ea GIT binary patch literal 669 zcmb7CO-}+b5S^m90-^{P&z|sNLyRZXL`_UEC?@+0y1S*6>~76=O5m?~@CW##jI$pS zq9*F0X=mEJ_vXF6y}!Hyz$NrNs4+MXO~M5#rNoljz7eo~#0a+CIn5a=ApAT5Zxb@~DDi z&{GmOdB)lzgKqz1T#z`_G0%HL1`S`URG`ZwssHxiVq6Rq>p%p8Pld&~CB}Py@>q%- zUJ*uns?+EiG1GxV!a44jJjF0$ld9nl#GMC;GZQ_DOe7LzW*M}?%9p_?V&MOZQmOl5 zcVZ$LSElDCtc4X?mmAWm5sDfA>G9vFKXV=w)J@;GER=UTCXbFb^QnS6&C{XK8Enz2 n)4!_G$M9g6szzQxlj;`i(Wy;!oxwhB<<$W-%Tosqi^ts$3?R;q literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/service/TrackInfoService.class b/service/service-album/target/classes/com/atguigu/tingshu/album/service/TrackInfoService.class new file mode 100644 index 0000000000000000000000000000000000000000..b771ee3b14e6f7fbb333e6d3dbc44d419c561cea GIT binary patch literal 345 zcmbV|&rSj{5Ql#SaRDz}d<`d&tGO2+H>mWgeh9Yxigj8yc}usm-3YpDJP1#Scu z2R<=b_L_F}LCI9$R$zId)f}AJhfMCX=49f#&5_hcQa+mC2kfTD3Ct>^J*V6#fwa8_ zm)n0pSKZOImkWDkd%MA^d@2RzRmhE0&&IYH?uT6;@!^uG)e{)EZ_<7rFhbGQDP~=t F{{r{LZaM$} literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/service/VodService.class b/service/service-album/target/classes/com/atguigu/tingshu/album/service/VodService.class new file mode 100644 index 0000000000000000000000000000000000000000..bd861de8d2dfe06980966c0a604dfafdca8bc5a7 GIT binary patch literal 135 zcmX^0Z`VEs1_oOOc6J6PMh2ba{9OISlJwHd^iutj%)IpCj8gr?oTSoR{o>T3vdrXE z{jmI$U4QkT$IpRjO1ea3CmmCvmneyLRODw&Z6a z4j>Nv08acO#Ox+rwIR)ci^nsb`R3toe*O9J6Tm*6*HA#wL#d86lo|Y?iTFU6NR3Rw zqv=366;Hw>=JKw1qpXb z2k}Y5ML0;Jt1z9^bgakb5?&28tb3@}aRVC+TgC=F4##g!dDjGiv`1p-jGZ!61L3EY{AjnRS@9 z^G-}A(h^MfdYmZp;W^AK#%E}LNVHRt?5kJ}LfO&UIQkExV}`f0dMB1@|SazwDDLoeiQ_s&0r|PzOX9Q=f;vdQIv0g zMFUp|k+*T_Cn;&AJq+jMsPuC?UcP_eFLlno zHYacHKJS(~t@TV|hw@0JBW*4^q>J(@Whg^y=@-UMT4~&LA}@B!$1c&e0EXLiZl|oJ z-7VlQ?vZVa?q!nqGaF0Sn6xHooFpT;_VOFpm+X0)&h#1Bzymt#GY34xBho5(oCoh_ jFF>{7eMj{xHd6pb*)IUrQN#{u1w5hpQu#Em^ zW?O=af)%_AiegdmhAm=MRBTx)wO&!g>tFrrZ;yZV9P0DU%x-2k+obdy&q;P>-g)2m zdGFu%&6{t(b`ii`_*(=`Xjagoq7@;5MB2)0Dc#DO8LOn_XHvRj+S9p`tr-tHM!`0% zf@T}V<7V2>%=~mt8}lAUcrOszY8Fgqn?Q5Vs&NHjf$n4aaa}7pW=I?*MtP2%cKwq#~YnqwBS_GC%ZbE#6k7H&wljbYs}vQ}}X26|~K@MhdJ zPVCjEr;Vb(mgJRH=UpBxsB~5|(T+ukDd<+Q7)t~;U85d>h;8JIv?F~N*wNz})G)?r zt7vFxtB^4r2HMsR7F`1qtCF)}lv-%oGQ3McT*bR_oj_;pYbL^WiiVySxUMHC>ru5a z_hll+3Rte<2HYsnN}$|~z>PKh6Qx30TB7apZxRu#z|9J7QLz%YQvEEjuY1_aNnfp^ zO~126t2E7I4pDQWC*Z_f#SP4?s-nBMqesCi6|1pEVA&j0&m#dP?ZFGI55m>kRtacM zFJ!fSsbe%ap&FvV%ZWSXEDwH*x zdkhNSQ>i)^ENK<8VeDnf(|&V~WTfmq75CykT0C8%-JAWKxFSp$DEkea4ceivLb+H?`ejDgt%qQ#n65|em&jqT9y==54o{l7j2z02iV}{q zX5>H}beN@7$uTO^^vJxA*ho}2*mf73XYjK#!cHy<&42X!E(5~ za?rCil2$RR+0(KoCW_3?39C4zr3{^`z=SU6>5QgV1+>AEW1TRIMuuwLL{-rGuF*pRh*U;qo zCJgliko)+Q_Gf3GZ0BfT3b?f$XjXS}$Pl{gL~xuk(gANgr+rO9mqYGqM$9Fi3ilmz z?JW(pmT~c`TGlHqtIiC676uUeJjCh@lw~E8Kf9ihK=mFzHAjkuQz{lbu`WHAt3HBSOjqirKY$=5w=S5(ZM0%4AXRmKt4DN$>c&056i{8aRh>7{+Y%DZ2q+@j z{|#qH0Oy(wW|qesJv~K3-PTlamL*wVZUSv%X11U+h3x2!l?A9;X;+tqmYlmW9=s;I ztIL5KT-l~bH!OQw%{V+Te(0+Yk~gm7Ffeg{K5yN#(;Cyze+2}+UHRw z@s1`;FXPcrp!QG|9FhLI$5M@qS*2py*k#H=eSHHSIb`pU)gaK*aOJWYe8Y0sp_LON z)kcRb%i&&JpZ3yZcZE=n;5A%O@G}*!<09Ae*%~to$E_(tOX~SlMyG`CFNB;&Oz!N{ zTfq$bLLR_wy^zTn_R6GXO_ipDd(FAK&l-sGrCv_CRtsXb)kJj_ft00s+0txgx3G{mvZ`K33 ziX`zoNn6&d#=?#Vf;zp);alXlo|zp5x8M~R<0Ue9hlmka^XJC zU-=sRQt%1>svZMAiBIuK;M4dFjiPW%49(<$IC}xgq4Q`ax zi{guX=>z-shjFVFwu*oYL*|2b@C@om9p zd6a(^+we_nXF3P*4-Dg<*ol8*7ygUgq8lS(Igin|^Vqx|`@}(>laFFdU!{bClj0V9jS^uzE24Ow z5^eP2U-&w8MriS2`t=-}f|cx7d04!FZ;_8%Z*dCW=3Nt3i^uT-C7SUa#%(`82zvOZ ztN3S#?;)J7BD`2dI70+a@9C=E?^gA`NWCvn??r?zV-s2xv@2NV{;gG*0bFKq_>HlK zs$fXL4h4G@e6NP}5&5leVb(eF#Q6_)UZx)uUO--&v;-|dKHC3%{x{(V^pJ;R`Xq;p zPD(Sc9h?vLnletv`5+6i*)2r*)fSlG9L&1KaFfUEr-EW`8o5xC?}u(GWCG+^@+dEp zE=O0ZAY;XXA2ZsXEkD64q&Bfa9^+L`wsX9m=l@btUnSVj@eBOMzk7psf8e_q-wm-d P-U_whkN7kGiunHk&IEM< literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/TrackInfoServiceImpl.class b/service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/TrackInfoServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..fd86e9b44775f52394da580aafab57a6c5d3674c GIT binary patch literal 1122 zcmbVLOK%e~5dNH`c{Q{U9wp^b%0o&yUakn9XC=gfs^(9?y8@n}@&o_2wy+cbg9as^`D`PKs zPYNCL!DKL8WC8pzapp={*(cb-k?Bh+vaPiIm_$8kPX)n`XW)ylE38WOsj=YB6y@7r z(ZC!bvNo>$Bqc4k{BTN+N=F4+xWrP*-(%SSBwTAnO*ag6X+%Wx2&b&f%J&YurOxx@ z&D^KmQm569NvtoARXWnfqC>hUZ&HRbG?#v1?4*^(jfQfzTOM|at~oH=rE@!FE$wa& z_wj&iTXZjyd^onTbd5=Ckj6fmXKmtu$9O_o8Bep|-SG=h hsh7T^@)esY0Hf?PfOX`tLs|~csJ>J_&uV!A`~?HmNn-#2 literal 0 HcmV?d00001 diff --git a/service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/VodServiceImpl.class b/service/service-album/target/classes/com/atguigu/tingshu/album/service/impl/VodServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..a6b1ebd185d2fbbc9e8fc665a5857114a99704eb GIT binary patch literal 642 zcmah{+e!m55Iw22)q1IS@zFOGF;Al41w;^pqN39G>~^}2?j|Lht@v3!2|oA%ev~*{ zi#~WGWF}{lIft3d>)Z1SfCDTyP{BwY)k%z^rZ97B`bMY5Ci* + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-album/target/classes/mapper/AlbumInfoMapper.xml b/service/service-album/target/classes/mapper/AlbumInfoMapper.xml new file mode 100644 index 0000000..5ad3286 --- /dev/null +++ b/service/service-album/target/classes/mapper/AlbumInfoMapper.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/service/service-album/target/classes/mapper/BaseAttributeMapper.xml b/service/service-album/target/classes/mapper/BaseAttributeMapper.xml new file mode 100644 index 0000000..4a242ec --- /dev/null +++ b/service/service-album/target/classes/mapper/BaseAttributeMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + diff --git a/service/service-album/target/classes/mapper/TrackInfoMapper.xml b/service/service-album/target/classes/mapper/TrackInfoMapper.xml new file mode 100644 index 0000000..735afc4 --- /dev/null +++ b/service/service-album/target/classes/mapper/TrackInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/service/service-dispatch/pom.xml b/service/service-dispatch/pom.xml new file mode 100644 index 0000000..520872b --- /dev/null +++ b/service/service-dispatch/pom.xml @@ -0,0 +1,51 @@ + + + + service + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-dispatch + jar + 1.0 + + + true + + + + + com.atguigu.tingshu + rabbit-util + 1.0 + + + com.xuxueli + xxl-job-core + + + com.atguigu.tingshu + service-search-client + 1.0 + + + com.atguigu.tingshu + service-user-client + 1.0 + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/service/service-dispatch/src/main/java/com/atguigu/tingshu/ServiceDispatchApplication.java b/service/service-dispatch/src/main/java/com/atguigu/tingshu/ServiceDispatchApplication.java new file mode 100644 index 0000000..db8fbb0 --- /dev/null +++ b/service/service-dispatch/src/main/java/com/atguigu/tingshu/ServiceDispatchApplication.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@EnableDiscoveryClient +@EnableFeignClients +@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) +public class ServiceDispatchApplication { + + + public static void main(String[] args) { + SpringApplication.run(ServiceDispatchApplication.class, args); + } + +} diff --git a/service/service-dispatch/src/main/java/com/atguigu/tingshu/dispatch/job/DispatchHandler.java b/service/service-dispatch/src/main/java/com/atguigu/tingshu/dispatch/job/DispatchHandler.java new file mode 100644 index 0000000..53ce1a6 --- /dev/null +++ b/service/service-dispatch/src/main/java/com/atguigu/tingshu/dispatch/job/DispatchHandler.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.dispatch.job; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class DispatchHandler { + +} \ No newline at end of file diff --git a/service/service-dispatch/src/main/resources/bootstrap.properties b/service/service-dispatch/src/main/resources/bootstrap.properties new file mode 100644 index 0000000..16b67d8 --- /dev/null +++ b/service/service-dispatch/src/main/resources/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-dispatch +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-dispatch/src/main/resources/logback-spring.xml b/service/service-dispatch/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..d970337 --- /dev/null +++ b/service/service-dispatch/src/main/resources/logback-spring.xml @@ -0,0 +1,65 @@ + + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-dispatch/target/classes/bootstrap.properties b/service/service-dispatch/target/classes/bootstrap.properties new file mode 100644 index 0000000..16b67d8 --- /dev/null +++ b/service/service-dispatch/target/classes/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-dispatch +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-dispatch/target/classes/com/atguigu/tingshu/ServiceDispatchApplication.class b/service/service-dispatch/target/classes/com/atguigu/tingshu/ServiceDispatchApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..e5efe7a8e223126447948a12ce386fbe92530457 GIT binary patch literal 1002 zcmb7DOK%e~5dNG;lZHUk6awYd_Lk;Qb3#agN^MFdr0@_y;n0)gI2(tJ9eKT>{47o& z4*URq6k@!IXbu6vO7`r`c)l6WH~#VS+jjuZa8N-G`4S3M6tTfjn~1sKu`m&TJ(wuz z88)73qx~^MzIoU$q0De3?UV~2r8-Kv*CtBFDeoya*HWG7WG1{EpUh^lmcnamDyZOE z3DqjD;|4>^x`-z;M{y%3rs|`0ANasp&wH71C6aQw)G!R1-K)Afu}G5k#fqip16cd8 zyAD}ek9XnJETU~9`t8_Y0?p-*`Q14nP;=XV?=u2b4 zk9ETEsQZ7t2zjPL)14a4byw(`a-F(vew4pNIcNWJ00GYeTcy5UICBWk#V|PRc0_%?gzSP*RsNP6LfE{uOF6 z97uj9yjZmHg!23zl`y?+9H2yxBz!rr@JwjmB8`(|B#W&tV4pL0jrQOMs@Tr<>;UT6 zA#D>kaf?7g@Z$^&DA!A^uh@Kl6(3$CP@|;VD;Q-oaGUIRXccLCNaV1a?RRmHWCMBJ QC;5QZLn>kK0!(867ZTtexc~qF literal 0 HcmV?d00001 diff --git a/service/service-dispatch/target/classes/com/atguigu/tingshu/dispatch/job/DispatchHandler.class b/service/service-dispatch/target/classes/com/atguigu/tingshu/dispatch/job/DispatchHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..1750e822165f2cbc17679cbefbc532b7625c8b8a GIT binary patch literal 615 zcmb7B%TC)s6g?9{9H(xf;Z^!rWPt=M7*ur^Kte&N3#*mdD*K5unT)Y#qVc$h&#Jlr zvET#vD8zMQfkao`+{d}^bMGH+?*JU*QwI$!1!zWCMvGxJ6~6_~gi-waD3yt4XdP*z z{RzX;?%ps!o8d6AITv1)T9w>uql#(C$GVsapGSh1}&PlO + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-order/pom.xml b/service/service-order/pom.xml new file mode 100644 index 0000000..d8ed73c --- /dev/null +++ b/service/service-order/pom.xml @@ -0,0 +1,58 @@ + + + + service + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-order + jar + 1.0 + + + true + + + + + com.atguigu.tingshu + rabbit-util + 1.0 + + + com.atguigu.tingshu + service-account-client + 1.0 + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + + ossrh + OSS Snapshot repository + https://oss.sonatype.org/content/repositories/snapshots/ + + false + + + true + + + + + diff --git a/service/service-order/src/main/java/com/atguigu/tingshu/ServiceOrderApplication.java b/service/service-order/src/main/java/com/atguigu/tingshu/ServiceOrderApplication.java new file mode 100644 index 0000000..737e611 --- /dev/null +++ b/service/service-order/src/main/java/com/atguigu/tingshu/ServiceOrderApplication.java @@ -0,0 +1,16 @@ +package com.atguigu.tingshu; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@SpringBootApplication +@EnableDiscoveryClient +@EnableFeignClients +public class ServiceOrderApplication { + + public static void main(String[] args) { + SpringApplication.run(ServiceOrderApplication.class, args); + } +} diff --git a/service/service-order/src/main/java/com/atguigu/tingshu/order/api/OrderInfoApiController.java b/service/service-order/src/main/java/com/atguigu/tingshu/order/api/OrderInfoApiController.java new file mode 100644 index 0000000..3354847 --- /dev/null +++ b/service/service-order/src/main/java/com/atguigu/tingshu/order/api/OrderInfoApiController.java @@ -0,0 +1,20 @@ +package com.atguigu.tingshu.order.api; + +import com.atguigu.tingshu.order.service.OrderInfoService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "订单管理") +@RestController +@RequestMapping("api/order") +@SuppressWarnings({"all"}) +public class OrderInfoApiController { + + @Autowired + private OrderInfoService orderInfoService; + + +} + diff --git a/service/service-order/src/main/java/com/atguigu/tingshu/order/helper/SignHelper.java b/service/service-order/src/main/java/com/atguigu/tingshu/order/helper/SignHelper.java new file mode 100644 index 0000000..24a41a4 --- /dev/null +++ b/service/service-order/src/main/java/com/atguigu/tingshu/order/helper/SignHelper.java @@ -0,0 +1,80 @@ +package com.atguigu.tingshu.order.helper; + +import com.atguigu.tingshu.common.execption.GuiguException; +import com.atguigu.tingshu.common.result.ResultCodeEnum; +import com.atguigu.tingshu.common.util.MD5; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.StringUtils; + +import java.util.Date; +import java.util.Map; +import java.util.TreeMap; + +@Slf4j +public class SignHelper { + + private static String signKey = "atguigu123"; + /** + * 验签方法 + * @param parameterMap + */ + public static void checkSign(Map parameterMap){ + //校验签名时间 + Long remoteTimestamp = (Long)parameterMap.get("timestamp"); + if(StringUtils.isEmpty(remoteTimestamp)){ + throw new GuiguException(ResultCodeEnum.SIGN_ERROR); + } + long currentTimestamp = getTimestamp(); + if (Math.abs(currentTimestamp - remoteTimestamp) > 500000) { + log.error("签名已过期,服务器当前时间:{}", currentTimestamp); + throw new GuiguException(ResultCodeEnum.SIGN_OVERDUE); + } + + //校验签名 + String signRemote = (String)parameterMap.get("sign"); + + String signLocal = getSign(parameterMap); + if(StringUtils.isEmpty(signRemote)){ + throw new GuiguException(ResultCodeEnum.SIGN_ERROR); + } + + if(!signRemote.equals(signLocal)){ + throw new GuiguException(ResultCodeEnum.SIGN_ERROR); + } + } + + /** + * 请求数据获取签名 + * @param parameterMap + * @return + */ + public static String getSign(Map parameterMap) { + //去掉sign参数 + if(parameterMap.containsKey("sign")) { + parameterMap.remove("sign"); + } + + //有序 + TreeMap sorted = new TreeMap<>(parameterMap); + StringBuilder str = new StringBuilder(); + for (Map.Entry param : sorted.entrySet()) { + //获取键值对中的值 + str.append(param.getValue()).append("|"); + } + //最后连接signKey + str.append(signKey); + log.info("加密前:" + str.toString()); + String md5Str = MD5.encrypt(str.toString());//不可逆加密算法 + log.info("加密后:" + md5Str); + return md5Str; + } + + /** + * 获取时间戳 + * @return + */ + public static long getTimestamp() { + return new Date().getTime(); + } + +} diff --git a/service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderDerateMapper.java b/service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderDerateMapper.java new file mode 100644 index 0000000..1499f16 --- /dev/null +++ b/service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderDerateMapper.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.order.mapper; + +import com.atguigu.tingshu.model.order.OrderDerate; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface OrderDerateMapper extends BaseMapper { + + +} diff --git a/service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderDetailMapper.java b/service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderDetailMapper.java new file mode 100644 index 0000000..e60ff7d --- /dev/null +++ b/service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderDetailMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.order.mapper; + +import com.atguigu.tingshu.model.order.OrderDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface OrderDetailMapper extends BaseMapper { + +} diff --git a/service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderInfoMapper.java b/service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderInfoMapper.java new file mode 100644 index 0000000..64ed0c1 --- /dev/null +++ b/service/service-order/src/main/java/com/atguigu/tingshu/order/mapper/OrderInfoMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.order.mapper; + +import com.atguigu.tingshu.model.order.OrderInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface OrderInfoMapper extends BaseMapper { + +} diff --git a/service/service-order/src/main/java/com/atguigu/tingshu/order/service/OrderInfoService.java b/service/service-order/src/main/java/com/atguigu/tingshu/order/service/OrderInfoService.java new file mode 100644 index 0000000..322c51b --- /dev/null +++ b/service/service-order/src/main/java/com/atguigu/tingshu/order/service/OrderInfoService.java @@ -0,0 +1,9 @@ +package com.atguigu.tingshu.order.service; + +import com.atguigu.tingshu.model.order.OrderInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface OrderInfoService extends IService { + + +} diff --git a/service/service-order/src/main/java/com/atguigu/tingshu/order/service/impl/OrderInfoServiceImpl.java b/service/service-order/src/main/java/com/atguigu/tingshu/order/service/impl/OrderInfoServiceImpl.java new file mode 100644 index 0000000..c3db232 --- /dev/null +++ b/service/service-order/src/main/java/com/atguigu/tingshu/order/service/impl/OrderInfoServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.tingshu.order.service.impl; + +import com.atguigu.tingshu.model.order.OrderInfo; +import com.atguigu.tingshu.order.mapper.OrderInfoMapper; +import com.atguigu.tingshu.order.service.OrderInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@SuppressWarnings({"all"}) +public class OrderInfoServiceImpl extends ServiceImpl implements OrderInfoService { + + @Autowired + private OrderInfoMapper orderInfoMapper; + + +} diff --git a/service/service-order/src/main/resources/bootstrap.properties b/service/service-order/src/main/resources/bootstrap.properties new file mode 100644 index 0000000..8c4b0fb --- /dev/null +++ b/service/service-order/src/main/resources/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-order +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-order/src/main/resources/logback-spring.xml b/service/service-order/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..d970337 --- /dev/null +++ b/service/service-order/src/main/resources/logback-spring.xml @@ -0,0 +1,65 @@ + + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-order/src/main/resources/mapper/OrderInfoMapper.xml b/service/service-order/src/main/resources/mapper/OrderInfoMapper.xml new file mode 100644 index 0000000..7e2bea3 --- /dev/null +++ b/service/service-order/src/main/resources/mapper/OrderInfoMapper.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/service/service-order/target/classes/bootstrap.properties b/service/service-order/target/classes/bootstrap.properties new file mode 100644 index 0000000..8c4b0fb --- /dev/null +++ b/service/service-order/target/classes/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-order +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-order/target/classes/com/atguigu/tingshu/ServiceOrderApplication.class b/service/service-order/target/classes/com/atguigu/tingshu/ServiceOrderApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..e5bceaa833bbd0c9e9b6e419f200032329a3bca2 GIT binary patch literal 899 zcmb7DO>Yx15Pi-^H%&v*rcfvpDsE{i@C_jaD$zhsfg*y!fs^BPHZB`G@_GaOEKVQ} z`~ZFwV!RD%4grakJhL<7c{6@v|NQm+2Y{zItfPc-gh~TdY%pwJh=t&(FbO{&UnuDr zHlAps{Ru<4b2N%jV>p&}#)VIEo#fnWlVsDJ50zVJsm@)j+_U*S)lztEO&xV?MQAi| z4NZowbqUYrj*=!$%+yEgKJc-%o(~J>N+uO_xnUT023Jk>Q;}u8_bZ;E4`98c!8&AV zjaQ#M?^`pWW}O(PYNZ6ZL%7FK>DyQ_v(}DIn>-ry2T)2c_ch`hzGB1^%+W55yw0Y%dV|{3IC)Jq_jUN1E01pFs z4Et|#E)3pFHwRy~Cs+I9P z)|s>moA(4?ZR6^t78 eaFhJEXjN&*q)ON?$Y2mA(k*7^bf literal 0 HcmV?d00001 diff --git a/service/service-order/target/classes/com/atguigu/tingshu/order/api/OrderInfoApiController.class b/service/service-order/target/classes/com/atguigu/tingshu/order/api/OrderInfoApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..a0c131e29609b4e9e0f8acb4642693c5b68af6cd GIT binary patch literal 768 zcmaJ5wte_EXNZASH{T!fDbu+*#FQ1)F=NjXcpq4xHwCV6BT3+1a4rQR2M8 zP}jHB&cDG_lMOhgEIR)V>0bd3%IIe7^+;fwJ8mRHttM>st8$WRe?S7SU?XuE zynve$G{g{(REzSLaZ$m9WDwBV&Z(=>v2WF6E$_jeFkH7r-@ag3E^U25ei%6O26jQdN3s|_PLp(p40M6%ge(Bp%s$Wu3 z2=`Ljno?fMFv}GW_3_~jbmYSUD3Qz16@6K(w&-5%m7>~O5evnuM7QpJ1NBuNOK?SG rl?<=~t0H@+39tt1b$p|iS8LEdG~k-VuLrmRHzjaOjLp}e0^I%!MO)x^ literal 0 HcmV?d00001 diff --git a/service/service-order/target/classes/com/atguigu/tingshu/order/helper/SignHelper.class b/service/service-order/target/classes/com/atguigu/tingshu/order/helper/SignHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..796b4d77cdd4e1d808f616e992ee772593e581ce GIT binary patch literal 4026 zcmbVPdw3Mp76092li6$r0!sv=ND+u6fw;<})oer|2_%q*O+vz}(#dABS+YB`%+AK7 zXsvyKQn9q!MkrP3OZ%WI*pL7MeYf`g?)UZY(DpC??`Lg)cV?E%CeaU@FS~Q++l3l!HUjD)>Ops=dC zCy1axiJeI48Cy%GOA$h;0#(I4%omvFXlLz2GSa4{sS(#{;Et-+nO39KvqcIP2+W^e z*=ic`5W-lbpj^dGSS+y0wBnIW+DaJl0ZU8i51ZCd#M!RPmcpIfIU}GXGEJ$pJt}b1 zTwCu^aI?Vrn3;-bc08MiXCpS1GlSU(Whv8$=p%Y8Z6`R|Ca0T5V!HEMf?IH_f~6{M z!!m)p-ou2YXR=8<(&;=J%znMe$fg8BT`k+%_cwKRc617?Ykj{4q9H87a+#~!1vXZ_ zfBov75LRN9f=U&4V70)Sxm+-d7=8U5U8S>A1(UMs`gte$uaHon0?#fGRn`RGEQ|n`*0#)0qw->Px0p;}a5_+~l#YTLP^GP!< z5N>r6o*dY4Aku2aV>Wyr|Eb+c?qc9$7ApDw<@is7~TLdYU>LcQysFjlpLKtb&%jrgN>y z9PLoiiZ(h;$YlxyR(jj!`YW%AJU2pUMu&k7XvEdV3qjz#8C()Y~9jqnS;f7 zx-FiZ1`c3IK~hBuge*KAOKu4f9n>=I`Uo8$qwSFzX%z=SqXEMam*;HzcrdDf3X7)g z5tmg>GL%weFs$NXX&}gCdG)^!qbfdzLj+e#r*)%Wpw?eExhnA$P9AWq^hX86BND*J zq@_>HFyLj}U&r|dWIugU#i#IT#w?4CNtZn}GgBm$eK@S*2%caBw&_|C$cMq(F3es% zs^YVFiaAedLwbX0#5B7%VGnY|L&31w*m;!yu8uk__q2-7;W)8R7z5@E#?EPyw7!66 z6g;cqi*n^!eH=mtuILl*)OIgdo(K{-#uZ#9!wD6+BvEJU3fc6M`MF}Y{=yi zHLc0RlP%*M(q(QzxVUL)E-sU7VCz1jU*Ibmhb&22v8-jWmwl_mc7`Skt<%xxuJXl+ zf(@G=&1gCo(Z>A!>wQ~!`S(e@uGvH{=XKdyY=|Lv$Si2n?Lo8u!CY`esYC{>*;$Kd z-ZO)^Zg8LK9`e2e7;7`%Q@8!;NpZ%sY@H3h$hW}bPEHqQY*IsoFA6sDZV zp@3Xoz&i?WTpWeuNx^3k>5{(%`27vOMfem_T5}%aH4X~!O@7O1U_M^rx9Tpy%lH=G zO7Ly$MWIv{Q3SXWI8qZ3Yw*Nme|pTL@O z-2LqHSb7%g!yj5cfqN%$Um@JZ4RUc!c&lfsxh_yMf$eog6@ghMD*_co<7hvbw~ur` z;J9B$*TJi_ikqwo6ju-m}__l*@yRZrmp%MeUC?7;M4)KnAnAchv@&+Qr zu<#vxmrs>*XYf73umU<>!K(ym7m<67cm`;r8fQ5w!Z~NH1Wszc&gb{}S&YEjSf-%t zZLAIa2bBt%`CpE4&J_tR1kUqQfC*yDE1`#NBcIZVCmcXNT!0f$ondzYdM~1PHxstI z^&0|uUahniA+R3d`TYEed)S>{D>y-&j2xnb9h`9o~t8&Zi7FTgY>@;KjydqKfzC> g21h^Rs$VY8`z}W@0{U-=vwxzL6kTZn;u)I(&XzXlvZC67nI0k0z-Kk%vGeFDcY8*~mQtW&O^0(=9xGlbg! literal 0 HcmV?d00001 diff --git a/service/service-order/target/classes/com/atguigu/tingshu/order/mapper/OrderInfoMapper.class b/service/service-order/target/classes/com/atguigu/tingshu/order/mapper/OrderInfoMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..36cc24b2318869e000d436372cdbefa54567518f GIT binary patch literal 415 zcmb7=&q@O^5XL7}yS6HL@Zt-2biA($dJu$_LJQt!cVn8e`9uB)zM2Ogz=slNceO%q z9+EG^m;5r{e15%u0Kg5L6fhBR)i{HcRMskE(pJTFMi*Kc(2(~mi@tcYFYalm3)mNM zx}jIXj;z8(y^&2SU@8E6R!z?6)@3wrH6bjG6*1E*G xoQ(o5Di;)zr)Dit4{?$HF5n0%c{Bp{cpdQIflmeR6F7v~pmR84ow9!n@C_53f`9-3 literal 0 HcmV?d00001 diff --git a/service/service-order/target/classes/com/atguigu/tingshu/order/service/OrderInfoService.class b/service/service-order/target/classes/com/atguigu/tingshu/order/service/OrderInfoService.class new file mode 100644 index 0000000000000000000000000000000000000000..193e70deec56fd8b78dbc783cee3cbe6d63d07a6 GIT binary patch literal 345 zcmbV|O>V+K429nSZ3^A6={0JJE<;%&MT*2CCzvE=7?jLZ^MmNsy66FVsEQn+ D6hCfd literal 0 HcmV?d00001 diff --git a/service/service-order/target/classes/com/atguigu/tingshu/order/service/impl/OrderInfoServiceImpl.class b/service/service-order/target/classes/com/atguigu/tingshu/order/service/impl/OrderInfoServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..57eeac05bfacaf0f87fe163e9e8988aabdc506db GIT binary patch literal 1122 zcmbVLOK%e~5dNH`c{Q{U9wp^j9#YByONax~rj@Enl_~|02J z5C?t$Cw>uPb~jzMAZN z)1h!Gj)ElS^0SjVRz~w!+EX=>T!m4<2f1=ccZO2edp z^KSn{oC+QY?eqOW#Id*CpO5q!sNs4GH_)b91LHHa|8=V27Q?G_Aj=z=ubp8%>o9HS zt%xFN38sHFPMG=d0w#~~7&;#k?Nlg_RIG-9+|$}P`VXUHhBtY=k)@eVtO(_qv7h)* z3LW!FJ{T^F0KS(vbEd2u6KrMQj3pJ>S6aSH!lASu1;J-C7>VFWSe5ECW5pdS%D1zm zflGua+PLtOl(gO(1v7Fq2FlmMC6-eD&S3wOaJ?lpT`|;!5h2YZn6a`b-`n*TI%i*7 zkhgH3bxWN#2PUy2d7#pfcIF+@MR}Prl%c!u3u7m(G;SKn^WE~WMRYBJ;U=A%DQjtW zOSp|YWZR&7mE_&b#?mz=twS0o$w;oe_y+bRd)}loeFoNWkIq)^fctnrS{)CI;H~Th iXtZnJ(fEq>6o66obAVNp@rbk%9#eg(d{Wf%6!;4}fJyHF literal 0 HcmV?d00001 diff --git a/service/service-order/target/classes/logback-spring.xml b/service/service-order/target/classes/logback-spring.xml new file mode 100644 index 0000000..d970337 --- /dev/null +++ b/service/service-order/target/classes/logback-spring.xml @@ -0,0 +1,65 @@ + + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-order/target/classes/mapper/OrderInfoMapper.xml b/service/service-order/target/classes/mapper/OrderInfoMapper.xml new file mode 100644 index 0000000..7e2bea3 --- /dev/null +++ b/service/service-order/target/classes/mapper/OrderInfoMapper.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/service/service-payment/pom.xml b/service/service-payment/pom.xml new file mode 100644 index 0000000..04afa5a --- /dev/null +++ b/service/service-payment/pom.xml @@ -0,0 +1,47 @@ + + + + service + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-payment + jar + 1.0 + + + true + + + + + com.github.wechatpay-apiv3 + wechatpay-java + 0.2.7 + + + org.apache.httpcomponents + httpclient + 4.5.1 + + + com.atguigu.tingshu + rabbit-util + 1.0 + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/service/service-payment/src/main/java/com/atguigu/tingshu/ServicePaymentApplication.java b/service/service-payment/src/main/java/com/atguigu/tingshu/ServicePaymentApplication.java new file mode 100644 index 0000000..dd52f11 --- /dev/null +++ b/service/service-payment/src/main/java/com/atguigu/tingshu/ServicePaymentApplication.java @@ -0,0 +1,17 @@ +package com.atguigu.tingshu; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@EnableFeignClients +@EnableDiscoveryClient +@SpringBootApplication +public class ServicePaymentApplication { + + public static void main(String[] args) { + SpringApplication.run(ServicePaymentApplication.class, args); + } +} diff --git a/service/service-payment/src/main/java/com/atguigu/tingshu/payment/api/WxPayApiController.java b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/api/WxPayApiController.java new file mode 100644 index 0000000..c294b50 --- /dev/null +++ b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/api/WxPayApiController.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.payment.api; + +import com.atguigu.tingshu.payment.service.WxPayService; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "微信支付接口") +@RestController +@RequestMapping("api/payment") +@Slf4j +public class WxPayApiController { + + @Autowired + private WxPayService wxPayService; + +} diff --git a/service/service-payment/src/main/java/com/atguigu/tingshu/payment/config/WxPayV3Config.java b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/config/WxPayV3Config.java new file mode 100644 index 0000000..f6b0e00 --- /dev/null +++ b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/config/WxPayV3Config.java @@ -0,0 +1,36 @@ +package com.atguigu.tingshu.payment.config; + +import com.wechat.pay.java.core.RSAAutoCertificateConfig; +import com.wechat.pay.java.service.payments.jsapi.JsapiServiceExtension; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix="wechat.v3pay") //读取节点 +@Data +public class WxPayV3Config { + + private String appid; + /** 商户号 */ + public String merchantId; + /** 商户API私钥路径 */ + public String privateKeyPath; + /** 商户证书序列号 */ + public String merchantSerialNumber; + /** 商户APIV3密钥 */ + public String apiV3key; + /** 回调地址 */ + private String notifyUrl; + + @Bean + public RSAAutoCertificateConfig rsaAutoCertificateConfig(){ + return new RSAAutoCertificateConfig.Builder() + .merchantId(this.merchantId) + .privateKeyFromPath(privateKeyPath) + .merchantSerialNumber(merchantSerialNumber) + .apiV3Key(apiV3key) + .build(); + } +} diff --git a/service/service-payment/src/main/java/com/atguigu/tingshu/payment/mapper/PaymentInfoMapper.java b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/mapper/PaymentInfoMapper.java new file mode 100644 index 0000000..4bea068 --- /dev/null +++ b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/mapper/PaymentInfoMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.payment.mapper; + +import com.atguigu.tingshu.model.payment.PaymentInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface PaymentInfoMapper extends BaseMapper { + +} diff --git a/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/PaymentInfoService.java b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/PaymentInfoService.java new file mode 100644 index 0000000..1fe37a2 --- /dev/null +++ b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/PaymentInfoService.java @@ -0,0 +1,8 @@ +package com.atguigu.tingshu.payment.service; + +import com.atguigu.tingshu.model.payment.PaymentInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface PaymentInfoService extends IService { + +} diff --git a/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/WxPayService.java b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/WxPayService.java new file mode 100644 index 0000000..51eccfe --- /dev/null +++ b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/WxPayService.java @@ -0,0 +1,5 @@ +package com.atguigu.tingshu.payment.service; + +public interface WxPayService { + +} diff --git a/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/impl/PaymentInfoServiceImpl.java b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/impl/PaymentInfoServiceImpl.java new file mode 100644 index 0000000..50ffb3a --- /dev/null +++ b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/impl/PaymentInfoServiceImpl.java @@ -0,0 +1,13 @@ +package com.atguigu.tingshu.payment.service.impl; + +import com.atguigu.tingshu.model.payment.PaymentInfo; +import com.atguigu.tingshu.payment.mapper.PaymentInfoMapper; +import com.atguigu.tingshu.payment.service.PaymentInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +@SuppressWarnings({"all"}) +public class PaymentInfoServiceImpl extends ServiceImpl implements PaymentInfoService { + +} diff --git a/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/impl/WxPayServiceImpl.java b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/impl/WxPayServiceImpl.java new file mode 100644 index 0000000..9aff2df --- /dev/null +++ b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/service/impl/WxPayServiceImpl.java @@ -0,0 +1,16 @@ +package com.atguigu.tingshu.payment.service.impl; + +import com.atguigu.tingshu.payment.service.PaymentInfoService; +import com.atguigu.tingshu.payment.service.WxPayService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class WxPayServiceImpl implements WxPayService { + + @Autowired + private PaymentInfoService paymentInfoService; + +} diff --git a/service/service-payment/src/main/java/com/atguigu/tingshu/payment/util/HttpClient.java b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/util/HttpClient.java new file mode 100644 index 0000000..5fc0b32 --- /dev/null +++ b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/util/HttpClient.java @@ -0,0 +1,169 @@ +package com.atguigu.tingshu.payment.util; + +import org.apache.http.Consts; +import org.apache.http.HttpEntity; +import org.apache.http.NameValuePair; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.*; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.SSLContextBuilder; +import org.apache.http.conn.ssl.TrustStrategy; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; + +import javax.net.ssl.SSLContext; +import java.io.IOException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.text.ParseException; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +/** + * http请求客户端 + * + * @author atguigu + * + */ +public class HttpClient { + private String url; + private Map param; + private int statusCode; + private String content; + private String xmlParam; + private boolean isHttps; + + public boolean isHttps() { + return isHttps; + } + + public void setHttps(boolean isHttps) { + this.isHttps = isHttps; + } + + public String getXmlParam() { + return xmlParam; + } + + public void setXmlParam(String xmlParam) { + this.xmlParam = xmlParam; + } + + public HttpClient(String url, Map param) { + this.url = url; + this.param = param; + } + + public HttpClient(String url) { + this.url = url; + } + + public void setParameter(Map map) { + param = map; + } + + public void addParameter(String key, String value) { + if (param == null) + param = new HashMap(); + param.put(key, value); + } + + public void post() throws ClientProtocolException, IOException { + HttpPost http = new HttpPost(url); + setEntity(http); + execute(http); + } + + public void put() throws ClientProtocolException, IOException { + HttpPut http = new HttpPut(url); + setEntity(http); + execute(http); + } + + public void get() throws ClientProtocolException, IOException { + if (param != null) { + StringBuilder url = new StringBuilder(this.url); + boolean isFirst = true; + for (String key : param.keySet()) { + if (isFirst) + url.append("?"); + else + url.append("&"); + url.append(key).append("=").append(param.get(key)); + } + this.url = url.toString(); + } + HttpGet http = new HttpGet(url); + execute(http); + } + + /** + * set http post,put param + */ + private void setEntity(HttpEntityEnclosingRequestBase http) { + if (param != null) { + List nvps = new LinkedList(); + for (String key : param.keySet()) + nvps.add(new BasicNameValuePair(key, param.get(key))); // 参数 + http.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8)); // 设置参数 + } + if (xmlParam != null) { + http.setEntity(new StringEntity(xmlParam, Consts.UTF_8)); + } + } + + private void execute(HttpUriRequest http) throws ClientProtocolException, + IOException { + CloseableHttpClient httpClient = null; + try { + if (isHttps) { + SSLContext sslContext = new SSLContextBuilder() + .loadTrustMaterial(null, new TrustStrategy() { + // 信任所有 + public boolean isTrusted(X509Certificate[] chain, + String authType) + throws CertificateException { + return true; + } + }).build(); + SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( + sslContext); + httpClient = HttpClients.custom().setSSLSocketFactory(sslsf) + .build(); + } else { + httpClient = HttpClients.createDefault(); + } + CloseableHttpResponse response = httpClient.execute(http); + try { + if (response != null) { + if (response.getStatusLine() != null) + statusCode = response.getStatusLine().getStatusCode(); + HttpEntity entity = response.getEntity(); + // 响应内容 + content = EntityUtils.toString(entity, Consts.UTF_8); + } + } finally { + response.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + httpClient.close(); + } + } + + public int getStatusCode() { + return statusCode; + } + + public String getContent() throws ParseException, IOException { + return content; + } + +} diff --git a/service/service-payment/src/main/java/com/atguigu/tingshu/payment/util/PayUtil.java b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/util/PayUtil.java new file mode 100644 index 0000000..9ccebd5 --- /dev/null +++ b/service/service-payment/src/main/java/com/atguigu/tingshu/payment/util/PayUtil.java @@ -0,0 +1,34 @@ +package com.atguigu.tingshu.payment.util; + +import jakarta.servlet.http.HttpServletRequest; + +import java.io.BufferedReader; +import java.io.IOException; + +public class PayUtil { + + public static String readData(HttpServletRequest request) { + BufferedReader br = null; + try { + StringBuilder result = new StringBuilder(); + br = request.getReader(); + for (String line; (line = br.readLine()) != null; ) { + if (result.length() > 0) { + result.append("\n"); + } + result.append(line); + } + return result.toString(); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + if (br != null) { + try { + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/service/service-payment/src/main/resources/bootstrap.properties b/service/service-payment/src/main/resources/bootstrap.properties new file mode 100644 index 0000000..c796c67 --- /dev/null +++ b/service/service-payment/src/main/resources/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-payment +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-payment/src/main/resources/logback-spring.xml b/service/service-payment/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..d970337 --- /dev/null +++ b/service/service-payment/src/main/resources/logback-spring.xml @@ -0,0 +1,65 @@ + + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-payment/target/classes/bootstrap.properties b/service/service-payment/target/classes/bootstrap.properties new file mode 100644 index 0000000..c796c67 --- /dev/null +++ b/service/service-payment/target/classes/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-payment +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-payment/target/classes/com/atguigu/tingshu/ServicePaymentApplication.class b/service/service-payment/target/classes/com/atguigu/tingshu/ServicePaymentApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..46d3360dc2eb38bba260e7b5e4434d47f44ead2b GIT binary patch literal 905 zcmb7D%We}f6g|$PlZMcyDHO`16}vQ2@eUycD$zh!15^Zs1uM_QnYhf@k;fD0XR!jY z-~;$5#Ptx=Sp+0T^1X9k$M!wfKYo7u4&W&c+o+))pwU4S8w}kGu@pQNI^nOQ3mH3x zjVDSgcfwHbA58+Z7>;9;ap96eB?Wg%C;7bKV`-NvmgnL!liEF7EK(HGRE<7>8w=JmbTCgQ9ryo)+iNuK73#CjGYG?9);_W zW22q?JhQ`QDCBt^8w0u=$k+g4pE<-Ogu}CMvDsQix4L4Ug z0}ubJ6@HscD7w;Kf87lx6c;uj;N3N0V&|oFb2B{`zHv@kN^Fl!VPkow{8117O2R|m zK!*J{g?1{F6O}992(67PNg|}j>-(3QV#>`z>X}rD<}bAG!kPacrHYu&=~AcvD2>Z3 zK2>>ameO9X5T5_Bf1?n{$y$(dGDP7F5m^!_S95YoBU2%AhzAI0mi<=)^V3Xnn=DS6 zk!}vYfPF5*U6MWwbg)y(G66m8lC_B&xJe+s_)!T4w0gndD>mO<)%%A7$_db|V6?D@ dTjak@t4TDIs$svBcW{^V7V5Z1`aZ1#;1{P`{ILK4 literal 0 HcmV?d00001 diff --git a/service/service-payment/target/classes/com/atguigu/tingshu/payment/api/WxPayApiController.class b/service/service-payment/target/classes/com/atguigu/tingshu/payment/api/WxPayApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..d7faf04a394ee75bbe681d32cbd1f51fb5e8ebb5 GIT binary patch literal 956 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 A^Z)<= literal 0 HcmV?d00001 diff --git a/service/service-payment/target/classes/com/atguigu/tingshu/payment/service/PaymentInfoService.class b/service/service-payment/target/classes/com/atguigu/tingshu/payment/service/PaymentInfoService.class new file mode 100644 index 0000000000000000000000000000000000000000..46d7ef8ca354aff266efa38f75e890405719610d GIT binary patch literal 355 zcmbV|O>V+K429o7X@G9J;}-Rz5}UMLRzgB*rJP_A++k2=24!YYxLOxIKo5n;4~h^= z7Pe(u{`8*zPrrWv-tm-RB(N-;AsJNEDpJr^`E8`VJQ}uvJXZ%@Fn#y^%Ko^lA0>DY zc;3l_q*7W%U-^!Ukl<0^wI$}#8NG3l%rTci`+XTbaUIxt?d$+vU2p=kOe-rxtXQC4 z--6Ti9niP#=+>KY8!iWjSI*LpRA8RDSQY%K%SOlIYI_m-(kg3A3XGeWG>-&ENV+`5 HtgG`ggJ*Kt literal 0 HcmV?d00001 diff --git a/service/service-payment/target/classes/com/atguigu/tingshu/payment/service/WxPayService.class b/service/service-payment/target/classes/com/atguigu/tingshu/payment/service/WxPayService.class new file mode 100644 index 0000000000000000000000000000000000000000..0041a630c4187c9a1e182a214a30a25d80aa5dc4 GIT binary patch literal 141 zcmX^0Z`VEs1_oOOc6J6PMh1iA{9OISlJwHd^iutj%)IpCj8grA#LC>%yb}H5)S|M? zoIo~qMvjy-bnKEelaY!P z$|41+e@1NsIV*$q=QP%mOj*dmeX`Gcfw?WR6n6xg>l?!kUI~1u_*Bdj3Zd`xtB5ANF&H^tdOS77rwB(wbjt*`D_3oQ1@>VsrP+8?P=!N^kIja4yJo~rx- zY{gRw0=xa^jH@p{JG0Uu6L>wK+^U#7&$_AkUa0BTe-C3+S!yq*j`6KVvM0L?i&6X) zf2t|ldAgze=bffn9-fG=+8wy$$9j({T|ds2REm5)Q|C%x^?S0Bj2==TmVMV+7ujFV zvg+%7=W`iK&mKAP%IFK{f5;HE*Dg*<{l{n-*3e; literal 0 HcmV?d00001 diff --git a/service/service-payment/target/classes/com/atguigu/tingshu/payment/service/impl/WxPayServiceImpl.class b/service/service-payment/target/classes/com/atguigu/tingshu/payment/service/impl/WxPayServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..a64ba19685a42e2cd6e461532568b509049a4d82 GIT binary patch literal 847 zcma)5O>fgc5Ph4bagrL^21;r93{s_(1IvK}$OWmYRH;$~h@x=bxEptay&J99E%{l9 z1Be4ZfFFgJbxeq$hg@bnGdpi)-i&|#`u+pJOFU|$hLr&I5UXe~Y>dT);Hl6Fe={7* z*fBH?lveH)!%A;|5TMEMA~qQpE-6$}aHn*VpBH>0rkT`^=h9xNSaOw3QvTu7TQNPI zc}~dDMjLAZ!VuSRonhP9gy-q#*_iiDl1O_jVrT4>p_NECb204o`hUARN=2SW`~812 zqZR^egxExfI!#T&(E0ySfSU|YmuY{obAqa-JJBOkjl=M~zYGu&;CWfdj2L#_722sx z4pgp&sXWx$IN_AhxrZ%hn^+=tWJM+~js3`nQs|tIX8dq5PvD1zGndNBGlH!jnKQ|- z-d9?_F0!Gt?*+k^RKy}32&=qZIqU9RQN3uXF|J%Em24iwX>}j%Q&ZSj9xGpQYmq>| z`X_#e481F-%bm2+xamalirxraT4)UnH%RXKz0$$fu!URX+otaZ>D#4``P(IHhb&H- zkzRfL73^~v-X-b7z#8t53}+8;7x&0&;{H6jTSkCZC-{ce7p!{#M%DiS_`l@=Sv5SI I_s|7?13g>g?*IS* literal 0 HcmV?d00001 diff --git a/service/service-payment/target/classes/com/atguigu/tingshu/payment/util/HttpClient$1.class b/service/service-payment/target/classes/com/atguigu/tingshu/payment/util/HttpClient$1.class new file mode 100644 index 0000000000000000000000000000000000000000..d9d4ddfc2b92c3738fc91d2016f1dbbec26c02d2 GIT binary patch literal 1051 zcmb7DO>Yx15Pi-^H%S8t1Z8X^QIXJd9st&9##g%DqQLGPk?j%+C^{&Wv4}E5^-#PQ zJP@JBpA8PBYY6zE3YFPr$TpgN2d5dl5pNima6oy>ufcN4=n*$RIBfSYj zt1(wC%|1h}6AdLprK>`@pNs}F?ukJ_mZfgwil8rImFmaFT-r1PpC?Uyt4)3GN#jSu z=OPv(X=F?wMWt=|a>($Y@uq8;(9%s}WhUH}vEi@oweELFP;Zq>Ew-mVmMvh{X84$=EhIW^kV@Ty1)K0++!>T(aphxQr_lah2k7WVvQj6jKM#QEI$lA#1p4wH4H{ZY?Wl M&|adTv?Ka{1JuI{rvLx| literal 0 HcmV?d00001 diff --git a/service/service-payment/target/classes/com/atguigu/tingshu/payment/util/HttpClient.class b/service/service-payment/target/classes/com/atguigu/tingshu/payment/util/HttpClient.class new file mode 100644 index 0000000000000000000000000000000000000000..227c3780cdf43c16e8c7377de7c142b560e42095 GIT binary patch literal 7033 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 Vfy`E;P~L_b3znp8SP#o?`~xh`YMuZ9 literal 0 HcmV?d00001 diff --git a/service/service-payment/target/classes/logback-spring.xml b/service/service-payment/target/classes/logback-spring.xml new file mode 100644 index 0000000..d970337 --- /dev/null +++ b/service/service-payment/target/classes/logback-spring.xml @@ -0,0 +1,65 @@ + + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-search/pom.xml b/service/service-search/pom.xml new file mode 100644 index 0000000..ba14291 --- /dev/null +++ b/service/service-search/pom.xml @@ -0,0 +1,50 @@ + + + + service + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-search + jar + 1.0 + + + true + + + + + com.atguigu.tingshu + rabbit-util + 1.0 + + + org.springframework.boot + spring-boot-starter-data-elasticsearch + + + + org.apache.kafka + kafka-clients + + + org.apache.kafka + kafka-streams + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/service/service-search/src/main/java/com/atguigu/tingshu/ServiceSearchApplication.java b/service/service-search/src/main/java/com/atguigu/tingshu/ServiceSearchApplication.java new file mode 100644 index 0000000..8f93f25 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/tingshu/ServiceSearchApplication.java @@ -0,0 +1,20 @@ +package com.atguigu.tingshu; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.EnableAsync; + +@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源自动配置 +@EnableDiscoveryClient +@EnableFeignClients +@EnableAsync +public class ServiceSearchApplication { + + public static void main(String[] args) { + SpringApplication.run(ServiceSearchApplication.class, args); + } + +} diff --git a/service/service-search/src/main/java/com/atguigu/tingshu/search/api/SearchApiController.java b/service/service-search/src/main/java/com/atguigu/tingshu/search/api/SearchApiController.java new file mode 100644 index 0000000..2a6e2d6 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/tingshu/search/api/SearchApiController.java @@ -0,0 +1,20 @@ +package com.atguigu.tingshu.search.api; + +import com.atguigu.tingshu.search.service.SearchService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "搜索专辑管理") +@RestController +@RequestMapping("api/search") +@SuppressWarnings({"all"}) +public class SearchApiController { + + @Autowired + private SearchService searchService; + + +} + diff --git a/service/service-search/src/main/java/com/atguigu/tingshu/search/api/itemApiController.java b/service/service-search/src/main/java/com/atguigu/tingshu/search/api/itemApiController.java new file mode 100644 index 0000000..c90aae9 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/tingshu/search/api/itemApiController.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.search.api; + +import com.atguigu.tingshu.search.service.ItemService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "专辑详情管理") +@RestController +@RequestMapping("api/search") +@SuppressWarnings({"all"}) +public class itemApiController { + + @Autowired + private ItemService itemService; + +} + diff --git a/service/service-search/src/main/java/com/atguigu/tingshu/search/service/ItemService.java b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/ItemService.java new file mode 100644 index 0000000..2b15983 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/ItemService.java @@ -0,0 +1,7 @@ +package com.atguigu.tingshu.search.service; + +public interface ItemService { + + + +} diff --git a/service/service-search/src/main/java/com/atguigu/tingshu/search/service/SearchService.java b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/SearchService.java new file mode 100644 index 0000000..6eebf05 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/SearchService.java @@ -0,0 +1,7 @@ +package com.atguigu.tingshu.search.service; + +public interface SearchService { + + + +} diff --git a/service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/ItemServiceImpl.java b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/ItemServiceImpl.java new file mode 100644 index 0000000..a12f933 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/ItemServiceImpl.java @@ -0,0 +1,13 @@ +package com.atguigu.tingshu.search.service.impl; + +import com.atguigu.tingshu.search.service.ItemService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@SuppressWarnings({"all"}) +public class ItemServiceImpl implements ItemService { + + +} diff --git a/service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.java b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.java new file mode 100644 index 0000000..9bf6598 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.java @@ -0,0 +1,14 @@ +package com.atguigu.tingshu.search.service.impl; + +import com.atguigu.tingshu.search.service.SearchService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + + +@Slf4j +@Service +@SuppressWarnings({"all"}) +public class SearchServiceImpl implements SearchService { + + +} diff --git a/service/service-search/src/main/resources/bootstrap.properties b/service/service-search/src/main/resources/bootstrap.properties new file mode 100644 index 0000000..0296666 --- /dev/null +++ b/service/service-search/src/main/resources/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-search +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-search/src/main/resources/logback-spring.xml b/service/service-search/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..d970337 --- /dev/null +++ b/service/service-search/src/main/resources/logback-spring.xml @@ -0,0 +1,65 @@ + + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-search/target/classes/bootstrap.properties b/service/service-search/target/classes/bootstrap.properties new file mode 100644 index 0000000..0296666 --- /dev/null +++ b/service/service-search/target/classes/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-search +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-search/target/classes/com/atguigu/tingshu/ServiceSearchApplication.class b/service/service-search/target/classes/com/atguigu/tingshu/ServiceSearchApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..50bb4eaf8803b5fc94b3fb989c1d150e0bb4b0ce GIT binary patch literal 1058 zcmb7DO>Yx15PfdbZW=;cQYf@gpq$bO)i*#2RBBTyA%zbSlpcC=9B1ROu_LcHv_Fdz zhyy=>AB7liLYqTCu#!DHGk$OEH};R8-@XHQfk!1QU@=0Wj3q2HtPjLk@I;uHzwHc^ z^bE_-wbA~7VX?Z`j!n5QF0sGbu;^~t)Ayko8Btvon`q>3&x44rE8YFCX!q-p(ZCereOtiIQr z$1JV!>fG~&H9gv`6P-lOl%Q}(*BJ^8+f@u}O>NYhY}irmLs-jDX<8|gws1Q5(_q2( zb;_{c{2wJkm7&mdqRr~O1GFhGTui(hbJEnC*UI;8_nip3dF5zfsbw=K)rk%}-T6}s z_Je#3TkkXD^-#5Ss)G#1Sf96uhz{nem-j_v-ja;Dd}`XIBWl=;jC8U{oy#N(62AIZ zszJ9S`LXa~a)?8!bJ?bFbBOh5E|*Mf*5xwM%6Q(@skCF|F8E6mI&}QoZ{&F*dG;3) zJ5r{nbZn;Rlkh)5rUZRD7n;hx>ShVuIxa3noDv+S7e>~xi-;ap_!hvz)1rBeJWiI8 zU8;Qn`<$oOX%1;%6*p)uPZpqp4f0lS6Ss&YfS=@KK(P|lzGCI{3LjoE2ptjXilc~4 n+@|;)8cTHR$ShzhpSN+B>^2IxN9A_Tz$EVD0mUBD*adz8?`<*~ literal 0 HcmV?d00001 diff --git a/service/service-search/target/classes/com/atguigu/tingshu/search/api/SearchApiController.class b/service/service-search/target/classes/com/atguigu/tingshu/search/api/SearchApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..105a7c4162444eb28afb7459ea3406865b11858e GIT binary patch literal 763 zcmaJp#gQATx!0TZCfB={ec0j$sDo%} z-~*75kU$jq0KNlZz5+4#+JY2Lnwg!)IXio1fBgA=3;>T|s|_nqYeBsO4QL8jJD>?+ zPDbI2^gw1oK=Y9{Iy@0j+rBku!8rkUGdo5KDryxmXrufnqL<{d5mKSCUmbge-mxY) zo9EIA=*}DZ(oJ+GnIt)b#m~DIObg6I0h_zg1U;4m?RA>Vo-sC1(AIbX4-)GX`oi%* z`;NwPYTY5Gl8ncF%7S&Tk^TX&7lWN@Cx=X1-?2j;X*JPCK9A#6x;YQ*DMP7;#tn@PA=UyIj!a&{vVs z&!{L^e1y^D+k#0c^u5kUThih=13mY74z69an#$QH7;8p+t literal 0 HcmV?d00001 diff --git a/service/service-search/target/classes/com/atguigu/tingshu/search/api/itemApiController.class b/service/service-search/target/classes/com/atguigu/tingshu/search/api/itemApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..a35259a6039e1c1f53572a9c6e4d7e5c851e17d7 GIT binary patch literal 753 zcmaJFc?Q(1NytrF|L` zW@J))67TCIC}`hh!{NSy#>TZl2hJ$Cnb;gDq$Q^%1~#c5mFP9OWQ0^Oa?p9d;4N!{ zvstE{g88bqqurPjEd^aVK-xwPxur*%6?Z~7mdzx9m^^Ek}+ z>Oak97_ppp>ooZ@4Um(%JGOL*e!vy`>OU6UsEk*z5wS%-p)}PF$D3%$pOEe`Q0j4) z(n`9Kn~KmMU*8=aygmB#;pfX&hacY`zIpvWM&nx*7Yx-KFh}( uoRe5B11!Lz#NKoPmSDM_uhj8;O}Y*ZxFGY39#-L!3@%Ht_7s$dE58BSB;2I{ literal 0 HcmV?d00001 diff --git a/service/service-search/target/classes/com/atguigu/tingshu/search/service/ItemService.class b/service/service-search/target/classes/com/atguigu/tingshu/search/service/ItemService.class new file mode 100644 index 0000000000000000000000000000000000000000..d4e0dcf0230a308f013e67bbbbb95365b0082316 GIT binary patch literal 138 zcmX^0Z`VEs1_oOOc6J6PMh3m){9OISlJwHd^iutj%)IpCj8gsL)Wo9X3?NlhmYJNY z?^%+X8w_EyGq5l+2xKLeCFOm)Uq)$ TFfuR$Z3O{F238=+#J~ms=dvad literal 0 HcmV?d00001 diff --git a/service/service-search/target/classes/com/atguigu/tingshu/search/service/SearchService.class b/service/service-search/target/classes/com/atguigu/tingshu/search/service/SearchService.class new file mode 100644 index 0000000000000000000000000000000000000000..2880a3efef10e95aadecc7e3cbc8836b905ad813 GIT binary patch literal 142 zcmX^0Z`VEs1_oOOc6J6PMh1iA{9OISlJwHd^iutj%)IpCj8gsL)Wo9X3?NlhmYJNY z9}MOOLwM{AEQ|~SS&3zd`ZH7XjS*gh-j0{}C`K3k4scxA$sf-LlC|dMDs@WJB T7#Wy>HiG~o11peZVqgORuqG#? literal 0 HcmV?d00001 diff --git a/service/service-search/target/classes/com/atguigu/tingshu/search/service/impl/ItemServiceImpl.class b/service/service-search/target/classes/com/atguigu/tingshu/search/service/impl/ItemServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..c5341b23e22fd4e07c71b56346e7b3d06bd86955 GIT binary patch literal 681 zcma)4O-md>5Ph|-&hBRXS~bQ*4IYHmgMASstPz4B2txuf?7eqvdwVl8z4Y`b{w&EM z;vqjEKPsf!-JnDd9=eKG)m8O)Rlon-{Q~e2?^~#0DndQRG-e13LwPAhCJQaT^oJ_- zgqcHA7=J{V>g@C)GzbT&&4u*3GP)Ap6uKN#qEynQ19tAxq)M24l!;TX^0RT^lyM6! zyowOVn8h4n)jBQ8>|%c?605axCo=WcT@#vG`EiJ_-ANue9cQvEyF1DMmE9&HEW}tu zn|Wqd6WUKdMOY^6y@329-h}$GJy(SJ#1!gtmG_nVCi@vjctR?(o^&SQNwDq*rX+kw zUNGi4jk<)!VVX@OZ=Ko7rRv0ldCQMz1v&SEE`+tORpCvpdZskY<5N*sFTJq^)98#v z7&%_jg_F6uvhKSmy>iO>>yZ+Z?R2rl0@grS;`cV_$mbC-Uj^G0MuI)DpWgimy17rk zW*gGr#jdiA#~<(pYm6G)=wI>HeFkW@qgyn8U_LY;JTwT?-*K#lb!@N?g`2=%yjQGQ literal 0 HcmV?d00001 diff --git a/service/service-search/target/classes/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.class b/service/service-search/target/classes/com/atguigu/tingshu/search/service/impl/SearchServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..81ebc584f1f99c05df3db2d2f9a5dce88e8706c0 GIT binary patch literal 689 zcma)4!A{#i5PcH@PJ&w?ZJ|JE#i3H@f#txZGE}ONkSbZNL{RP>Z}#@j?;8Mzc-KJ#a{-zm=CMFn9?J_UQkiSo`m_!MaO;XXHa{Ze6!b}Gp zECvWeJi~Lsnsr(f>G}Rx#8zwNj%DJlyCk%=@-;K9=H6s#U<$)pKIggh(i@wzlwNJc z#PPDuoy^n^>%NP^E2pf#oG9MZbZrr~*~SJ4FZkQ2+~j9cVSXJPUojG#iSzu2YtYYW zd6i>T1{Sf#F{}^ZHP#umxY6Is+tUir?gqcmzQR(~fPac(-Jr$OHW@YW23s@sEpP`p C0k3}m literal 0 HcmV?d00001 diff --git a/service/service-search/target/classes/logback-spring.xml b/service/service-search/target/classes/logback-spring.xml new file mode 100644 index 0000000..d970337 --- /dev/null +++ b/service/service-search/target/classes/logback-spring.xml @@ -0,0 +1,65 @@ + + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-user/pom.xml b/service/service-user/pom.xml new file mode 100644 index 0000000..e2d8a92 --- /dev/null +++ b/service/service-user/pom.xml @@ -0,0 +1,46 @@ + + + + service + com.atguigu.tingshu + 1.0 + + 4.0.0 + + service-user + jar + 1.0 + + + true + + + + + com.atguigu.tingshu + rabbit-util + 1.0 + + + com.github.binarywang + weixin-java-miniapp + 4.1.0 + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/ServiceUserApplication.java b/service/service-user/src/main/java/com/atguigu/tingshu/ServiceUserApplication.java new file mode 100644 index 0000000..31ffbd6 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/ServiceUserApplication.java @@ -0,0 +1,16 @@ +package com.atguigu.tingshu; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@SpringBootApplication +@EnableDiscoveryClient +@EnableFeignClients +public class ServiceUserApplication { + + public static void main(String[] args) { + SpringApplication.run(ServiceUserApplication.class, args); + } +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserInfoApiController.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserInfoApiController.java new file mode 100644 index 0000000..0e76096 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserInfoApiController.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.user.api; + +import com.atguigu.tingshu.user.service.UserInfoService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "用户管理接口") +@RestController +@RequestMapping("api/user") +@SuppressWarnings({"all"}) +public class UserInfoApiController { + + @Autowired + private UserInfoService userInfoService; + +} + diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserListenProcessApiController.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserListenProcessApiController.java new file mode 100644 index 0000000..090660a --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/api/UserListenProcessApiController.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.user.api; + +import com.atguigu.tingshu.user.service.UserListenProcessService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "用户声音播放进度管理接口") +@RestController +@RequestMapping("api/user") +@SuppressWarnings({"all"}) +public class UserListenProcessApiController { + + @Autowired + private UserListenProcessService userListenProcessService; + +} + diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/api/VipServiceConfigApiController.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/api/VipServiceConfigApiController.java new file mode 100644 index 0000000..8b0cdbf --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/api/VipServiceConfigApiController.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.user.api; + +import com.atguigu.tingshu.user.service.VipServiceConfigService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "VIP服务配置管理接口") +@RestController +@RequestMapping("api/user") +@SuppressWarnings({"all"}) +public class VipServiceConfigApiController { + + @Autowired + private VipServiceConfigService vipServiceConfigService; + +} + diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/api/WxLoginApiController.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/api/WxLoginApiController.java new file mode 100644 index 0000000..5b67c1e --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/api/WxLoginApiController.java @@ -0,0 +1,20 @@ +package com.atguigu.tingshu.user.api; + +import com.atguigu.tingshu.user.service.UserInfoService; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "微信授权登录接口") +@RestController +@RequestMapping("/api/user/wxLogin") +@Slf4j +public class WxLoginApiController { + + @Autowired + private UserInfoService userInfoService; + + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserCertificationMapper.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserCertificationMapper.java new file mode 100644 index 0000000..60f4885 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserCertificationMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.user.mapper; + +import com.atguigu.tingshu.model.user.UserCertification; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserCertificationMapper extends BaseMapper { + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserInfoMapper.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserInfoMapper.java new file mode 100644 index 0000000..4bf6d9d --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserInfoMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.user.mapper; + +import com.atguigu.tingshu.model.user.UserInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserInfoMapper extends BaseMapper { + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserPaidAlbumMapper.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserPaidAlbumMapper.java new file mode 100644 index 0000000..d373d48 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserPaidAlbumMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.user.mapper; + +import com.atguigu.tingshu.model.user.UserPaidAlbum; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserPaidAlbumMapper extends BaseMapper { + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserPaidTrackMapper.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserPaidTrackMapper.java new file mode 100644 index 0000000..1995087 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserPaidTrackMapper.java @@ -0,0 +1,11 @@ +package com.atguigu.tingshu.user.mapper; + +import com.atguigu.tingshu.model.user.UserPaidTrack; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserPaidTrackMapper extends BaseMapper { + + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserStatMapper.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserStatMapper.java new file mode 100644 index 0000000..ed556c4 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserStatMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.user.mapper; + +import com.atguigu.tingshu.model.user.UserStat; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserStatMapper extends BaseMapper { + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserVipServiceMapper.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserVipServiceMapper.java new file mode 100644 index 0000000..7da4827 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/UserVipServiceMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.user.mapper; + +import com.atguigu.tingshu.model.user.UserVipService; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserVipServiceMapper extends BaseMapper { + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/VipServiceConfigMapper.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/VipServiceConfigMapper.java new file mode 100644 index 0000000..4fe5171 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/mapper/VipServiceConfigMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.tingshu.user.mapper; + +import com.atguigu.tingshu.model.user.VipServiceConfig; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface VipServiceConfigMapper extends BaseMapper { + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserInfoService.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserInfoService.java new file mode 100644 index 0000000..a8e1031 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserInfoService.java @@ -0,0 +1,8 @@ +package com.atguigu.tingshu.user.service; + +import com.atguigu.tingshu.model.user.UserInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface UserInfoService extends IService { + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserListenProcessService.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserListenProcessService.java new file mode 100644 index 0000000..723d5ec --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserListenProcessService.java @@ -0,0 +1,5 @@ +package com.atguigu.tingshu.user.service; + +public interface UserListenProcessService { + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserPaidTrackService.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserPaidTrackService.java new file mode 100644 index 0000000..034fc6b --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/UserPaidTrackService.java @@ -0,0 +1,8 @@ +package com.atguigu.tingshu.user.service; + +import com.atguigu.tingshu.model.user.UserPaidTrack; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface UserPaidTrackService extends IService { + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/service/VipServiceConfigService.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/VipServiceConfigService.java new file mode 100644 index 0000000..8d9ce0c --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/VipServiceConfigService.java @@ -0,0 +1,8 @@ +package com.atguigu.tingshu.user.service; + +import com.atguigu.tingshu.model.user.VipServiceConfig; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface VipServiceConfigService extends IService { + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserInfoServiceImpl.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserInfoServiceImpl.java new file mode 100644 index 0000000..7e5f895 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserInfoServiceImpl.java @@ -0,0 +1,19 @@ +package com.atguigu.tingshu.user.service.impl; + +import com.atguigu.tingshu.model.user.UserInfo; +import com.atguigu.tingshu.user.mapper.UserInfoMapper; +import com.atguigu.tingshu.user.service.UserInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@SuppressWarnings({"all"}) +public class UserInfoServiceImpl extends ServiceImpl implements UserInfoService { + + @Autowired + private UserInfoMapper userInfoMapper; + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserListenProcessServiceImpl.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserListenProcessServiceImpl.java new file mode 100644 index 0000000..e0c32e6 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserListenProcessServiceImpl.java @@ -0,0 +1,15 @@ +package com.atguigu.tingshu.user.service.impl; + +import com.atguigu.tingshu.user.service.UserListenProcessService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.stereotype.Service; + +@Service +@SuppressWarnings({"all"}) +public class UserListenProcessServiceImpl implements UserListenProcessService { + + @Autowired + private MongoTemplate mongoTemplate; + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserPaidTrackServiceImpl.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserPaidTrackServiceImpl.java new file mode 100644 index 0000000..72a0ffd --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/UserPaidTrackServiceImpl.java @@ -0,0 +1,18 @@ +package com.atguigu.tingshu.user.service.impl; + +import com.atguigu.tingshu.model.user.UserPaidTrack; +import com.atguigu.tingshu.user.mapper.UserPaidAlbumMapper; +import com.atguigu.tingshu.user.mapper.UserPaidTrackMapper; +import com.atguigu.tingshu.user.service.UserPaidTrackService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +@SuppressWarnings({"all"}) +public class UserPaidTrackServiceImpl extends ServiceImpl implements UserPaidTrackService { + + @Autowired + private UserPaidAlbumMapper userPaidAlbumMapper; + +} diff --git a/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/VipServiceConfigServiceImpl.java b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/VipServiceConfigServiceImpl.java new file mode 100644 index 0000000..2f4aeeb --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/tingshu/user/service/impl/VipServiceConfigServiceImpl.java @@ -0,0 +1,18 @@ +package com.atguigu.tingshu.user.service.impl; + +import com.atguigu.tingshu.model.user.VipServiceConfig; +import com.atguigu.tingshu.user.mapper.VipServiceConfigMapper; +import com.atguigu.tingshu.user.service.VipServiceConfigService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +@SuppressWarnings({"all"}) +public class VipServiceConfigServiceImpl extends ServiceImpl implements VipServiceConfigService { + + @Autowired + private VipServiceConfigMapper vipServiceConfigMapper; + + +} diff --git a/service/service-user/src/main/resources/bootstrap.properties b/service/service-user/src/main/resources/bootstrap.properties new file mode 100644 index 0000000..17c31f7 --- /dev/null +++ b/service/service-user/src/main/resources/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-user +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-user/src/main/resources/logback-spring.xml b/service/service-user/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..d970337 --- /dev/null +++ b/service/service-user/src/main/resources/logback-spring.xml @@ -0,0 +1,65 @@ + + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-user/src/main/resources/mapper/UserInfoMapper.xml b/service/service-user/src/main/resources/mapper/UserInfoMapper.xml new file mode 100644 index 0000000..b702968 --- /dev/null +++ b/service/service-user/src/main/resources/mapper/UserInfoMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + id,phone,password,wx_open_id,nickname,avatar_url,is_vip,vip_expire_time,gender,birthday,intro,certification_type,certification_status,status,create_time,update_time,is_deleted + + + + + + and phone like CONCAT('%',#{vo.phone},'%') + + + and nickname like CONCAT('%',#{nickname},'%') + + + and create_time >= #{vo.createTimeBegin} + + + and create_time <= #{vo.createTimeEnd} + + and is_deleted = 0 + + + + + + + diff --git a/service/service-user/target/classes/bootstrap.properties b/service/service-user/target/classes/bootstrap.properties new file mode 100644 index 0000000..17c31f7 --- /dev/null +++ b/service/service-user/target/classes/bootstrap.properties @@ -0,0 +1,8 @@ +spring.application.name=service-user +spring.profiles.active=dev +spring.main.allow-bean-definition-overriding=true +spring.cloud.nacos.discovery.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.server-addr=192.168.200.6:8848 +spring.cloud.nacos.config.prefix=${spring.application.name} +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml diff --git a/service/service-user/target/classes/com/atguigu/tingshu/ServiceUserApplication.class b/service/service-user/target/classes/com/atguigu/tingshu/ServiceUserApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..5713afe49af16edffb6ad223715acb947f9fb61c GIT binary patch literal 896 zcma)5O>Yx15Pi-^H%&uQQYe%H6}L1(_=b=Im1v-+?;> zlb;av#)P_85vIAkkZx(_uZ3sLNlP2s6O-FWo+;nwVKw~^Jar5Q zZ*uKaDyJ$_o&v3nE5<`GCzZ?-Gd1I+CB=l}o! literal 0 HcmV?d00001 diff --git a/service/service-user/target/classes/com/atguigu/tingshu/user/api/UserInfoApiController.class b/service/service-user/target/classes/com/atguigu/tingshu/user/api/UserInfoApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..53bc2c6239b3257f6debad1b6eb63652855d06f3 GIT binary patch literal 765 zcmZ`%yKYlK5S@)*!8kaCXOfC8P-LV)5h;LVMM6TlfRqF`RCBM_Hyf^ZFZ-~?4JJ5ipfaN0^ z6BeX%e3l-`%nNAVS6cap0%{w#`z=@$u$7q+lFx(61A3)%cNj1@X^~2W&-w6J4^6LB zyGDC!ib7fe-PjQG`_hh8CYdIg%fqd)=ZxzVvm;=2FKDkuvag&<3)$1!c=F0@DL zCZnQHR>k-1{ZE}u=)aogSEd($KhxI literal 0 HcmV?d00001 diff --git a/service/service-user/target/classes/com/atguigu/tingshu/user/api/UserListenProcessApiController.class b/service/service-user/target/classes/com/atguigu/tingshu/user/api/UserListenProcessApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..74d4107548fbb019b127ba20daae680d97793aa6 GIT binary patch literal 828 zcmah{J5N+W6h6bga9srP1yUI;(84KbOc0X|iPiNHz-_GN-W`U6cV{m1*o}X{SgA2| z7RC^bjYeZZLV>;iV|VpW7|*>D#mH)N&YZ{ho!5N%zPAqmOE6c5F(}ob+<*#H8BA@8 zuHdQAirFj9;litcDsYclxsAYsla`AN`8|3>=)BZ- ztx2SF%?y`~_SU4Sv>2xj$5Lp=*G1xueaOWx0B;6wdT3>vXv@o{O}$M!z&m5-!p0}L(=x8DvP@Ah{-e0%w6@ci9id;ja_7yZ3A!}qU- z&mIk)yzW2U8MV8fjCqW@eW(UskF>c^T=-m0e&T=`jW;Nao1^6EI1#@iPIY;A9b> dF660#bPh^zn&M|1oP~1~m?2~KJ}?L8e*nWj0oMQk literal 0 HcmV?d00001 diff --git a/service/service-user/target/classes/com/atguigu/tingshu/user/api/VipServiceConfigApiController.class b/service/service-user/target/classes/com/atguigu/tingshu/user/api/VipServiceConfigApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..8a8748f973298b2a5d18e4d756380c86b1fd5caa GIT binary patch literal 814 zcmah{%W4!s6up&s#c^U{e8e~_T}2nxA{)^t3;{uCA0(kSuBv-#DmV62b?VWBAD{~% z>Ib+9;x^z)5cC85k7V#C#M|wlK{L9!x9;Pd`>LJ1o zA$TUV;*XLYnR*7zHPq{Fgdp&cKH)EoPZi(dfV3*L;-%0AK7*G*qCn2%7)hhdmVyCsO8 z!D3`mk;TGdX-}MWzl~IHZTcYpT@cl5Z<=6Jc@N7vSO2-r8|AqetVC$I8wsW82E{5j z!W|pPaW9nPTSAosX_}uwH@^S)=+l1JmTfhp`G{?v)PRddy=dEf+1tA3Uj= zQ0ax1S~S{Q6GhS%QN)ovN+k?ph+)jwkh`dHeS=eMDD9F6ys=Li3Ze8}7sJ$abzjY5 zB%GU@ss4+cDI!OQ9WabPMES55N~#?894tAgm$S^^Q(gjI>X>&*IfMfqlX7tm`Clxko;h;|2BTrsf?xg7jygkc}a0e=J+>6lhRS_nYXeyjxe0%Ht&+l(`HlOdje)j9t z*X?gFcQ)T`zj)iLO&wY1b*0x1@bYEp{QeFR`QaTt9QrsW^c~S^(KHB}Yl|o*VI%2| zrpwytE-EHzgEI6tWNz M3uIh;2<9;L2T0fvCjbBd literal 0 HcmV?d00001 diff --git a/service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserCertificationMapper.class b/service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserCertificationMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..4d7c5ebce83c19b37c3fb75145740db973288b1c GIT binary patch literal 437 zcmb7>&q@P948}86yS6HL6+C-1M-Qul3Z7O97QJV;<1}SwW|=>VujauA@S((X7ZKW% zhna*)^5gq5U*8{}0B{9I1&kD2G~Oa5li6fU>`Yu{%uxrl)O8Y`B)`)k@e4PU*t>`R zy?|W>$18dzY{?m%)hpek0>%n(jjYLAUiggmy_T`qwK+;5=wI$FMLnPtOy+DHr5v<^ zw`vnwR{sQE_5+)ytY7GMu(su?ye<_?=RSu<-*YQ6PPcjnvFB@b3QiugOKkNsN3L6a zK2h^gaa>C@_Mv(4 zPvCX`U_VRa*Sa1OjZyO3Tw%WQsjKvZt>yQN(HdG??0QkSTqYN7qhD>XWv%a=^HD;1 v7Zk1v-x=bTtBoexXC?l-Km#b3xhNdSI+B?~s!a9?jxpzfQw25XR318d^YNgco4s2F3tV8JL1VRIpzX%e~5fqS!{_)fjjH9tv?ygiyON z*mv^h`|11aukVjf0JwpZ0wxNsn&6O<$!szv_9m_}=BRsg)OAu`q<rTB0^Hzg3Xa>5(Y@D{ICeHi5qka0yrZZ`l!Dokji;1*tsqvr z(6ag`@Ol{74dg#F literal 0 HcmV?d00001 diff --git a/service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserPaidTrackMapper.class b/service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserPaidTrackMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..86f5119afd0b2ee507012908835734b7cd328966 GIT binary patch literal 425 zcmb7>Jx&8L5QWD9vLt{+2^XMb3d#i}D5w?@5ul&lSk8pCz48wdSEJwn911bn6+%fz zVb93V^XWbN>-*yq0IuMufRTcW##^LhGMkKvor%kgIqHCxx=zZo^fThcQ=sPczCSBq zSHba$-UwTA1|RB`Zc+hb1-Qo5Pzok>FQ$fW literal 0 HcmV?d00001 diff --git a/service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserStatMapper.class b/service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserStatMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..a10f56aff6d35801510db7acf49231c879f2f561 GIT binary patch literal 410 zcmb7=O-{ow5QWDD8d^X?V#Nhmb`B6gf(5G}BqG>PQp=snKT&KWaWxhkfI}gsiK0r~ zv9RA*&;C4bety5c0pJcU3YaNawZS1Jli6fU>`mNc%u)B~sOv=Dq^=XC=iykuv4YDj zeGppm249-3Zc_ns1-K(M6dbQZM)%oJ;@H_7#pv~fd!(pGl!8Ug##73@R^Y2cXj%Oe zcso2e%;LgY+cD7;rMxc{EbEZ_RzI)WXY;CpcMZxuJ_KBT-=g5uK58ekE1P31# u+*F}ANFB8sjXY#U+F!sCRLWcw9LYM7nS)e?>@zrp#h^<#6P=5H4)6z6hJe}t literal 0 HcmV?d00001 diff --git a/service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserVipServiceMapper.class b/service/service-user/target/classes/com/atguigu/tingshu/user/mapper/UserVipServiceMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..af3a230dd3398e7b591c2088af817c279fc39e69 GIT binary patch literal 428 zcmb7>zfQw25XR318d^YNaD@fHo zw5!Ait15QZnKZrxSEt9bY5+`Lo;6+BfIEbM*S9ka7ENokUTujauA@S((PiwM1W zNdAzS`S}0j>-*yq0Pf%{gPDSx+8Lyvqv(i1toGZ8(Q}7}+BV5r+LF6oYJPI|P4vrf zox!1k^Bwhs4Oxw=YR7fRV6Fi7#EP7ejf-gBD+=PoihJ^_EeF>_~qNID+!@P6`gvI!b>5>6E2?2FI`%bO|R(=c#@Q@BC7n@02W z|J?4ED}X6_5o!#h%oN0(^h$biN=v)*#8stk-xlsJjJt^p_>?AW@4`LpkVM>z4Z;Bf`T`OdWdHD98g14|Fi;IIH66_2tj0^%DnhXqa* zt`@vxYS~$u)eECzfpdl14X|e4N#hfB-!(@GA8iU`zM^qKyxXIncQ}P{CDw6Fy;1m_ z9)rv2KcM%+(XqA8H>TYhJTO*1mI{-~r(T;UX|s&$gZ)nF%|=>wsc@3xEI$$$p&0T7 I#zUR_0U`WyQvd(} literal 0 HcmV?d00001 diff --git a/service/service-user/target/classes/com/atguigu/tingshu/user/service/VipServiceConfigService.class b/service/service-user/target/classes/com/atguigu/tingshu/user/service/VipServiceConfigService.class new file mode 100644 index 0000000000000000000000000000000000000000..310661817e2e95da7780ea427e472d7739f87cca GIT binary patch literal 364 zcmbV|O>V+45QU#9GzB(2K+n)wu&ESagM@^H)I}urPB8AE#741=+8(V74#1%hCPZCi z$zuMbnNRP{`SN!HFvB=OPvE1l6-loH>p-53c3**lQ#Hjna-nF$hwR=itl6<{hXj3r z*S$PSDy7l%neSEM6Fdt{Zp>WTinlgU^^;4_?ob9t>f0;h*qVR(s>KNmGuB4>P%DAo zbr+njAAnAqqprKkZdG~r*!7mqQ-M)tLtUsPmr==Eccs<)eiInI3OvOa#E$|!Bu#$7 Hu&JXf{K9r9 literal 0 HcmV?d00001 diff --git a/service/service-user/target/classes/com/atguigu/tingshu/user/service/impl/UserInfoServiceImpl.class b/service/service-user/target/classes/com/atguigu/tingshu/user/service/impl/UserInfoServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..e06a453d17d6a872fcc94072e67c4542121530f3 GIT binary patch literal 1106 zcmbVLOK%e~5dNH`&7&cO@aTg_DGw>-fH`mgZKzaLs#Ga(AdtJ0I9r!pJMwy4^0N>J z5C?uhe-vVNHycVw1mfcHjAy?2W;}E8R7=lgEufC?+X*Ep^14o z=?kZ#aS%sbesoet%4i-*d!`1Gt8g6fZl)a5onf`Dv~v3l#nxW0j0(fc1W!0WR({N# z(tdOj^Oz8RM|n?{V?8pL&}yh*t&DmdSI}VCFxKZ$FnWHN`HTTi7U3~$y^Xa~q3o$h^#ggJwQ=+jMn?=UGOA-s%^X<~%5!5s@V*o} z;-jo5T+9OaLF~-AvT{hUr9(564C@`G<(oL{OZ!d`d|LiM1U+F@qEC$_ccLhtx12r| z`fCvKA})O)rL43E!E`37UFB=xVoM1xQqcdLv-WaEiyOMoKcrp+*(m1Jz5RbEHg}%Z zNj28GCbk24q>@%{&b=p#@idu9hStKLi=4F5xXD=NyX0Y)2DAW%>vV1>b4t5fz)jpD z+XmfNNp7Y#maHvlTcmN4jO5CbFJPb2=WRNZXP|-Gbk;Km+`(PaD!4Zb-c4VCYP0+m d)z4T@02pP@0oG8&4rvA4Cw_^1FyrzN_zCc{L=OM} literal 0 HcmV?d00001 diff --git a/service/service-user/target/classes/com/atguigu/tingshu/user/service/impl/UserListenProcessServiceImpl.class b/service/service-user/target/classes/com/atguigu/tingshu/user/service/impl/UserListenProcessServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..5b12d3956c5512cb1ef099937579800b3eb88e95 GIT binary patch literal 684 zcmah{%}yIJ5dIwU)22`YEmS?`MtkU-kf>5B1rQR_0#!+K_il#8khLS*3(8~lRH=tP z01t&a8={Bi!lFGoIgl8NSuIZ7#Wp6T>ySWn^O z&(cOy@X!R4j=68Gi#i%-gTmgkm?>);=u&6V`6=l|0QJl0?u_S=z}64lNUB;-jODYk zNZAjxz$PO_i_vQVXjoe5t0bu=DIc zWpJKdoKBeLgX^J-mh6kdYoQw6U{&~7<7n41`2jWY`%gBR@o)N_Q*>&#*VLnJ6a0sY+iQcEYKmc&|6-Kq>!i&N7qhWu>?` z$0|1>L`R{1)wuuc`qAdQT&rh&i+LN8Mkh_BDCX0#cJpM=Y+vfR?6kHCwPJ$Jsc_{{Vm+WHp$!cqPisSkYx1H wgQ9hZG+yh#*0XP5U+JKQy9;BG+b-=Z02yEp`y|`AM{5iB@t~FuSMW!`AFe?xZU6uP literal 0 HcmV?d00001 diff --git a/service/service-user/target/classes/com/atguigu/tingshu/user/service/impl/VipServiceConfigServiceImpl.class b/service/service-user/target/classes/com/atguigu/tingshu/user/service/impl/VipServiceConfigServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..bc3062e31ca02f3db7a510e3995aa80089710c4a GIT binary patch literal 984 zcmbW0&2AGh5Xb*c(gZ@GP@vEo+zN;KinMK|C=wD<;6PCB&c@je?Aj}Tq~x(URpP({ z@EAM@Vm1k-U1dQ+tMz!SncsNEGv9xH{RZF^hkdlr?xC}b9dref)E088Y(X;{WwD&9 zK)%eQm-=(i#*;PDYqy|OODf7-j@QZ?-V1b3$WS;FXdk_p^l(dHQ1MjAB4tqqGMPV* zGBV*NWkTf!G_+<;*)?hpeSug1#552D4i+``TUD0YF>}-iEmkJ7&RlyY0*CLT2~_9_ zd79>WV2ll1C~JI$wJwvsbe!zmsX|{^_eoB*GG5MA8mwDNb>$!jG1v=oddAq!(9X2L z-iVBT7mKNO9~9#S_D42V`9wLY^vz)>oD;_zHmAX5{_{}vWUiH%L*E`#W>kodqy1PB z|Fa2Bny>Tss&4fwxFGquU+VWy&XTPzH=3*Nv`Ly1?vHJBseVmWeV;YhRb74jQ7x3f z(bi}6K|5{3vedr^A;EL>c&50d{I_riyDabWuytA9V=4IKS>tt&HM!D(otKvoU-+Pf h`x|4h>jU0b05-rr9 + + + logback + + + + + + + + + + + + + + + + + + + + + + + INFO + + + ${CONSOLE_LOG_PATTERN} + ${ENCODING} + + + + + + ${log.path}//log.log + true + + %date{yyyy-MM-dd HH:mm:ss} %msg%n + ${ENCODING} + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/service/service-user/target/classes/mapper/UserInfoMapper.xml b/service/service-user/target/classes/mapper/UserInfoMapper.xml new file mode 100644 index 0000000..b702968 --- /dev/null +++ b/service/service-user/target/classes/mapper/UserInfoMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + id,phone,password,wx_open_id,nickname,avatar_url,is_vip,vip_expire_time,gender,birthday,intro,certification_type,certification_status,status,create_time,update_time,is_deleted + + + + + + and phone like CONCAT('%',#{vo.phone},'%') + + + and nickname like CONCAT('%',#{nickname},'%') + + + and create_time >= #{vo.createTimeBegin} + + + and create_time <= #{vo.createTimeEnd} + + and is_deleted = 0 + + + + + + +