├── .gitattributes ├── .gitee └── ISSUE_TEMPLATE.zh-CN.md ├── .github ├── ISSUE_TEMPLATE │ └── question.md └── workflows │ ├── htron-ui-admin.yml │ └── maven.yml ├── .gitignore ├── Docker-HOWTO.md ├── LICENSE ├── README.md ├── bin └── deploy.sh ├── docker-compose.yml ├── docker.env ├── htron-dependencies └── pom.xml ├── htron-framework ├── htron-common │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ └── java │ │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── common │ │ │ │ ├── core │ │ │ │ ├── IntArrayValuable.java │ │ │ │ └── KeyValue.java │ │ │ │ ├── enums │ │ │ │ ├── CommonStatusEnum.java │ │ │ │ ├── DocumentEnum.java │ │ │ │ ├── TerminalEnum.java │ │ │ │ ├── UserTypeEnum.java │ │ │ │ └── WebFilterOrderEnum.java │ │ │ │ ├── exception │ │ │ │ ├── ErrorCode.java │ │ │ │ ├── ServerException.java │ │ │ │ ├── ServiceException.java │ │ │ │ ├── enums │ │ │ │ │ ├── GlobalErrorCodeConstants.java │ │ │ │ │ └── ServiceErrorCodeRange.java │ │ │ │ └── util │ │ │ │ │ └── ServiceExceptionUtil.java │ │ │ │ ├── package-info.java │ │ │ │ ├── pojo │ │ │ │ ├── CommonResult.java │ │ │ │ ├── PageParam.java │ │ │ │ ├── PageResult.java │ │ │ │ └── SortingField.java │ │ │ │ ├── util │ │ │ │ ├── cache │ │ │ │ │ └── CacheUtils.java │ │ │ │ ├── collection │ │ │ │ │ ├── ArrayUtils.java │ │ │ │ │ ├── CollectionUtils.java │ │ │ │ │ ├── MapUtils.java │ │ │ │ │ └── SetUtils.java │ │ │ │ ├── date │ │ │ │ │ ├── DateUtils.java │ │ │ │ │ └── LocalDateTimeUtils.java │ │ │ │ ├── http │ │ │ │ │ └── HttpUtils.java │ │ │ │ ├── io │ │ │ │ │ ├── FileUtils.java │ │ │ │ │ └── IoUtils.java │ │ │ │ ├── json │ │ │ │ │ └── JsonUtils.java │ │ │ │ ├── monitor │ │ │ │ │ └── TracerUtils.java │ │ │ │ ├── number │ │ │ │ │ ├── MoneyUtils.java │ │ │ │ │ └── NumberUtils.java │ │ │ │ ├── object │ │ │ │ │ ├── ObjectUtils.java │ │ │ │ │ └── PageUtils.java │ │ │ │ ├── package-info.java │ │ │ │ ├── servlet │ │ │ │ │ └── ServletUtils.java │ │ │ │ ├── spring │ │ │ │ │ ├── SpringAopUtils.java │ │ │ │ │ └── SpringExpressionUtils.java │ │ │ │ ├── string │ │ │ │ │ └── StrUtils.java │ │ │ │ └── validation │ │ │ │ │ └── ValidationUtils.java │ │ │ │ └── validation │ │ │ │ ├── InEnum.java │ │ │ │ ├── InEnumCollectionValidator.java │ │ │ │ ├── InEnumValidator.java │ │ │ │ ├── Mobile.java │ │ │ │ ├── MobileValidator.java │ │ │ │ └── package-info.java │ │ └── test │ │ │ └── java │ │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── common │ │ │ └── util │ │ │ └── collection │ │ │ └── CollectionUtilsTest.java │ └── 《芋道 Spring Boot 参数校验 Validation 入门》.md ├── htron-spring-boot-starter-banner │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── banner │ │ │ ├── config │ │ │ └── HtronBannerAutoConfiguration.java │ │ │ ├── core │ │ │ └── BannerApplicationRunner.java │ │ │ └── package-info.java │ │ └── resources │ │ ├── META-INF │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── banner.txt ├── htron-spring-boot-starter-biz-data-permission │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── datapermission │ │ │ │ ├── config │ │ │ │ ├── HtronDataPermissionAutoConfiguration.java │ │ │ │ └── HtronDeptDataPermissionAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ ├── annotation │ │ │ │ │ └── DataPermission.java │ │ │ │ ├── aop │ │ │ │ │ ├── DataPermissionAnnotationAdvisor.java │ │ │ │ │ ├── DataPermissionAnnotationInterceptor.java │ │ │ │ │ └── DataPermissionContextHolder.java │ │ │ │ ├── db │ │ │ │ │ └── DataPermissionDatabaseInterceptor.java │ │ │ │ ├── rule │ │ │ │ │ ├── DataPermissionRule.java │ │ │ │ │ ├── DataPermissionRuleFactory.java │ │ │ │ │ ├── DataPermissionRuleFactoryImpl.java │ │ │ │ │ └── dept │ │ │ │ │ │ ├── DeptDataPermissionRule.java │ │ │ │ │ │ ├── DeptDataPermissionRuleCustomizer.java │ │ │ │ │ │ └── package-info.java │ │ │ │ └── util │ │ │ │ │ └── DataPermissionUtils.java │ │ │ │ └── package-info.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── framework │ │ └── datapermission │ │ └── core │ │ ├── aop │ │ ├── DataPermissionAnnotationInterceptorTest.java │ │ └── DataPermissionContextHolderTest.java │ │ ├── db │ │ ├── DataPermissionDatabaseInterceptorTest.java │ │ └── DataPermissionDatabaseInterceptorTest2.java │ │ ├── rule │ │ ├── DataPermissionRuleFactoryImplTest.java │ │ └── dept │ │ │ └── DeptDataPermissionRuleTest.java │ │ └── util │ │ └── DataPermissionUtilsTest.java ├── htron-spring-boot-starter-biz-dict │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── dict │ │ │ │ ├── config │ │ │ │ └── HtronDictAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ ├── package-info.java │ │ │ │ └── util │ │ │ │ │ └── DictFrameworkUtils.java │ │ │ │ └── package-info.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── framework │ │ └── dict │ │ └── core │ │ └── util │ │ └── DictFrameworkUtilsTest.java ├── htron-spring-boot-starter-biz-error-code │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── errorcode │ │ │ ├── config │ │ │ ├── ErrorCodeProperties.java │ │ │ └── HtronErrorCodeAutoConfiguration.java │ │ │ ├── core │ │ │ ├── generator │ │ │ │ ├── ErrorCodeAutoGenerator.java │ │ │ │ └── ErrorCodeAutoGeneratorImpl.java │ │ │ └── loader │ │ │ │ ├── ErrorCodeLoader.java │ │ │ │ └── ErrorCodeLoaderImpl.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── htron-spring-boot-starter-biz-ip │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── ip │ │ │ │ ├── core │ │ │ │ ├── Area.java │ │ │ │ ├── enums │ │ │ │ │ └── AreaTypeEnum.java │ │ │ │ └── utils │ │ │ │ │ ├── AreaUtils.java │ │ │ │ │ └── IPUtils.java │ │ │ │ └── package-info.java │ │ └── resources │ │ │ ├── area.csv │ │ │ └── ip2region.xdb │ │ └── test │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── framework │ │ └── ip │ │ └── core │ │ └── utils │ │ ├── AreaUtilsTest.java │ │ └── IPUtilsTest.java ├── htron-spring-boot-starter-biz-operatelog │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── operatelog │ │ │ ├── config │ │ │ └── HtronOperateLogAutoConfiguration.java │ │ │ ├── core │ │ │ ├── annotations │ │ │ │ └── OperateLog.java │ │ │ ├── aop │ │ │ │ └── OperateLogAspect.java │ │ │ ├── enums │ │ │ │ └── OperateTypeEnum.java │ │ │ ├── package-info.java │ │ │ ├── service │ │ │ │ ├── OperateLog.java │ │ │ │ ├── OperateLogFrameworkService.java │ │ │ │ └── OperateLogFrameworkServiceImpl.java │ │ │ └── util │ │ │ │ └── OperateLogUtils.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── htron-spring-boot-starter-biz-pay │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── pay │ │ │ │ ├── config │ │ │ │ └── HtronPayAutoConfiguration.java │ │ │ │ └── core │ │ │ │ ├── client │ │ │ │ ├── PayClient.java │ │ │ │ ├── PayClientConfig.java │ │ │ │ ├── PayClientFactory.java │ │ │ │ ├── dto │ │ │ │ │ ├── order │ │ │ │ │ │ ├── PayOrderRespDTO.java │ │ │ │ │ │ └── PayOrderUnifiedReqDTO.java │ │ │ │ │ ├── refund │ │ │ │ │ │ ├── PayRefundRespDTO.java │ │ │ │ │ │ └── PayRefundUnifiedReqDTO.java │ │ │ │ │ └── transfer │ │ │ │ │ │ ├── PayTransferRespDTO.java │ │ │ │ │ │ └── PayTransferUnifiedReqDTO.java │ │ │ │ ├── exception │ │ │ │ │ └── PayException.java │ │ │ │ └── impl │ │ │ │ │ ├── AbstractPayClient.java │ │ │ │ │ ├── NonePayClientConfig.java │ │ │ │ │ ├── PayClientFactoryImpl.java │ │ │ │ │ ├── alipay │ │ │ │ │ ├── AbstractAlipayPayClient.java │ │ │ │ │ ├── AlipayAppPayClient.java │ │ │ │ │ ├── AlipayBarPayClient.java │ │ │ │ │ ├── AlipayPayClientConfig.java │ │ │ │ │ ├── AlipayPcPayClient.java │ │ │ │ │ ├── AlipayQrPayClient.java │ │ │ │ │ └── AlipayWapPayClient.java │ │ │ │ │ ├── mock │ │ │ │ │ └── MockPayClient.java │ │ │ │ │ └── weixin │ │ │ │ │ ├── AbstractWxPayClient.java │ │ │ │ │ ├── WxAppPayClient.java │ │ │ │ │ ├── WxBarPayClient.java │ │ │ │ │ ├── WxLitePayClient.java │ │ │ │ │ ├── WxNativePayClient.java │ │ │ │ │ ├── WxPayClientConfig.java │ │ │ │ │ └── WxPubPayClient.java │ │ │ │ └── enums │ │ │ │ ├── channel │ │ │ │ └── PayChannelEnum.java │ │ │ │ ├── order │ │ │ │ ├── PayOrderDisplayModeEnum.java │ │ │ │ └── PayOrderStatusRespEnum.java │ │ │ │ ├── refund │ │ │ │ └── PayRefundStatusRespEnum.java │ │ │ │ └── transfer │ │ │ │ ├── PayTransferStatusRespEnum.java │ │ │ │ └── PayTransferTypeEnum.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── framework │ │ └── pay │ │ └── core │ │ └── client │ │ └── impl │ │ ├── PayClientFactoryImplIntegrationTest.java │ │ ├── alipay │ │ ├── AbstractAlipayClientTest.java │ │ ├── AlipayBarPayClientTest.java │ │ ├── AlipayPcPayClientTest.java │ │ ├── AlipayQrPayClientTest.java │ │ └── AlipayWapPayClientTest.java │ │ └── weixin │ │ ├── WxBarPayClientIntegrationTest.java │ │ └── WxNativePayClientIntegrationTest.java ├── htron-spring-boot-starter-biz-sms │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── sms │ │ │ │ ├── config │ │ │ │ └── HtronSmsAutoConfiguration.java │ │ │ │ └── core │ │ │ │ ├── client │ │ │ │ ├── SmsClient.java │ │ │ │ ├── SmsClientFactory.java │ │ │ │ ├── SmsCodeMapping.java │ │ │ │ ├── SmsCommonResult.java │ │ │ │ ├── dto │ │ │ │ │ ├── SmsReceiveRespDTO.java │ │ │ │ │ ├── SmsSendRespDTO.java │ │ │ │ │ └── SmsTemplateRespDTO.java │ │ │ │ └── impl │ │ │ │ │ ├── AbstractSmsClient.java │ │ │ │ │ ├── SmsClientFactoryImpl.java │ │ │ │ │ ├── aliyun │ │ │ │ │ ├── AliyunSmsClient.java │ │ │ │ │ └── AliyunSmsCodeMapping.java │ │ │ │ │ ├── debug │ │ │ │ │ ├── DebugDingTalkCodeMapping.java │ │ │ │ │ └── DebugDingTalkSmsClient.java │ │ │ │ │ └── tencent │ │ │ │ │ ├── TencentSmsChannelProperties.java │ │ │ │ │ ├── TencentSmsClient.java │ │ │ │ │ └── TencentSmsCodeMapping.java │ │ │ │ ├── enums │ │ │ │ ├── SmsChannelEnum.java │ │ │ │ ├── SmsFrameworkErrorCodeConstants.java │ │ │ │ └── SmsTemplateAuditStatusEnum.java │ │ │ │ └── property │ │ │ │ └── SmsChannelProperties.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ ├── test-integration │ │ └── java │ │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── sms │ │ │ └── core │ │ │ └── client │ │ │ └── impl │ │ │ ├── aliyun │ │ │ └── AliyunSmsClientIntegrationTest.java │ │ │ └── debug │ │ │ └── DebugDingTalkSmsClientIntegrationTest.java │ │ └── test │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── framework │ │ └── sms │ │ └── core │ │ └── client │ │ └── impl │ │ ├── aliyun │ │ ├── AliyunSmsClientTest.java │ │ └── AliyunSmsCodeMappingTest.java │ │ └── tencent │ │ ├── TencentSmsClientTest.java │ │ └── TencentSmsCodeMappingTest.java ├── htron-spring-boot-starter-biz-social │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── social │ │ │ ├── config │ │ │ └── HtronSocialAutoConfiguration.java │ │ │ └── core │ │ │ ├── HtronAuthRequestFactory.java │ │ │ ├── enums │ │ │ └── AuthExtendSource.java │ │ │ └── request │ │ │ ├── AuthWeChatMiniAppRequest.java │ │ │ └── AuthWeChatMpRequest.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── htron-spring-boot-starter-biz-tenant │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ ├── org │ │ │ └── springframework │ │ │ │ └── messaging │ │ │ │ └── handler │ │ │ │ └── invocation │ │ │ │ └── InvocableHandlerMethod.java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── tenant │ │ │ ├── config │ │ │ ├── HtronTenantAutoConfiguration.java │ │ │ └── TenantProperties.java │ │ │ ├── core │ │ │ ├── aop │ │ │ │ ├── TenantIgnore.java │ │ │ │ └── TenantIgnoreAspect.java │ │ │ ├── context │ │ │ │ └── TenantContextHolder.java │ │ │ ├── db │ │ │ │ ├── TenantBaseDO.java │ │ │ │ └── TenantDatabaseInterceptor.java │ │ │ ├── job │ │ │ │ ├── TenantJob.java │ │ │ │ └── TenantJobAspect.java │ │ │ ├── mq │ │ │ │ ├── kafka │ │ │ │ │ ├── TenantKafkaEnvironmentPostProcessor.java │ │ │ │ │ └── TenantKafkaProducerInterceptor.java │ │ │ │ ├── rabbitmq │ │ │ │ │ ├── TenantRabbitMQInitializer.java │ │ │ │ │ └── TenantRabbitMQMessagePostProcessor.java │ │ │ │ ├── redis │ │ │ │ │ └── TenantRedisMessageInterceptor.java │ │ │ │ └── rocketmq │ │ │ │ │ ├── TenantRocketMQConsumeMessageHook.java │ │ │ │ │ ├── TenantRocketMQInitializer.java │ │ │ │ │ └── TenantRocketMQSendMessageHook.java │ │ │ ├── redis │ │ │ │ └── TenantRedisCacheManager.java │ │ │ ├── security │ │ │ │ └── TenantSecurityWebFilter.java │ │ │ ├── service │ │ │ │ ├── TenantFrameworkService.java │ │ │ │ └── TenantFrameworkServiceImpl.java │ │ │ ├── util │ │ │ │ └── TenantUtils.java │ │ │ └── web │ │ │ │ └── TenantContextWebFilter.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ ├── spring.factories │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── htron-spring-boot-starter-biz-weixin │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── weixin │ │ │ └── package-info.java │ │ └── test-integration │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── weixin │ │ │ └── WxMpServiceTest.java │ │ └── resources │ │ └── application.yml ├── htron-spring-boot-starter-captcha │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── captcha │ │ │ ├── config │ │ │ └── HtronCaptchaConfiguration.java │ │ │ ├── core │ │ │ ├── enums │ │ │ │ └── CaptchaRedisKeyConstants.java │ │ │ └── service │ │ │ │ └── RedisCaptchaServiceImpl.java │ │ │ └── package-info.java │ │ └── resources │ │ ├── META-INF │ │ ├── services │ │ │ └── com.xingyuv.captcha.service.CaptchaCacheService │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── images │ │ ├── jigsaw │ │ ├── original │ │ │ ├── bg1.png │ │ │ ├── bg2.png │ │ │ ├── bg3.png │ │ │ ├── bg4.png │ │ │ ├── bg5.png │ │ │ ├── bg6.png │ │ │ ├── bg7.png │ │ │ ├── bg8.png │ │ │ └── bg9.png │ │ └── slidingBlock │ │ │ ├── 11 │ │ │ ├── 10.png │ │ │ ├── 11.png │ │ │ ├── 12.png │ │ │ ├── 13.png │ │ │ ├── 14.png │ │ │ ├── 15.png │ │ │ ├── 16.png │ │ │ ├── 17.png │ │ │ ├── 18.png │ │ │ ├── 19.png │ │ │ ├── 8.png │ │ │ └── 9.png │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ └── 4.png │ │ └── pic-click │ │ ├── bg1.png │ │ ├── bg10.png │ │ ├── bg2.png │ │ ├── bg3.png │ │ ├── bg4.png │ │ ├── bg5.png │ │ ├── bg6.png │ │ ├── bg7.png │ │ ├── bg8.png │ │ └── bg9.png ├── htron-spring-boot-starter-desensitize │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── desensitize │ │ │ └── core │ │ │ ├── base │ │ │ ├── annotation │ │ │ │ └── DesensitizeBy.java │ │ │ ├── handler │ │ │ │ └── DesensitizationHandler.java │ │ │ └── serializer │ │ │ │ └── StringDesensitizeSerializer.java │ │ │ ├── package-info.java │ │ │ ├── regex │ │ │ ├── annotation │ │ │ │ ├── EmailDesensitize.java │ │ │ │ └── RegexDesensitize.java │ │ │ └── handler │ │ │ │ ├── AbstractRegexDesensitizationHandler.java │ │ │ │ ├── DefaultRegexDesensitizationHandler.java │ │ │ │ └── EmailDesensitizationHandler.java │ │ │ └── slider │ │ │ ├── annotation │ │ │ ├── BankCardDesensitize.java │ │ │ ├── CarLicenseDesensitize.java │ │ │ ├── ChineseNameDesensitize.java │ │ │ ├── FixedPhoneDesensitize.java │ │ │ ├── IdCardDesensitize.java │ │ │ ├── MobileDesensitize.java │ │ │ ├── PasswordDesensitize.java │ │ │ └── SliderDesensitize.java │ │ │ └── handler │ │ │ ├── AbstractSliderDesensitizationHandler.java │ │ │ ├── BankCardDesensitization.java │ │ │ ├── CarLicenseDesensitization.java │ │ │ ├── ChineseNameDesensitization.java │ │ │ ├── DefaultDesensitizationHandler.java │ │ │ ├── FixedPhoneDesensitization.java │ │ │ ├── IdCardDesensitization.java │ │ │ ├── MobileDesensitization.java │ │ │ └── PasswordDesensitization.java │ │ └── test │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── framework │ │ └── desensitize │ │ └── core │ │ ├── DesensitizeTest.java │ │ ├── annotation │ │ └── Address.java │ │ └── handler │ │ └── AddressHandler.java ├── htron-spring-boot-starter-excel │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── framework │ │ └── excel │ │ ├── core │ │ ├── annotations │ │ │ └── DictFormat.java │ │ ├── convert │ │ │ ├── DictConvert.java │ │ │ ├── JsonConvert.java │ │ │ └── MoneyConvert.java │ │ └── util │ │ │ └── ExcelUtils.java │ │ └── package-info.java ├── htron-spring-boot-starter-file │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── file │ │ │ │ ├── config │ │ │ │ └── HtronFileAutoConfiguration.java │ │ │ │ └── core │ │ │ │ ├── client │ │ │ │ ├── AbstractFileClient.java │ │ │ │ ├── FileClient.java │ │ │ │ ├── FileClientConfig.java │ │ │ │ ├── FileClientFactory.java │ │ │ │ ├── FileClientFactoryImpl.java │ │ │ │ ├── db │ │ │ │ │ ├── DBFileClient.java │ │ │ │ │ ├── DBFileClientConfig.java │ │ │ │ │ └── DBFileContentFrameworkDAO.java │ │ │ │ ├── ftp │ │ │ │ │ ├── FtpFileClient.java │ │ │ │ │ └── FtpFileClientConfig.java │ │ │ │ ├── local │ │ │ │ │ ├── LocalFileClient.java │ │ │ │ │ └── LocalFileClientConfig.java │ │ │ │ ├── s3 │ │ │ │ │ ├── S3FileClient.java │ │ │ │ │ └── S3FileClientConfig.java │ │ │ │ └── sftp │ │ │ │ │ ├── SftpFileClient.java │ │ │ │ │ └── SftpFileClientConfig.java │ │ │ │ ├── enums │ │ │ │ └── FileStorageEnum.java │ │ │ │ └── utils │ │ │ │ └── FileTypeUtils.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── test │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── file │ │ │ ├── config │ │ │ └── package-info.java │ │ │ └── core │ │ │ ├── client │ │ │ ├── ftp │ │ │ │ └── FtpFileClientTest.java │ │ │ ├── local │ │ │ │ └── LocalFileClientTest.java │ │ │ ├── s3 │ │ │ │ └── S3FileClientTest.java │ │ │ └── sftp │ │ │ │ └── SftpFileClientTest.java │ │ │ └── enums │ │ │ └── package-info.java │ │ └── resources │ │ └── file │ │ └── erweima.jpg ├── htron-spring-boot-starter-flowable │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── flowable │ │ │ ├── config │ │ │ └── HtronFlowableConfiguration.java │ │ │ ├── core │ │ │ ├── package-info.java │ │ │ ├── util │ │ │ │ ├── BpmnModelUtils.java │ │ │ │ └── FlowableUtils.java │ │ │ └── web │ │ │ │ └── FlowableWebFilter.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── htron-spring-boot-starter-job │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── quartz │ │ │ │ ├── config │ │ │ │ ├── HtronAsyncAutoConfiguration.java │ │ │ │ └── HtronQuartzAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ ├── enums │ │ │ │ │ └── JobDataKeyEnum.java │ │ │ │ ├── handler │ │ │ │ │ ├── JobHandler.java │ │ │ │ │ └── JobHandlerInvoker.java │ │ │ │ ├── scheduler │ │ │ │ │ └── SchedulerManager.java │ │ │ │ ├── service │ │ │ │ │ └── JobLogFrameworkService.java │ │ │ │ └── util │ │ │ │ │ └── CronUtils.java │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── 《芋道 Spring Boot 定时任务入门》.md │ └── 《芋道 Spring Boot 异步任务入门》.md ├── htron-spring-boot-starter-monitor │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── tracer │ │ │ │ ├── config │ │ │ │ ├── HtronMetricsAutoConfiguration.java │ │ │ │ ├── HtronTracerAutoConfiguration.java │ │ │ │ └── TracerProperties.java │ │ │ │ ├── core │ │ │ │ ├── annotation │ │ │ │ │ └── BizTrace.java │ │ │ │ ├── aop │ │ │ │ │ └── BizTraceAspect.java │ │ │ │ ├── filter │ │ │ │ │ └── TraceFilter.java │ │ │ │ └── util │ │ │ │ │ └── TracerFrameworkUtils.java │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── 《芋道 Spring Boot 监控工具 Admin 入门》.md │ ├── 《芋道 Spring Boot 监控端点 Actuator 入门》.md │ └── 《芋道 Spring Boot 链路追踪 SkyWalking 入门》.md ├── htron-spring-boot-starter-mq │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── mq │ │ │ │ ├── package-info.java │ │ │ │ ├── rabbitmq │ │ │ │ ├── config │ │ │ │ │ └── HtronRabbitMQAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ │ └── redis │ │ │ │ ├── config │ │ │ │ └── HtronRedisMQAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ ├── RedisMQTemplate.java │ │ │ │ ├── interceptor │ │ │ │ │ └── RedisMessageInterceptor.java │ │ │ │ ├── job │ │ │ │ │ └── RedisPendingMessageResendJob.java │ │ │ │ ├── message │ │ │ │ │ └── AbstractRedisMessage.java │ │ │ │ ├── pubsub │ │ │ │ │ ├── AbstractRedisChannelMessage.java │ │ │ │ │ └── AbstractRedisChannelMessageListener.java │ │ │ │ └── stream │ │ │ │ │ ├── AbstractRedisStreamMessage.java │ │ │ │ │ └── AbstractRedisStreamMessageListener.java │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── 《芋道 Spring Boot 事件机制 Event 入门》.md │ ├── 《芋道 Spring Boot 消息队列 Kafka 入门》.md │ ├── 《芋道 Spring Boot 消息队列 RabbitMQ 入门》.md │ └── 《芋道 Spring Boot 消息队列 RocketMQ 入门》.md ├── htron-spring-boot-starter-mybatis │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ ├── datasource │ │ │ │ ├── config │ │ │ │ │ └── HtronDataSourceAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ │ ├── enums │ │ │ │ │ │ └── DataSourceEnum.java │ │ │ │ │ └── filter │ │ │ │ │ │ └── DruidAdRemoveFilter.java │ │ │ │ └── package-info.java │ │ │ │ ├── mybatis │ │ │ │ ├── config │ │ │ │ │ ├── HtronMybatisAutoConfiguration.java │ │ │ │ │ └── IdTypeEnvironmentPostProcessor.java │ │ │ │ ├── core │ │ │ │ │ ├── dataobject │ │ │ │ │ │ └── BaseDO.java │ │ │ │ │ ├── enums │ │ │ │ │ │ └── SqlConstants.java │ │ │ │ │ ├── handler │ │ │ │ │ │ └── DefaultDBFieldHandler.java │ │ │ │ │ ├── mapper │ │ │ │ │ │ └── BaseMapperX.java │ │ │ │ │ ├── query │ │ │ │ │ │ ├── LambdaQueryWrapperX.java │ │ │ │ │ │ ├── MPJLambdaWrapperX.java │ │ │ │ │ │ └── QueryWrapperX.java │ │ │ │ │ ├── type │ │ │ │ │ │ ├── EncryptTypeHandler.java │ │ │ │ │ │ ├── IntegerListTypeHandler.java │ │ │ │ │ │ ├── JsonLongSetTypeHandler.java │ │ │ │ │ │ ├── LongListTypeHandler.java │ │ │ │ │ │ └── StringListTypeHandler.java │ │ │ │ │ └── util │ │ │ │ │ │ ├── JdbcUtils.java │ │ │ │ │ │ └── MyBatisUtils.java │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ ├── spring.factories │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── 《芋道 Spring Boot MyBatis 入门》.md │ ├── 《芋道 Spring Boot 多数据源(读写分离)入门》.md │ └── 《芋道 Spring Boot 数据库连接池入门》.md ├── htron-spring-boot-starter-protection │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ ├── idempotent │ │ │ ├── config │ │ │ │ └── HtronIdempotentConfiguration.java │ │ │ ├── core │ │ │ │ ├── annotation │ │ │ │ │ └── Idempotent.java │ │ │ │ ├── aop │ │ │ │ │ └── IdempotentAspect.java │ │ │ │ ├── keyresolver │ │ │ │ │ ├── IdempotentKeyResolver.java │ │ │ │ │ └── impl │ │ │ │ │ │ ├── DefaultIdempotentKeyResolver.java │ │ │ │ │ │ └── ExpressionIdempotentKeyResolver.java │ │ │ │ └── redis │ │ │ │ │ └── IdempotentRedisDAO.java │ │ │ └── package-info.java │ │ │ ├── lock4j │ │ │ ├── config │ │ │ │ └── HtronLock4jConfiguration.java │ │ │ ├── core │ │ │ │ ├── DefaultLockFailureStrategy.java │ │ │ │ └── Lock4jRedisKeyConstants.java │ │ │ └── package-info.java │ │ │ └── resilience4j │ │ │ ├── package-info.java │ │ │ └── 《芋道 Spring Boot 服务容错 Resilience4j 入门》.md │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── htron-spring-boot-starter-redis │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── redis │ │ │ │ ├── config │ │ │ │ ├── HtronCacheAutoConfiguration.java │ │ │ │ ├── HtronCacheProperties.java │ │ │ │ └── HtronRedisAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ └── TimeoutRedisCacheManager.java │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── 《芋道 Spring Boot Cache 入门》.md │ └── 《芋道 Spring Boot Redis 入门》.md ├── htron-spring-boot-starter-security │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ └── security │ │ │ │ ├── config │ │ │ │ ├── AuthorizeRequestsCustomizer.java │ │ │ │ ├── HtronSecurityAutoConfiguration.java │ │ │ │ ├── HtronWebSecurityConfigurerAdapter.java │ │ │ │ └── SecurityProperties.java │ │ │ │ ├── core │ │ │ │ ├── LoginUser.java │ │ │ │ ├── annotations │ │ │ │ │ └── PreAuthenticated.java │ │ │ │ ├── aop │ │ │ │ │ └── PreAuthenticatedAspect.java │ │ │ │ ├── context │ │ │ │ │ └── TransmittableThreadLocalSecurityContextHolderStrategy.java │ │ │ │ ├── filter │ │ │ │ │ └── TokenAuthenticationFilter.java │ │ │ │ ├── handler │ │ │ │ │ ├── AccessDeniedHandlerImpl.java │ │ │ │ │ └── AuthenticationEntryPointImpl.java │ │ │ │ ├── service │ │ │ │ │ ├── SecurityFrameworkService.java │ │ │ │ │ └── SecurityFrameworkServiceImpl.java │ │ │ │ └── util │ │ │ │ │ └── SecurityFrameworkUtils.java │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ └── 《芋道 Spring Boot 安全框架 Spring Security 入门》.md ├── htron-spring-boot-starter-test │ ├── pom.xml │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── test │ │ │ ├── config │ │ │ ├── RedisTestConfiguration.java │ │ │ └── SqlInitializationTestConfiguration.java │ │ │ ├── core │ │ │ ├── ut │ │ │ │ ├── BaseDbAndRedisUnitTest.java │ │ │ │ ├── BaseDbUnitTest.java │ │ │ │ ├── BaseMockitoUnitTest.java │ │ │ │ ├── BaseRedisUnitTest.java │ │ │ │ └── package-info.java │ │ │ └── util │ │ │ │ ├── AssertUtils.java │ │ │ │ └── RandomUtils.java │ │ │ └── package-info.java │ └── 《芋道 Spring Boot 单元测试 Test 入门》.md ├── htron-spring-boot-starter-web │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── framework │ │ │ │ ├── apilog │ │ │ │ ├── config │ │ │ │ │ └── HtronApiLogAutoConfiguration.java │ │ │ │ ├── core │ │ │ │ │ ├── filter │ │ │ │ │ │ └── ApiAccessLogFilter.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── ApiAccessLog.java │ │ │ │ │ │ ├── ApiAccessLogFrameworkService.java │ │ │ │ │ │ ├── ApiAccessLogFrameworkServiceImpl.java │ │ │ │ │ │ ├── ApiErrorLog.java │ │ │ │ │ │ ├── ApiErrorLogFrameworkService.java │ │ │ │ │ │ └── ApiErrorLogFrameworkServiceImpl.java │ │ │ │ └── package-info.java │ │ │ │ ├── jackson │ │ │ │ ├── config │ │ │ │ │ └── HtronJacksonAutoConfiguration.java │ │ │ │ └── core │ │ │ │ │ ├── databind │ │ │ │ │ ├── LocalDateTimeDeserializer.java │ │ │ │ │ ├── LocalDateTimeSerializer.java │ │ │ │ │ └── NumberSerializer.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ ├── swagger │ │ │ │ ├── config │ │ │ │ │ ├── HtronSwaggerAutoConfiguration.java │ │ │ │ │ └── SwaggerProperties.java │ │ │ │ └── package-info.java │ │ │ │ ├── web │ │ │ │ ├── config │ │ │ │ │ ├── HtronWebAutoConfiguration.java │ │ │ │ │ └── WebProperties.java │ │ │ │ ├── core │ │ │ │ │ ├── filter │ │ │ │ │ │ ├── ApiRequestFilter.java │ │ │ │ │ │ ├── CacheRequestBodyFilter.java │ │ │ │ │ │ ├── CacheRequestBodyWrapper.java │ │ │ │ │ │ └── DemoFilter.java │ │ │ │ │ ├── handler │ │ │ │ │ │ ├── GlobalExceptionHandler.java │ │ │ │ │ │ └── GlobalResponseBodyHandler.java │ │ │ │ │ └── util │ │ │ │ │ │ └── WebFrameworkUtils.java │ │ │ │ └── package-info.java │ │ │ │ └── xss │ │ │ │ ├── config │ │ │ │ ├── HtronXssAutoConfiguration.java │ │ │ │ └── XssProperties.java │ │ │ │ ├── core │ │ │ │ ├── clean │ │ │ │ │ ├── JsoupXssCleaner.java │ │ │ │ │ └── XssCleaner.java │ │ │ │ ├── filter │ │ │ │ │ ├── XssFilter.java │ │ │ │ │ └── XssRequestWrapper.java │ │ │ │ └── json │ │ │ │ │ └── XssStringJsonDeserializer.java │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── 《芋道 Spring Boot API 接口文档 Swagger 入门》.md │ └── 《芋道 Spring Boot SpringMVC 入门》.md ├── htron-spring-boot-starter-websocket │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── framework │ │ │ └── websocket │ │ │ ├── config │ │ │ ├── HtronWebSocketAutoConfiguration.java │ │ │ ├── WebSocketHandlerConfig.java │ │ │ └── WebSocketProperties.java │ │ │ ├── core │ │ │ ├── HtronWebSocketHandlerDecorator.java │ │ │ ├── UserHandshakeInterceptor.java │ │ │ ├── WebSocketKeyDefine.java │ │ │ ├── WebSocketMessageDO.java │ │ │ ├── WebSocketSessionHandler.java │ │ │ └── WebSocketUtils.java │ │ │ └── package-info.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports └── pom.xml ├── htron-module-infra ├── htron-module-infra-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── module │ │ └── infra │ │ ├── api │ │ ├── file │ │ │ └── FileApi.java │ │ ├── logger │ │ │ ├── ApiAccessLogApi.java │ │ │ ├── ApiErrorLogApi.java │ │ │ └── dto │ │ │ │ ├── ApiAccessLogCreateReqDTO.java │ │ │ │ └── ApiErrorLogCreateReqDTO.java │ │ └── package-info.java │ │ └── enums │ │ ├── DictTypeConstants.java │ │ └── ErrorCodeConstants.java ├── htron-module-infra-biz │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── module │ │ │ │ └── infra │ │ │ │ ├── api │ │ │ │ ├── file │ │ │ │ │ └── FileApiImpl.java │ │ │ │ ├── logger │ │ │ │ │ ├── ApiAccessLogApiImpl.java │ │ │ │ │ └── ApiErrorLogApiImpl.java │ │ │ │ └── package-info.java │ │ │ │ ├── controller │ │ │ │ ├── admin │ │ │ │ │ ├── codegen │ │ │ │ │ │ ├── CodegenController.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── CodegenCreateListReqVO.java │ │ │ │ │ │ │ ├── CodegenDetailRespVO.java │ │ │ │ │ │ │ ├── CodegenPreviewRespVO.java │ │ │ │ │ │ │ ├── CodegenUpdateReqVO.java │ │ │ │ │ │ │ ├── column │ │ │ │ │ │ │ ├── CodegenColumnBaseVO.java │ │ │ │ │ │ │ └── CodegenColumnRespVO.java │ │ │ │ │ │ │ └── table │ │ │ │ │ │ │ ├── CodegenTableBaseVO.java │ │ │ │ │ │ │ ├── CodegenTablePageReqVO.java │ │ │ │ │ │ │ ├── CodegenTableRespVO.java │ │ │ │ │ │ │ └── DatabaseTableRespVO.java │ │ │ │ │ ├── config │ │ │ │ │ │ ├── ConfigController.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── ConfigBaseVO.java │ │ │ │ │ │ │ ├── ConfigCreateReqVO.java │ │ │ │ │ │ │ ├── ConfigExcelVO.java │ │ │ │ │ │ │ ├── ConfigExportReqVO.java │ │ │ │ │ │ │ ├── ConfigPageReqVO.java │ │ │ │ │ │ │ ├── ConfigRespVO.java │ │ │ │ │ │ │ └── ConfigUpdateReqVO.java │ │ │ │ │ ├── db │ │ │ │ │ │ ├── DataSourceConfigController.java │ │ │ │ │ │ ├── DatabaseDocController.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── DataSourceConfigBaseVO.java │ │ │ │ │ │ │ ├── DataSourceConfigCreateReqVO.java │ │ │ │ │ │ │ ├── DataSourceConfigRespVO.java │ │ │ │ │ │ │ └── DataSourceConfigUpdateReqVO.java │ │ │ │ │ ├── file │ │ │ │ │ │ ├── FileConfigController.http │ │ │ │ │ │ ├── FileConfigController.java │ │ │ │ │ │ ├── FileController.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── FileConfigBaseVO.java │ │ │ │ │ │ │ ├── FileConfigCreateReqVO.java │ │ │ │ │ │ │ ├── FileConfigPageReqVO.java │ │ │ │ │ │ │ ├── FileConfigRespVO.java │ │ │ │ │ │ │ └── FileConfigUpdateReqVO.java │ │ │ │ │ │ │ └── file │ │ │ │ │ │ │ ├── FilePageReqVO.java │ │ │ │ │ │ │ ├── FileRespVO.java │ │ │ │ │ │ │ └── FileUploadReqVO.java │ │ │ │ │ ├── job │ │ │ │ │ │ ├── JobController.java │ │ │ │ │ │ ├── JobLogController.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── job │ │ │ │ │ │ │ ├── JobBaseVO.java │ │ │ │ │ │ │ ├── JobCreateReqVO.java │ │ │ │ │ │ │ ├── JobExcelVO.java │ │ │ │ │ │ │ ├── JobExportReqVO.java │ │ │ │ │ │ │ ├── JobPageReqVO.java │ │ │ │ │ │ │ ├── JobRespVO.java │ │ │ │ │ │ │ └── JobUpdateReqVO.java │ │ │ │ │ │ │ └── log │ │ │ │ │ │ │ ├── JobLogBaseVO.java │ │ │ │ │ │ │ ├── JobLogExcelVO.java │ │ │ │ │ │ │ ├── JobLogExportReqVO.java │ │ │ │ │ │ │ ├── JobLogPageReqVO.java │ │ │ │ │ │ │ └── JobLogRespVO.java │ │ │ │ │ ├── logger │ │ │ │ │ │ ├── ApiAccessLogController.java │ │ │ │ │ │ ├── ApiErrorLogController.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── apiaccesslog │ │ │ │ │ │ │ ├── ApiAccessLogBaseVO.java │ │ │ │ │ │ │ ├── ApiAccessLogExcelVO.java │ │ │ │ │ │ │ ├── ApiAccessLogExportReqVO.java │ │ │ │ │ │ │ ├── ApiAccessLogPageReqVO.java │ │ │ │ │ │ │ └── ApiAccessLogRespVO.java │ │ │ │ │ │ │ └── apierrorlog │ │ │ │ │ │ │ ├── ApiErrorLogBaseVO.java │ │ │ │ │ │ │ ├── ApiErrorLogExcelVO.java │ │ │ │ │ │ │ ├── ApiErrorLogExportReqVO.java │ │ │ │ │ │ │ ├── ApiErrorLogPageReqVO.java │ │ │ │ │ │ │ └── ApiErrorLogRespVO.java │ │ │ │ │ ├── redis │ │ │ │ │ │ ├── RedisController.http │ │ │ │ │ │ ├── RedisController.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ └── RedisMonitorRespVO.java │ │ │ │ │ └── test │ │ │ │ │ │ ├── TestDemoController.http │ │ │ │ │ │ ├── TestDemoController.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ ├── TestDemoBaseVO.java │ │ │ │ │ │ ├── TestDemoCreateReqVO.java │ │ │ │ │ │ ├── TestDemoExcelVO.java │ │ │ │ │ │ ├── TestDemoExportReqVO.java │ │ │ │ │ │ ├── TestDemoPageReqVO.java │ │ │ │ │ │ ├── TestDemoRespVO.java │ │ │ │ │ │ └── TestDemoUpdateReqVO.java │ │ │ │ ├── app │ │ │ │ │ ├── file │ │ │ │ │ │ ├── AppFileController.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ └── AppFileUploadReqVO.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ │ ├── convert │ │ │ │ ├── codegen │ │ │ │ │ └── CodegenConvert.java │ │ │ │ ├── config │ │ │ │ │ └── ConfigConvert.java │ │ │ │ ├── db │ │ │ │ │ └── DataSourceConfigConvert.java │ │ │ │ ├── file │ │ │ │ │ ├── FileConfigConvert.java │ │ │ │ │ └── FileConvert.java │ │ │ │ ├── job │ │ │ │ │ ├── JobConvert.java │ │ │ │ │ └── JobLogConvert.java │ │ │ │ ├── logger │ │ │ │ │ ├── ApiAccessLogConvert.java │ │ │ │ │ └── ApiErrorLogConvert.java │ │ │ │ ├── package-info.java │ │ │ │ ├── redis │ │ │ │ │ └── RedisConvert.java │ │ │ │ ├── test │ │ │ │ │ └── TestDemoConvert.java │ │ │ │ └── 《芋道 Spring Boot 对象转换 MapStruct 入门》.md │ │ │ │ ├── dal │ │ │ │ ├── dataobject │ │ │ │ │ ├── codegen │ │ │ │ │ │ ├── CodegenColumnDO.java │ │ │ │ │ │ └── CodegenTableDO.java │ │ │ │ │ ├── config │ │ │ │ │ │ └── ConfigDO.java │ │ │ │ │ ├── db │ │ │ │ │ │ └── DataSourceConfigDO.java │ │ │ │ │ ├── file │ │ │ │ │ │ ├── FileConfigDO.java │ │ │ │ │ │ ├── FileContentDO.java │ │ │ │ │ │ └── FileDO.java │ │ │ │ │ ├── job │ │ │ │ │ │ ├── JobDO.java │ │ │ │ │ │ └── JobLogDO.java │ │ │ │ │ ├── logger │ │ │ │ │ │ ├── ApiAccessLogDO.java │ │ │ │ │ │ └── ApiErrorLogDO.java │ │ │ │ │ └── test │ │ │ │ │ │ └── TestDemoDO.java │ │ │ │ └── mysql │ │ │ │ │ ├── codegen │ │ │ │ │ ├── CodegenColumnMapper.java │ │ │ │ │ └── CodegenTableMapper.java │ │ │ │ │ ├── config │ │ │ │ │ └── ConfigMapper.java │ │ │ │ │ ├── db │ │ │ │ │ └── DataSourceConfigMapper.java │ │ │ │ │ ├── file │ │ │ │ │ ├── FileConfigMapper.java │ │ │ │ │ ├── FileContentDAOImpl.java │ │ │ │ │ ├── FileContentMapper.java │ │ │ │ │ └── FileMapper.java │ │ │ │ │ ├── job │ │ │ │ │ ├── JobLogMapper.java │ │ │ │ │ └── JobMapper.java │ │ │ │ │ ├── logger │ │ │ │ │ ├── ApiAccessLogMapper.java │ │ │ │ │ └── ApiErrorLogMapper.java │ │ │ │ │ └── test │ │ │ │ │ └── TestDemoMapper.java │ │ │ │ ├── enums │ │ │ │ ├── codegen │ │ │ │ │ ├── CodegenColumnHtmlTypeEnum.java │ │ │ │ │ ├── CodegenColumnListConditionEnum.java │ │ │ │ │ ├── CodegenFrontTypeEnum.java │ │ │ │ │ ├── CodegenSceneEnum.java │ │ │ │ │ └── CodegenTemplateTypeEnum.java │ │ │ │ ├── config │ │ │ │ │ └── ConfigTypeEnum.java │ │ │ │ ├── job │ │ │ │ │ ├── JobLogStatusEnum.java │ │ │ │ │ └── JobStatusEnum.java │ │ │ │ ├── logger │ │ │ │ │ └── ApiErrorLogProcessStatusEnum.java │ │ │ │ └── package-info.java │ │ │ │ ├── framework │ │ │ │ ├── codegen │ │ │ │ │ ├── config │ │ │ │ │ │ ├── CodegenConfiguration.java │ │ │ │ │ │ └── CodegenProperties.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── monitor │ │ │ │ │ ├── config │ │ │ │ │ │ └── AdminServerConfiguration.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── 《芋道 Spring Boot 监控工具 Admin 入门》.md │ │ │ │ ├── package-info.java │ │ │ │ ├── security │ │ │ │ │ ├── config │ │ │ │ │ │ └── SecurityConfiguration.java │ │ │ │ │ └── core │ │ │ │ │ │ └── package-info.java │ │ │ │ └── web │ │ │ │ │ ├── config │ │ │ │ │ └── InfraWebConfiguration.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── job │ │ │ │ ├── job │ │ │ │ │ └── JobLogCleanJob.java │ │ │ │ └── logger │ │ │ │ │ ├── AccessLogCleanJob.java │ │ │ │ │ └── ErrorLogCleanJob.java │ │ │ │ ├── mq │ │ │ │ ├── consumer │ │ │ │ │ └── package-info.java │ │ │ │ ├── message │ │ │ │ │ └── package-info.java │ │ │ │ └── producer │ │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ ├── service │ │ │ │ ├── codegen │ │ │ │ │ ├── CodegenService.java │ │ │ │ │ ├── CodegenServiceImpl.java │ │ │ │ │ └── inner │ │ │ │ │ │ ├── CodegenBuilder.java │ │ │ │ │ │ └── CodegenEngine.java │ │ │ │ ├── config │ │ │ │ │ ├── ConfigService.java │ │ │ │ │ └── ConfigServiceImpl.java │ │ │ │ ├── db │ │ │ │ │ ├── DataSourceConfigService.java │ │ │ │ │ ├── DataSourceConfigServiceImpl.java │ │ │ │ │ ├── DatabaseTableService.java │ │ │ │ │ └── DatabaseTableServiceImpl.java │ │ │ │ ├── file │ │ │ │ │ ├── FileConfigService.java │ │ │ │ │ ├── FileConfigServiceImpl.java │ │ │ │ │ ├── FileService.java │ │ │ │ │ └── FileServiceImpl.java │ │ │ │ ├── job │ │ │ │ │ ├── JobLogService.java │ │ │ │ │ ├── JobLogServiceImpl.java │ │ │ │ │ ├── JobService.java │ │ │ │ │ └── JobServiceImpl.java │ │ │ │ ├── logger │ │ │ │ │ ├── ApiAccessLogService.java │ │ │ │ │ ├── ApiAccessLogServiceImpl.java │ │ │ │ │ ├── ApiErrorLogService.java │ │ │ │ │ └── ApiErrorLogServiceImpl.java │ │ │ │ └── test │ │ │ │ │ ├── TestDemoService.java │ │ │ │ │ └── TestDemoServiceImpl.java │ │ │ │ └── websocket │ │ │ │ ├── SemaphoreUtils.java │ │ │ │ ├── WebSocketConfig.java │ │ │ │ ├── WebSocketServer.java │ │ │ │ └── WebSocketUsers.java │ │ └── resources │ │ │ ├── codegen │ │ │ ├── java │ │ │ │ ├── controller │ │ │ │ │ ├── controller.vm │ │ │ │ │ └── vo │ │ │ │ │ │ ├── _column.vm │ │ │ │ │ │ ├── baseVO.vm │ │ │ │ │ │ ├── createReqVO.vm │ │ │ │ │ │ ├── excelVO.vm │ │ │ │ │ │ ├── exportReqVO.vm │ │ │ │ │ │ ├── pageReqVO.vm │ │ │ │ │ │ ├── respVO.vm │ │ │ │ │ │ └── updateReqVO.vm │ │ │ │ ├── convert │ │ │ │ │ └── convert.vm │ │ │ │ ├── dal │ │ │ │ │ ├── do.vm │ │ │ │ │ ├── mapper.vm │ │ │ │ │ └── mapper.xml.vm │ │ │ │ ├── enums │ │ │ │ │ └── errorcode.vm │ │ │ │ ├── service │ │ │ │ │ ├── service.vm │ │ │ │ │ └── serviceImpl.vm │ │ │ │ └── test │ │ │ │ │ └── serviceTest.vm │ │ │ ├── sql │ │ │ │ ├── h2.vm │ │ │ │ └── sql.vm │ │ │ ├── vue │ │ │ │ ├── api │ │ │ │ │ └── api.js.vm │ │ │ │ └── views │ │ │ │ │ └── index.vue.vm │ │ │ ├── vue3 │ │ │ │ ├── api │ │ │ │ │ └── api.ts.vm │ │ │ │ └── views │ │ │ │ │ ├── form.vue.vm │ │ │ │ │ └── index.vue.vm │ │ │ ├── vue3_schema │ │ │ │ ├── api │ │ │ │ │ └── api.ts.vm │ │ │ │ └── views │ │ │ │ │ ├── data.ts.vm │ │ │ │ │ ├── form.vue.vm │ │ │ │ │ └── index.vue.vm │ │ │ └── vue3_vben │ │ │ │ ├── api │ │ │ │ └── api.ts.vm │ │ │ │ └── views │ │ │ │ ├── data.ts.vm │ │ │ │ ├── form.vue.vm │ │ │ │ └── index.vue.vm │ │ │ ├── file │ │ │ └── erweima.jpg │ │ │ └── mapper │ │ │ ├── null │ │ │ └── .gitkeep │ │ │ └── test │ │ │ └── TestDemoMapper.xml │ │ ├── test-integration │ │ └── java │ │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── module │ │ │ └── infra │ │ │ ├── dal │ │ │ ├── mysql │ │ │ │ ├── codegen │ │ │ │ │ └── SchemaColumnMapperTest.java │ │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ │ ├── service │ │ │ ├── codegen │ │ │ │ ├── CodegenEngineTest.java │ │ │ │ ├── CodegenSQLParserTest.java │ │ │ │ └── CodegenServiceImplTest.java │ │ │ └── package-info.java │ │ │ └── test │ │ │ ├── BaseDbAndRedisIntegrationTest.java │ │ │ └── BaseRedisIntegrationTest.java │ │ └── test │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── module │ │ │ └── infra │ │ │ └── service │ │ │ ├── DefaultDatabaseQueryTest.java │ │ │ ├── config │ │ │ └── ConfigServiceImplTest.java │ │ │ ├── db │ │ │ ├── DataSourceConfigServiceImplTest.java │ │ │ └── DatabaseTableServiceImplTest.java │ │ │ ├── file │ │ │ ├── FileConfigServiceImplTest.java │ │ │ └── FileServiceImplTest.java │ │ │ ├── job │ │ │ ├── JobLogServiceImplTest.java │ │ │ └── JobServiceImplTest.java │ │ │ ├── logger │ │ │ ├── ApiAccessLogServiceImplTest.java │ │ │ └── ApiErrorLogServiceImplTest.java │ │ │ └── test │ │ │ └── TestDemoServiceImplTest.java │ │ └── resources │ │ ├── application-unit-test.yaml │ │ ├── logback.xml │ │ └── sql │ │ ├── clean.sql │ │ └── create_tables.sql └── pom.xml ├── htron-module-member ├── htron-module-member-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── module │ │ └── member │ │ ├── api │ │ ├── address │ │ │ ├── MemberAddressApi.java │ │ │ └── dto │ │ │ │ └── MemberAddressRespDTO.java │ │ ├── config │ │ │ ├── MemberConfigApi.java │ │ │ └── dto │ │ │ │ └── MemberConfigRespDTO.java │ │ ├── level │ │ │ ├── MemberLevelApi.java │ │ │ └── dto │ │ │ │ └── MemberLevelRespDTO.java │ │ ├── package-info.java │ │ ├── point │ │ │ └── MemberPointApi.java │ │ └── user │ │ │ ├── MemberUserApi.java │ │ │ └── dto │ │ │ └── MemberUserRespDTO.java │ │ ├── enums │ │ ├── DictTypeConstants.java │ │ ├── ErrorCodeConstants.java │ │ ├── MemberExperienceBizTypeEnum.java │ │ └── point │ │ │ └── MemberPointBizTypeEnum.java │ │ └── message │ │ ├── package-info.java │ │ └── user │ │ └── MemberUserCreateMessage.java ├── htron-module-member-biz │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── module │ │ │ └── member │ │ │ ├── api │ │ │ ├── address │ │ │ │ └── MemberAddressApiImpl.java │ │ │ ├── config │ │ │ │ └── MemberConfigApiImpl.java │ │ │ ├── level │ │ │ │ └── MemberLevelApiImpl.java │ │ │ ├── package-info.java │ │ │ ├── point │ │ │ │ └── MemberPointApiImpl.java │ │ │ └── user │ │ │ │ └── MemberUserApiImpl.java │ │ │ ├── controller │ │ │ ├── admin │ │ │ │ ├── address │ │ │ │ │ ├── AddressController.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── AddressBaseVO.java │ │ │ │ │ │ └── AddressRespVO.java │ │ │ │ ├── config │ │ │ │ │ ├── MemberConfigController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── MemberConfigBaseVO.java │ │ │ │ │ │ ├── MemberConfigRespVO.java │ │ │ │ │ │ └── MemberConfigSaveReqVO.java │ │ │ │ ├── group │ │ │ │ │ ├── MemberGroupController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── MemberGroupBaseVO.java │ │ │ │ │ │ ├── MemberGroupCreateReqVO.java │ │ │ │ │ │ ├── MemberGroupPageReqVO.java │ │ │ │ │ │ ├── MemberGroupRespVO.java │ │ │ │ │ │ ├── MemberGroupSimpleRespVO.java │ │ │ │ │ │ └── MemberGroupUpdateReqVO.java │ │ │ │ ├── level │ │ │ │ │ ├── MemberExperienceRecordController.java │ │ │ │ │ ├── MemberLevelController.java │ │ │ │ │ ├── MemberLevelRecordController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── experience │ │ │ │ │ │ ├── MemberExperienceRecordBaseVO.java │ │ │ │ │ │ ├── MemberExperienceRecordPageReqVO.java │ │ │ │ │ │ └── MemberExperienceRecordRespVO.java │ │ │ │ │ │ ├── level │ │ │ │ │ │ ├── MemberLevelBaseVO.java │ │ │ │ │ │ ├── MemberLevelCreateReqVO.java │ │ │ │ │ │ ├── MemberLevelListReqVO.java │ │ │ │ │ │ ├── MemberLevelRespVO.java │ │ │ │ │ │ ├── MemberLevelSimpleRespVO.java │ │ │ │ │ │ └── MemberLevelUpdateReqVO.java │ │ │ │ │ │ └── record │ │ │ │ │ │ ├── MemberLevelRecordBaseVO.java │ │ │ │ │ │ ├── MemberLevelRecordPageReqVO.java │ │ │ │ │ │ └── MemberLevelRecordRespVO.java │ │ │ │ ├── point │ │ │ │ │ ├── MemberPointRecordController.java │ │ │ │ │ └── vo │ │ │ │ │ │ └── recrod │ │ │ │ │ │ ├── MemberPointRecordPageReqVO.java │ │ │ │ │ │ └── MemberPointRecordRespVO.java │ │ │ │ ├── signin │ │ │ │ │ ├── MemberSignInConfigController.java │ │ │ │ │ ├── MemberSignInRecordController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── config │ │ │ │ │ │ ├── MemberSignInConfigBaseVO.java │ │ │ │ │ │ ├── MemberSignInConfigCreateReqVO.java │ │ │ │ │ │ ├── MemberSignInConfigRespVO.java │ │ │ │ │ │ └── MemberSignInConfigUpdateReqVO.java │ │ │ │ │ │ └── record │ │ │ │ │ │ ├── MemberSignInRecordPageReqVO.java │ │ │ │ │ │ └── MemberSignInRecordRespVO.java │ │ │ │ ├── tag │ │ │ │ │ ├── MemberTagController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── MemberTagBaseVO.java │ │ │ │ │ │ ├── MemberTagCreateReqVO.java │ │ │ │ │ │ ├── MemberTagPageReqVO.java │ │ │ │ │ │ ├── MemberTagRespVO.java │ │ │ │ │ │ └── MemberTagUpdateReqVO.java │ │ │ │ └── user │ │ │ │ │ ├── MemberUserController.java │ │ │ │ │ └── vo │ │ │ │ │ ├── MemberUserBaseVO.java │ │ │ │ │ ├── MemberUserPageReqVO.java │ │ │ │ │ ├── MemberUserRespVO.java │ │ │ │ │ ├── MemberUserUpdateLevelReqVO.java │ │ │ │ │ ├── MemberUserUpdatePointReqVO.java │ │ │ │ │ └── MemberUserUpdateReqVO.java │ │ │ ├── app │ │ │ │ ├── address │ │ │ │ │ ├── AppAddressController.http │ │ │ │ │ ├── AppAddressController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── AppAddressBaseVO.java │ │ │ │ │ │ ├── AppAddressCreateReqVO.java │ │ │ │ │ │ ├── AppAddressRespVO.java │ │ │ │ │ │ └── AppAddressUpdateReqVO.java │ │ │ │ ├── auth │ │ │ │ │ ├── AppAuthController.http │ │ │ │ │ ├── AppAuthController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── AppAuthCheckCodeReqVO.java │ │ │ │ │ │ ├── AppAuthLoginReqVO.java │ │ │ │ │ │ ├── AppAuthLoginRespVO.java │ │ │ │ │ │ ├── AppAuthSmsLoginReqVO.java │ │ │ │ │ │ ├── AppAuthSmsSendReqVO.java │ │ │ │ │ │ ├── AppAuthSmsValidateReqVO.java │ │ │ │ │ │ ├── AppAuthSocialLoginReqVO.java │ │ │ │ │ │ ├── AppAuthWeixinMiniAppLoginReqVO.java │ │ │ │ │ │ └── AuthWeixinJsapiSignatureRespVO.java │ │ │ │ ├── level │ │ │ │ │ ├── AppMemberExperienceRecordController.java │ │ │ │ │ ├── AppMemberLevelController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── experience │ │ │ │ │ │ └── AppMemberExperienceRecordRespVO.java │ │ │ │ │ │ └── level │ │ │ │ │ │ └── AppMemberLevelRespVO.java │ │ │ │ ├── point │ │ │ │ │ ├── AppMemberPointRecordController.java │ │ │ │ │ └── vo │ │ │ │ │ │ └── AppMemberPointRecordRespVO.java │ │ │ │ ├── signin │ │ │ │ │ ├── AppMemberSignInConfigController.java │ │ │ │ │ ├── AppMemberSignInRecordController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── config │ │ │ │ │ │ └── AppMemberSignInConfigRespVO.java │ │ │ │ │ │ └── record │ │ │ │ │ │ ├── AppMemberSignInRecordRespVO.java │ │ │ │ │ │ └── AppMemberSignInRecordSummaryRespVO.java │ │ │ │ ├── social │ │ │ │ │ ├── AppSocialUserController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── AppSocialUserBindReqVO.java │ │ │ │ │ │ └── AppSocialUserUnbindReqVO.java │ │ │ │ └── user │ │ │ │ │ ├── AppMemberUserController.http │ │ │ │ │ ├── AppMemberUserController.java │ │ │ │ │ └── vo │ │ │ │ │ ├── AppMemberUserInfoRespVO.java │ │ │ │ │ ├── AppMemberUserResetPasswordReqVO.java │ │ │ │ │ ├── AppMemberUserUpdateMobileReqVO.java │ │ │ │ │ ├── AppMemberUserUpdatePasswordReqVO.java │ │ │ │ │ └── AppMemberUserUpdateReqVO.java │ │ │ └── package-info.java │ │ │ ├── convert │ │ │ ├── address │ │ │ │ └── AddressConvert.java │ │ │ ├── auth │ │ │ │ └── AuthConvert.java │ │ │ ├── config │ │ │ │ └── MemberConfigConvert.java │ │ │ ├── group │ │ │ │ └── MemberGroupConvert.java │ │ │ ├── level │ │ │ │ ├── MemberExperienceRecordConvert.java │ │ │ │ ├── MemberLevelConvert.java │ │ │ │ └── MemberLevelRecordConvert.java │ │ │ ├── package-info.java │ │ │ ├── point │ │ │ │ └── MemberPointRecordConvert.java │ │ │ ├── signin │ │ │ │ ├── MemberSignInConfigConvert.java │ │ │ │ └── MemberSignInRecordConvert.java │ │ │ ├── social │ │ │ │ └── SocialUserConvert.java │ │ │ ├── tag │ │ │ │ └── MemberTagConvert.java │ │ │ ├── user │ │ │ │ └── MemberUserConvert.java │ │ │ └── 《芋道 Spring Boot 对象转换 MapStruct 入门》.md │ │ │ ├── dal │ │ │ ├── dataobject │ │ │ │ ├── address │ │ │ │ │ └── MemberAddressDO.java │ │ │ │ ├── config │ │ │ │ │ └── MemberConfigDO.java │ │ │ │ ├── group │ │ │ │ │ └── MemberGroupDO.java │ │ │ │ ├── level │ │ │ │ │ ├── MemberExperienceRecordDO.java │ │ │ │ │ ├── MemberLevelDO.java │ │ │ │ │ └── MemberLevelRecordDO.java │ │ │ │ ├── point │ │ │ │ │ └── MemberPointRecordDO.java │ │ │ │ ├── signin │ │ │ │ │ ├── MemberSignInConfigDO.java │ │ │ │ │ └── MemberSignInRecordDO.java │ │ │ │ ├── tag │ │ │ │ │ └── MemberTagDO.java │ │ │ │ └── user │ │ │ │ │ └── MemberUserDO.java │ │ │ ├── mysql │ │ │ │ ├── address │ │ │ │ │ └── MemberAddressMapper.java │ │ │ │ ├── config │ │ │ │ │ └── MemberConfigMapper.java │ │ │ │ ├── group │ │ │ │ │ └── MemberGroupMapper.java │ │ │ │ ├── level │ │ │ │ │ ├── MemberExperienceRecordMapper.java │ │ │ │ │ ├── MemberLevelMapper.java │ │ │ │ │ └── MemberLevelRecordMapper.java │ │ │ │ ├── point │ │ │ │ │ └── MemberPointRecordMapper.java │ │ │ │ ├── signin │ │ │ │ │ ├── MemberSignInConfigMapper.java │ │ │ │ │ └── MemberSignInRecordMapper.java │ │ │ │ ├── tag │ │ │ │ │ └── MemberTagMapper.java │ │ │ │ └── user │ │ │ │ │ └── MemberUserMapper.java │ │ │ ├── package-info.java │ │ │ └── redis │ │ │ │ └── package-info.java │ │ │ ├── framework │ │ │ ├── package-info.java │ │ │ └── web │ │ │ │ ├── config │ │ │ │ └── MemberWebConfiguration.java │ │ │ │ └── package-info.java │ │ │ ├── mq │ │ │ ├── consumer │ │ │ │ └── package-info.java │ │ │ ├── message │ │ │ │ └── package-info.java │ │ │ └── producer │ │ │ │ ├── package-info.java │ │ │ │ └── user │ │ │ │ └── MemberUserProducer.java │ │ │ ├── package-info.java │ │ │ └── service │ │ │ ├── address │ │ │ ├── AddressService.java │ │ │ └── AddressServiceImpl.java │ │ │ ├── auth │ │ │ ├── MemberAuthService.java │ │ │ └── MemberAuthServiceImpl.java │ │ │ ├── config │ │ │ ├── MemberConfigService.java │ │ │ └── MemberConfigServiceImpl.java │ │ │ ├── group │ │ │ ├── MemberGroupService.java │ │ │ └── MemberGroupServiceImpl.java │ │ │ ├── level │ │ │ ├── MemberExperienceRecordService.java │ │ │ ├── MemberExperienceRecordServiceImpl.java │ │ │ ├── MemberLevelRecordService.java │ │ │ ├── MemberLevelRecordServiceImpl.java │ │ │ ├── MemberLevelService.java │ │ │ └── MemberLevelServiceImpl.java │ │ │ ├── point │ │ │ ├── MemberPointRecordService.java │ │ │ └── MemberPointRecordServiceImpl.java │ │ │ ├── signin │ │ │ ├── MemberSignInConfigService.java │ │ │ ├── MemberSignInConfigServiceImpl.java │ │ │ ├── MemberSignInRecordService.java │ │ │ └── MemberSignInRecordServiceImpl.java │ │ │ ├── tag │ │ │ ├── MemberTagService.java │ │ │ └── MemberTagServiceImpl.java │ │ │ └── user │ │ │ ├── MemberUserService.java │ │ │ └── MemberUserServiceImpl.java │ │ └── test │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── module │ │ │ └── member │ │ │ └── service │ │ │ ├── address │ │ │ └── MemberAddressServiceImplTest.java │ │ │ ├── auth │ │ │ └── MemberAuthServiceTest.java │ │ │ ├── group │ │ │ └── MemberGroupServiceImplTest.java │ │ │ ├── level │ │ │ └── MemberLevelServiceImplTest.java │ │ │ ├── tag │ │ │ └── MemberTagServiceImplTest.java │ │ │ └── user │ │ │ └── MemberUserServiceImplTest.java │ │ └── resources │ │ ├── application-unit-test.yaml │ │ ├── logback.xml │ │ └── sql │ │ ├── clean.sql │ │ └── create_tables.sql └── pom.xml ├── htron-module-mp ├── htron-module-mp-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── module │ │ └── mp │ │ ├── enums │ │ ├── ErrorCodeConstants.java │ │ └── message │ │ │ ├── MpAutoReplyMatchEnum.java │ │ │ ├── MpAutoReplyTypeEnum.java │ │ │ └── MpMessageSendFromEnum.java │ │ └── package-info.java ├── htron-module-mp-biz │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── module │ │ └── mp │ │ ├── controller │ │ ├── admin │ │ │ ├── account │ │ │ │ ├── MpAccountController.java │ │ │ │ └── vo │ │ │ │ │ ├── MpAccountBaseVO.java │ │ │ │ │ ├── MpAccountCreateReqVO.java │ │ │ │ │ ├── MpAccountPageReqVO.java │ │ │ │ │ ├── MpAccountRespVO.java │ │ │ │ │ ├── MpAccountSimpleRespVO.java │ │ │ │ │ └── MpAccountUpdateReqVO.java │ │ │ ├── material │ │ │ │ ├── MpMaterialController.http │ │ │ │ ├── MpMaterialController.java │ │ │ │ └── vo │ │ │ │ │ ├── MpMaterialPageReqVO.java │ │ │ │ │ ├── MpMaterialRespVO.java │ │ │ │ │ ├── MpMaterialUploadNewsImageReqVO.java │ │ │ │ │ ├── MpMaterialUploadPermanentReqVO.java │ │ │ │ │ ├── MpMaterialUploadRespVO.java │ │ │ │ │ └── MpMaterialUploadTemporaryReqVO.java │ │ │ ├── menu │ │ │ │ ├── MpMenuController.http │ │ │ │ ├── MpMenuController.java │ │ │ │ └── vo │ │ │ │ │ ├── MpMenuBaseVO.java │ │ │ │ │ ├── MpMenuRespVO.java │ │ │ │ │ └── MpMenuSaveReqVO.java │ │ │ ├── message │ │ │ │ ├── MpAutoReplyController.http │ │ │ │ ├── MpAutoReplyController.java │ │ │ │ ├── MpMessageController.http │ │ │ │ ├── MpMessageController.java │ │ │ │ └── vo │ │ │ │ │ ├── autoreply │ │ │ │ │ ├── MpAutoReplyBaseVO.java │ │ │ │ │ ├── MpAutoReplyCreateReqVO.java │ │ │ │ │ ├── MpAutoReplyPageReqVO.java │ │ │ │ │ ├── MpAutoReplyRespVO.java │ │ │ │ │ └── MpAutoReplyUpdateReqVO.java │ │ │ │ │ └── message │ │ │ │ │ ├── MpMessagePageReqVO.java │ │ │ │ │ ├── MpMessageRespVO.java │ │ │ │ │ └── MpMessageSendReqVO.java │ │ │ ├── news │ │ │ │ ├── MpDraftController.http │ │ │ │ ├── MpDraftController.java │ │ │ │ ├── MpFreePublishController.http │ │ │ │ ├── MpFreePublishController.java │ │ │ │ └── vo │ │ │ │ │ ├── MpDraftPageReqVO.java │ │ │ │ │ └── MpFreePublishPageReqVO.java │ │ │ ├── open │ │ │ │ ├── MpOpenController.java │ │ │ │ └── vo │ │ │ │ │ ├── MpOpenCheckSignatureReqVO.java │ │ │ │ │ └── MpOpenHandleMessageReqVO.java │ │ │ ├── statistics │ │ │ │ ├── MpStatisticsController.java │ │ │ │ └── vo │ │ │ │ │ ├── MpStatisticsGetReqVO.java │ │ │ │ │ ├── MpStatisticsInterfaceSummaryRespVO.java │ │ │ │ │ ├── MpStatisticsUpstreamMessageRespVO.java │ │ │ │ │ ├── MpStatisticsUserCumulateRespVO.java │ │ │ │ │ └── MpStatisticsUserSummaryRespVO.java │ │ │ ├── tag │ │ │ │ ├── MpTagController.http │ │ │ │ ├── MpTagController.java │ │ │ │ └── vo │ │ │ │ │ ├── MpTagBaseVO.java │ │ │ │ │ ├── MpTagCreateReqVO.java │ │ │ │ │ ├── MpTagPageReqVO.java │ │ │ │ │ ├── MpTagRespVO.java │ │ │ │ │ ├── MpTagSimpleRespVO.java │ │ │ │ │ └── MpTagUpdateReqVO.java │ │ │ └── user │ │ │ │ ├── MpUserController.http │ │ │ │ ├── MpUserController.java │ │ │ │ └── vo │ │ │ │ ├── MpUserPageReqVO.java │ │ │ │ ├── MpUserRespVO.java │ │ │ │ └── MpUserUpdateReqVO.java │ │ └── package-info.java │ │ ├── convert │ │ ├── account │ │ │ └── MpAccountConvert.java │ │ ├── material │ │ │ └── MpMaterialConvert.java │ │ ├── menu │ │ │ └── MpMenuConvert.java │ │ ├── message │ │ │ ├── MpAutoReplyConvert.java │ │ │ └── MpMessageConvert.java │ │ ├── statistics │ │ │ └── MpStatisticsConvert.java │ │ ├── tag │ │ │ └── MpTagConvert.java │ │ └── user │ │ │ └── MpUserConvert.java │ │ ├── dal │ │ ├── dataobject │ │ │ ├── account │ │ │ │ └── MpAccountDO.java │ │ │ ├── material │ │ │ │ └── MpMaterialDO.java │ │ │ ├── menu │ │ │ │ └── MpMenuDO.java │ │ │ ├── message │ │ │ │ ├── MpAutoReplyDO.java │ │ │ │ └── MpMessageDO.java │ │ │ ├── tag │ │ │ │ └── MpTagDO.java │ │ │ └── user │ │ │ │ └── MpUserDO.java │ │ └── mysql │ │ │ ├── account │ │ │ └── MpAccountMapper.java │ │ │ ├── material │ │ │ └── MpMaterialMapper.java │ │ │ ├── menu │ │ │ └── MpMenuMapper.java │ │ │ ├── message │ │ │ ├── MpAutoReplyMapper.java │ │ │ └── MpMessageMapper.java │ │ │ ├── tag │ │ │ └── MpTagMapper.java │ │ │ └── user │ │ │ └── MpUserMapper.java │ │ ├── framework │ │ ├── mp │ │ │ ├── config │ │ │ │ └── MpConfiguration.java │ │ │ └── core │ │ │ │ ├── DefaultMpServiceFactory.java │ │ │ │ ├── MpServiceFactory.java │ │ │ │ ├── context │ │ │ │ └── MpContextHolder.java │ │ │ │ └── util │ │ │ │ └── MpUtils.java │ │ ├── package-info.java │ │ └── web │ │ │ ├── config │ │ │ └── MpWebConfiguration.java │ │ │ └── package-info.java │ │ ├── package-info.java │ │ └── service │ │ ├── account │ │ ├── MpAccountService.java │ │ └── MpAccountServiceImpl.java │ │ ├── handler │ │ ├── menu │ │ │ └── MenuHandler.java │ │ ├── message │ │ │ ├── MessageAutoReplyHandler.java │ │ │ └── MessageReceiveHandler.java │ │ ├── other │ │ │ ├── KfSessionHandler.java │ │ │ ├── NullHandler.java │ │ │ ├── ScanHandler.java │ │ │ ├── StoreCheckNotifyHandler.java │ │ │ └── package-info.java │ │ └── user │ │ │ ├── LocationHandler.java │ │ │ ├── SubscribeHandler.java │ │ │ └── UnsubscribeHandler.java │ │ ├── material │ │ ├── MpMaterialService.java │ │ └── MpMaterialServiceImpl.java │ │ ├── menu │ │ ├── MpMenuService.java │ │ └── MpMenuServiceImpl.java │ │ ├── message │ │ ├── MpAutoReplyService.java │ │ ├── MpAutoReplyServiceImpl.java │ │ ├── MpMessageService.java │ │ ├── MpMessageServiceImpl.java │ │ └── bo │ │ │ └── MpMessageSendOutReqBO.java │ │ ├── statistics │ │ ├── MpStatisticsService.java │ │ └── MpStatisticsServiceImpl.java │ │ ├── tag │ │ ├── MpTagService.java │ │ └── MpTagServiceImpl.java │ │ └── user │ │ ├── MpUserService.java │ │ └── MpUserServiceImpl.java └── pom.xml ├── htron-module-pay ├── htron-module-pay-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── module │ │ └── pay │ │ ├── api │ │ ├── notify │ │ │ ├── dto │ │ │ │ ├── PayOrderNotifyReqDTO.java │ │ │ │ └── PayRefundNotifyReqDTO.java │ │ │ └── package-info.java │ │ ├── order │ │ │ ├── PayOrderApi.java │ │ │ └── dto │ │ │ │ ├── PayOrderCreateReqDTO.java │ │ │ │ └── PayOrderRespDTO.java │ │ ├── refund │ │ │ ├── PayRefundApi.java │ │ │ └── dto │ │ │ │ ├── PayRefundCreateReqDTO.java │ │ │ │ └── PayRefundRespDTO.java │ │ └── transfer │ │ │ ├── PayTransferApi.java │ │ │ └── dto │ │ │ └── PayTransferCreateReqDTO.java │ │ └── enums │ │ ├── DictTypeConstants.java │ │ ├── ErrorCodeConstants.java │ │ ├── notify │ │ ├── PayNotifyStatusEnum.java │ │ └── PayNotifyTypeEnum.java │ │ ├── order │ │ └── PayOrderStatusEnum.java │ │ ├── refund │ │ └── PayRefundStatusEnum.java │ │ ├── transfer │ │ ├── PayTransferStatusEnum.java │ │ └── PayTransferTypeEnum.java │ │ └── wallet │ │ └── PayWalletBizTypeEnum.java ├── htron-module-pay-biz │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── module │ │ │ └── pay │ │ │ ├── api │ │ │ ├── order │ │ │ │ └── PayOrderApiImpl.java │ │ │ ├── refund │ │ │ │ └── PayRefundApiImpl.java │ │ │ └── transfer │ │ │ │ └── PayTransferApiImpl.java │ │ │ ├── controller │ │ │ ├── admin │ │ │ │ ├── app │ │ │ │ │ ├── PayAppController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── PayAppBaseVO.java │ │ │ │ │ │ ├── PayAppCreateReqVO.java │ │ │ │ │ │ ├── PayAppPageItemRespVO.java │ │ │ │ │ │ ├── PayAppPageReqVO.java │ │ │ │ │ │ ├── PayAppRespVO.java │ │ │ │ │ │ ├── PayAppUpdateReqVO.java │ │ │ │ │ │ └── PayAppUpdateStatusReqVO.java │ │ │ │ ├── channel │ │ │ │ │ ├── PayChannelController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── PayChannelBaseVO.java │ │ │ │ │ │ ├── PayChannelCreateReqVO.java │ │ │ │ │ │ ├── PayChannelRespVO.java │ │ │ │ │ │ └── PayChannelUpdateReqVO.java │ │ │ │ ├── demo │ │ │ │ │ ├── PayDemoOrderController.java │ │ │ │ │ ├── PayDemoTransferController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── PayDemoOrderCreateReqVO.java │ │ │ │ │ │ ├── PayDemoOrderRespVO.java │ │ │ │ │ │ └── transfer │ │ │ │ │ │ ├── PayDemoTransferCreateReqVO.java │ │ │ │ │ │ └── PayDemoTransferRespVO.java │ │ │ │ ├── notify │ │ │ │ │ ├── PayNotifyController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── PayNotifyTaskBaseVO.java │ │ │ │ │ │ ├── PayNotifyTaskDetailRespVO.java │ │ │ │ │ │ ├── PayNotifyTaskPageReqVO.java │ │ │ │ │ │ └── PayNotifyTaskRespVO.java │ │ │ │ ├── order │ │ │ │ │ ├── PayOrderController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── PayOrderBaseVO.java │ │ │ │ │ │ ├── PayOrderDetailsRespVO.java │ │ │ │ │ │ ├── PayOrderExcelVO.java │ │ │ │ │ │ ├── PayOrderExportReqVO.java │ │ │ │ │ │ ├── PayOrderPageItemRespVO.java │ │ │ │ │ │ ├── PayOrderPageReqVO.java │ │ │ │ │ │ ├── PayOrderRespVO.java │ │ │ │ │ │ ├── PayOrderSubmitReqVO.java │ │ │ │ │ │ └── PayOrderSubmitRespVO.java │ │ │ │ ├── refund │ │ │ │ │ ├── PayRefundController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── PayRefundBaseVO.java │ │ │ │ │ │ ├── PayRefundDetailsRespVO.java │ │ │ │ │ │ ├── PayRefundExcelVO.java │ │ │ │ │ │ ├── PayRefundExportReqVO.java │ │ │ │ │ │ ├── PayRefundPageItemRespVO.java │ │ │ │ │ │ └── PayRefundPageReqVO.java │ │ │ │ ├── transfer │ │ │ │ │ ├── PayTransferController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── PayTransferCreateReqVO.java │ │ │ │ │ │ ├── PayTransferCreateRespVO.java │ │ │ │ │ │ ├── PayTransferPageItemRespVO.java │ │ │ │ │ │ ├── PayTransferPageReqVO.java │ │ │ │ │ │ └── PayTransferRespVO.java │ │ │ │ └── wallet │ │ │ │ │ ├── PayWalletController.java │ │ │ │ │ ├── PayWalletRechargeController.java │ │ │ │ │ ├── PayWalletRechargePackageController.java │ │ │ │ │ ├── PayWalletTransactionController.java │ │ │ │ │ └── vo │ │ │ │ │ ├── rechargepackage │ │ │ │ │ ├── WalletRechargePackageBaseVO.java │ │ │ │ │ ├── WalletRechargePackageCreateReqVO.java │ │ │ │ │ ├── WalletRechargePackagePageReqVO.java │ │ │ │ │ ├── WalletRechargePackageRespVO.java │ │ │ │ │ └── WalletRechargePackageUpdateReqVO.java │ │ │ │ │ ├── transaction │ │ │ │ │ ├── PayWalletTransactionPageReqVO.java │ │ │ │ │ └── PayWalletTransactionRespVO.java │ │ │ │ │ └── wallet │ │ │ │ │ ├── PayWalletBaseVO.java │ │ │ │ │ ├── PayWalletPageReqVO.java │ │ │ │ │ ├── PayWalletRespVO.java │ │ │ │ │ └── PayWalletUserReqVO.java │ │ │ ├── app │ │ │ │ ├── channel │ │ │ │ │ └── AppPayChannelController.java │ │ │ │ ├── order │ │ │ │ │ ├── AppPayOrderController.http │ │ │ │ │ ├── AppPayOrderController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── AppPayOrderSubmitReqVO.java │ │ │ │ │ │ └── AppPayOrderSubmitRespVO.java │ │ │ │ ├── refund │ │ │ │ │ └── package-info.java │ │ │ │ └── wallet │ │ │ │ │ ├── AppPayWalletController.java │ │ │ │ │ ├── AppPayWalletRechargeController.java │ │ │ │ │ ├── AppPayWalletRechargePackageController.java │ │ │ │ │ ├── AppPayWalletTransactionController.java │ │ │ │ │ └── vo │ │ │ │ │ ├── recharge │ │ │ │ │ ├── AppPayWalletPackageRespVO.java │ │ │ │ │ ├── AppPayWalletRechargeCreateReqVO.java │ │ │ │ │ └── AppPayWalletRechargeCreateRespVO.java │ │ │ │ │ ├── transaction │ │ │ │ │ ├── AppPayWalletTransactionPageReqVO.java │ │ │ │ │ └── AppPayWalletTransactionRespVO.java │ │ │ │ │ └── wallet │ │ │ │ │ └── AppPayWalletRespVO.java │ │ │ └── package-info.java │ │ │ ├── convert │ │ │ ├── app │ │ │ │ └── PayAppConvert.java │ │ │ ├── channel │ │ │ │ └── PayChannelConvert.java │ │ │ ├── demo │ │ │ │ ├── PayDemoOrderConvert.java │ │ │ │ └── PayDemoTransferConvert.java │ │ │ ├── notify │ │ │ │ └── PayNotifyTaskConvert.java │ │ │ ├── order │ │ │ │ └── PayOrderConvert.java │ │ │ ├── package-info.java │ │ │ ├── refund │ │ │ │ └── PayRefundConvert.java │ │ │ ├── transfer │ │ │ │ └── PayTransferConvert.java │ │ │ ├── wallet │ │ │ │ ├── PayWalletConvert.java │ │ │ │ ├── PayWalletRechargeConvert.java │ │ │ │ ├── PayWalletTransactionConvert.java │ │ │ │ └── WalletRechargePackageConvert.java │ │ │ └── 《芋道 Spring Boot 对象转换 MapStruct 入门》.md │ │ │ ├── dal │ │ │ ├── dataobject │ │ │ │ ├── app │ │ │ │ │ └── PayAppDO.java │ │ │ │ ├── channel │ │ │ │ │ └── PayChannelDO.java │ │ │ │ ├── demo │ │ │ │ │ ├── PayDemoOrderDO.java │ │ │ │ │ └── PayDemoTransferDO.java │ │ │ │ ├── notify │ │ │ │ │ ├── PayNotifyLogDO.java │ │ │ │ │ └── PayNotifyTaskDO.java │ │ │ │ ├── order │ │ │ │ │ ├── PayOrderDO.java │ │ │ │ │ └── PayOrderExtensionDO.java │ │ │ │ ├── refund │ │ │ │ │ └── PayRefundDO.java │ │ │ │ ├── transfer │ │ │ │ │ └── PayTransferDO.java │ │ │ │ └── wallet │ │ │ │ │ ├── PayWalletDO.java │ │ │ │ │ ├── PayWalletRechargeDO.java │ │ │ │ │ ├── PayWalletRechargePackageDO.java │ │ │ │ │ └── PayWalletTransactionDO.java │ │ │ ├── mysql │ │ │ │ ├── app │ │ │ │ │ └── PayAppMapper.java │ │ │ │ ├── channel │ │ │ │ │ └── PayChannelMapper.java │ │ │ │ ├── demo │ │ │ │ │ ├── PayDemoOrderMapper.java │ │ │ │ │ └── PayDemoTransferMapper.java │ │ │ │ ├── notify │ │ │ │ │ ├── PayNotifyLogMapper.java │ │ │ │ │ └── PayNotifyTaskMapper.java │ │ │ │ ├── order │ │ │ │ │ ├── PayOrderExtensionMapper.java │ │ │ │ │ └── PayOrderMapper.java │ │ │ │ ├── refund │ │ │ │ │ └── PayRefundMapper.java │ │ │ │ ├── transfer │ │ │ │ │ └── PayTransferMapper.java │ │ │ │ └── wallet │ │ │ │ │ ├── PayWalletMapper.java │ │ │ │ │ ├── PayWalletRechargeMapper.java │ │ │ │ │ ├── PayWalletRechargePackageMapper.java │ │ │ │ │ └── PayWalletTransactionMapper.java │ │ │ └── redis │ │ │ │ ├── RedisKeyConstants.java │ │ │ │ ├── no │ │ │ │ └── PayNoRedisDAO.java │ │ │ │ └── notify │ │ │ │ └── PayNotifyLockRedisDAO.java │ │ │ ├── framework │ │ │ ├── job │ │ │ │ ├── config │ │ │ │ │ └── PayJobConfiguration.java │ │ │ │ └── core │ │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── pay │ │ │ │ ├── config │ │ │ │ │ ├── PayConfiguration.java │ │ │ │ │ └── PayProperties.java │ │ │ │ └── core │ │ │ │ │ └── WalletPayClient.java │ │ │ └── web │ │ │ │ ├── config │ │ │ │ └── PayWebConfiguration.java │ │ │ │ └── package-info.java │ │ │ ├── job │ │ │ ├── notify │ │ │ │ └── PayNotifyJob.java │ │ │ ├── order │ │ │ │ ├── PayOrderExpireJob.java │ │ │ │ └── PayOrderSyncJob.java │ │ │ └── refund │ │ │ │ └── PayRefundSyncJob.java │ │ │ ├── package-info.java │ │ │ └── service │ │ │ ├── app │ │ │ ├── PayAppService.java │ │ │ └── PayAppServiceImpl.java │ │ │ ├── channel │ │ │ ├── PayChannelService.java │ │ │ └── PayChannelServiceImpl.java │ │ │ ├── demo │ │ │ ├── PayDemoOrderService.java │ │ │ ├── PayDemoOrderServiceImpl.java │ │ │ ├── PayDemoTransferService.java │ │ │ └── PayDemoTransferServiceImpl.java │ │ │ ├── notify │ │ │ ├── PayNotifyService.java │ │ │ └── PayNotifyServiceImpl.java │ │ │ ├── order │ │ │ ├── PayOrderService.java │ │ │ └── PayOrderServiceImpl.java │ │ │ ├── refund │ │ │ ├── PayRefundService.java │ │ │ └── PayRefundServiceImpl.java │ │ │ ├── transfer │ │ │ ├── PayTransferService.java │ │ │ └── PayTransferServiceImpl.java │ │ │ └── wallet │ │ │ ├── PayWalletRechargePackageService.java │ │ │ ├── PayWalletRechargePackageServiceImpl.java │ │ │ ├── PayWalletRechargeService.java │ │ │ ├── PayWalletRechargeServiceImpl.java │ │ │ ├── PayWalletService.java │ │ │ ├── PayWalletServiceImpl.java │ │ │ ├── PayWalletTransactionService.java │ │ │ ├── PayWalletTransactionServiceImpl.java │ │ │ └── bo │ │ │ └── WalletTransactionCreateReqBO.java │ │ ├── test-integration │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── module │ │ │ │ └── pay │ │ │ │ ├── dal │ │ │ │ ├── dataobject │ │ │ │ │ └── merchant │ │ │ │ │ │ └── PayChannelDOTest.java │ │ │ │ └── mysql │ │ │ │ │ └── merchant │ │ │ │ │ └── PayChannelMapperIntegrationTest.java │ │ │ │ ├── service │ │ │ │ ├── order │ │ │ │ │ └── PayOrderServiceIntegrationTest.java │ │ │ │ └── package-info.java │ │ │ │ └── test │ │ │ │ ├── BaseDbAndRedisIntegrationTest.java │ │ │ │ ├── BaseDbIntegrationTest.java │ │ │ │ └── BaseRedisIntegrationTest.java │ │ └── resources │ │ │ └── application-integration-test.yaml │ │ └── test │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── module │ │ │ └── pay │ │ │ └── service │ │ │ ├── app │ │ │ └── PayAppServiceTest.java │ │ │ ├── channel │ │ │ └── PayChannelServiceTest.java │ │ │ ├── notify │ │ │ └── PayNotifyServiceTest.java │ │ │ ├── order │ │ │ └── PayOrderServiceTest.java │ │ │ └── refund │ │ │ └── PayRefundServiceTest.java │ │ └── resources │ │ ├── application-unit-test.yaml │ │ ├── logback.xml │ │ └── sql │ │ ├── clean.sql │ │ └── create_tables.sql └── pom.xml ├── htron-module-system ├── htron-module-system-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── top │ │ └── howie │ │ └── htron │ │ └── module │ │ └── system │ │ ├── api │ │ ├── dept │ │ │ ├── DeptApi.java │ │ │ ├── PostApi.java │ │ │ └── dto │ │ │ │ └── DeptRespDTO.java │ │ ├── dict │ │ │ ├── DictDataApi.java │ │ │ └── dto │ │ │ │ └── DictDataRespDTO.java │ │ ├── errorcode │ │ │ ├── ErrorCodeApi.java │ │ │ └── dto │ │ │ │ ├── ErrorCodeAutoGenerateReqDTO.java │ │ │ │ └── ErrorCodeRespDTO.java │ │ ├── logger │ │ │ ├── LoginLogApi.java │ │ │ ├── OperateLogApi.java │ │ │ └── dto │ │ │ │ ├── LoginLogCreateReqDTO.java │ │ │ │ └── OperateLogCreateReqDTO.java │ │ ├── mail │ │ │ ├── MailSendApi.java │ │ │ └── dto │ │ │ │ └── MailSendSingleToUserReqDTO.java │ │ ├── notify │ │ │ ├── NotifyMessageSendApi.java │ │ │ └── dto │ │ │ │ ├── NotifySendSingleToUserReqDTO.java │ │ │ │ └── NotifyTemplateReqDTO.java │ │ ├── oauth2 │ │ │ ├── OAuth2TokenApi.java │ │ │ └── dto │ │ │ │ ├── OAuth2AccessTokenCheckRespDTO.java │ │ │ │ ├── OAuth2AccessTokenCreateReqDTO.java │ │ │ │ └── OAuth2AccessTokenRespDTO.java │ │ ├── package-info.java │ │ ├── permission │ │ │ ├── PermissionApi.java │ │ │ ├── RoleApi.java │ │ │ └── dto │ │ │ │ └── DeptDataPermissionRespDTO.java │ │ ├── sensitiveword │ │ │ └── SensitiveWordApi.java │ │ ├── sms │ │ │ ├── SmsCodeApi.java │ │ │ ├── SmsSendApi.java │ │ │ └── dto │ │ │ │ ├── code │ │ │ │ ├── SmsCodeSendReqDTO.java │ │ │ │ ├── SmsCodeUseReqDTO.java │ │ │ │ └── SmsCodeValidateReqDTO.java │ │ │ │ └── send │ │ │ │ └── SmsSendSingleToUserReqDTO.java │ │ ├── social │ │ │ ├── SocialClientApi.java │ │ │ ├── SocialUserApi.java │ │ │ └── dto │ │ │ │ ├── SocialUserBindReqDTO.java │ │ │ │ ├── SocialUserRespDTO.java │ │ │ │ ├── SocialUserUnbindReqDTO.java │ │ │ │ ├── SocialWxJsapiSignatureRespDTO.java │ │ │ │ └── SocialWxPhoneNumberInfoRespDTO.java │ │ ├── tenant │ │ │ └── TenantApi.java │ │ └── user │ │ │ ├── AdminUserApi.java │ │ │ └── dto │ │ │ └── AdminUserRespDTO.java │ │ └── enums │ │ ├── DictTypeConstants.java │ │ ├── ErrorCodeConstants.java │ │ ├── common │ │ └── SexEnum.java │ │ ├── dept │ │ └── DeptIdEnum.java │ │ ├── errorcode │ │ └── ErrorCodeTypeEnum.java │ │ ├── logger │ │ ├── LoginLogTypeEnum.java │ │ └── LoginResultEnum.java │ │ ├── mail │ │ └── MailSendStatusEnum.java │ │ ├── notice │ │ └── NoticeTypeEnum.java │ │ ├── notify │ │ └── NotifyTemplateTypeEnum.java │ │ ├── oauth2 │ │ ├── OAuth2ClientConstants.java │ │ └── OAuth2GrantTypeEnum.java │ │ ├── permission │ │ ├── DataScopeEnum.java │ │ ├── MenuTypeEnum.java │ │ ├── RoleCodeEnum.java │ │ └── RoleTypeEnum.java │ │ ├── sms │ │ ├── SmsReceiveStatusEnum.java │ │ ├── SmsSceneEnum.java │ │ ├── SmsSendStatusEnum.java │ │ └── SmsTemplateTypeEnum.java │ │ └── social │ │ └── SocialTypeEnum.java ├── htron-module-system-biz │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── module │ │ │ └── system │ │ │ ├── api │ │ │ ├── dept │ │ │ │ ├── DeptApiImpl.java │ │ │ │ └── PostApiImpl.java │ │ │ ├── dict │ │ │ │ └── DictDataApiImpl.java │ │ │ ├── errorcode │ │ │ │ └── ErrorCodeApiImpl.java │ │ │ ├── logger │ │ │ │ ├── LoginLogApiImpl.java │ │ │ │ └── OperateLogApiImpl.java │ │ │ ├── mail │ │ │ │ └── MailSendApiImpl.java │ │ │ ├── notify │ │ │ │ └── NotifyMessageSendApiImpl.java │ │ │ ├── oauth2 │ │ │ │ └── OAuth2TokenApiImpl.java │ │ │ ├── permission │ │ │ │ ├── PermissionApiImpl.java │ │ │ │ └── RoleApiImpl.java │ │ │ ├── sensitiveword │ │ │ │ └── SensitiveWordApiImpl.java │ │ │ ├── sms │ │ │ │ ├── SmsCodeApiImpl.java │ │ │ │ └── SmsSendApiImpl.java │ │ │ ├── social │ │ │ │ ├── SocialClientApiImpl.java │ │ │ │ └── SocialUserApiImpl.java │ │ │ ├── tenant │ │ │ │ └── TenantApiImpl.java │ │ │ └── user │ │ │ │ └── AdminUserApiImpl.java │ │ │ ├── controller │ │ │ ├── admin │ │ │ │ ├── auth │ │ │ │ │ ├── AuthController.http │ │ │ │ │ ├── AuthController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── AuthLoginReqVO.java │ │ │ │ │ │ ├── AuthLoginRespVO.java │ │ │ │ │ │ ├── AuthMenuRespVO.java │ │ │ │ │ │ ├── AuthPermissionInfoRespVO.java │ │ │ │ │ │ ├── AuthSmsLoginReqVO.java │ │ │ │ │ │ ├── AuthSmsSendReqVO.java │ │ │ │ │ │ └── AuthSocialLoginReqVO.java │ │ │ │ ├── captcha │ │ │ │ │ └── CaptchaController.java │ │ │ │ ├── dept │ │ │ │ │ ├── DeptController.java │ │ │ │ │ ├── PostController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── dept │ │ │ │ │ │ ├── DeptBaseVO.java │ │ │ │ │ │ ├── DeptCreateReqVO.java │ │ │ │ │ │ ├── DeptListReqVO.java │ │ │ │ │ │ ├── DeptRespVO.java │ │ │ │ │ │ ├── DeptSimpleRespVO.java │ │ │ │ │ │ └── DeptUpdateReqVO.java │ │ │ │ │ │ └── post │ │ │ │ │ │ ├── PostBaseVO.java │ │ │ │ │ │ ├── PostCreateReqVO.java │ │ │ │ │ │ ├── PostExcelVO.java │ │ │ │ │ │ ├── PostExportReqVO.java │ │ │ │ │ │ ├── PostListReqVO.java │ │ │ │ │ │ ├── PostPageReqVO.java │ │ │ │ │ │ ├── PostRespVO.java │ │ │ │ │ │ ├── PostSimpleRespVO.java │ │ │ │ │ │ └── PostUpdateReqVO.java │ │ │ │ ├── dict │ │ │ │ │ ├── DictDataController.http │ │ │ │ │ ├── DictDataController.java │ │ │ │ │ ├── DictTypeController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── data │ │ │ │ │ │ ├── DictDataBaseVO.java │ │ │ │ │ │ ├── DictDataCreateReqVO.java │ │ │ │ │ │ ├── DictDataExcelVO.java │ │ │ │ │ │ ├── DictDataExportReqVO.java │ │ │ │ │ │ ├── DictDataPageReqVO.java │ │ │ │ │ │ ├── DictDataRespVO.java │ │ │ │ │ │ ├── DictDataSimpleRespVO.java │ │ │ │ │ │ └── DictDataUpdateReqVO.java │ │ │ │ │ │ └── type │ │ │ │ │ │ ├── DictTypeBaseVO.java │ │ │ │ │ │ ├── DictTypeCreateReqVO.java │ │ │ │ │ │ ├── DictTypeExcelVO.java │ │ │ │ │ │ ├── DictTypeExportReqVO.java │ │ │ │ │ │ ├── DictTypePageReqVO.java │ │ │ │ │ │ ├── DictTypeRespVO.java │ │ │ │ │ │ ├── DictTypeSimpleRespVO.java │ │ │ │ │ │ └── DictTypeUpdateReqVO.java │ │ │ │ ├── errorcode │ │ │ │ │ ├── ErrorCodeController.http │ │ │ │ │ ├── ErrorCodeController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── ErrorCodeBaseVO.java │ │ │ │ │ │ ├── ErrorCodeCreateReqVO.java │ │ │ │ │ │ ├── ErrorCodeExcelVO.java │ │ │ │ │ │ ├── ErrorCodeExportReqVO.java │ │ │ │ │ │ ├── ErrorCodePageReqVO.java │ │ │ │ │ │ ├── ErrorCodeRespVO.java │ │ │ │ │ │ └── ErrorCodeUpdateReqVO.java │ │ │ │ ├── ip │ │ │ │ │ ├── AreaController.http │ │ │ │ │ ├── AreaController.java │ │ │ │ │ └── vo │ │ │ │ │ │ └── AreaNodeRespVO.java │ │ │ │ ├── logger │ │ │ │ │ ├── LoginLogController.java │ │ │ │ │ ├── OperateLogController.http │ │ │ │ │ ├── OperateLogController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── loginlog │ │ │ │ │ │ ├── LoginLogBaseVO.java │ │ │ │ │ │ ├── LoginLogExcelVO.java │ │ │ │ │ │ ├── LoginLogExportReqVO.java │ │ │ │ │ │ ├── LoginLogPageReqVO.java │ │ │ │ │ │ └── LoginLogRespVO.java │ │ │ │ │ │ └── operatelog │ │ │ │ │ │ ├── OperateLogBaseVO.java │ │ │ │ │ │ ├── OperateLogExcelVO.java │ │ │ │ │ │ ├── OperateLogExportReqVO.java │ │ │ │ │ │ ├── OperateLogPageReqVO.java │ │ │ │ │ │ └── OperateLogRespVO.java │ │ │ │ ├── mail │ │ │ │ │ ├── MailAccountController.java │ │ │ │ │ ├── MailLogController.java │ │ │ │ │ ├── MailTemplateController.http │ │ │ │ │ ├── MailTemplateController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── account │ │ │ │ │ │ ├── MailAccountBaseVO.java │ │ │ │ │ │ ├── MailAccountCreateReqVO.java │ │ │ │ │ │ ├── MailAccountPageReqVO.java │ │ │ │ │ │ ├── MailAccountRespVO.java │ │ │ │ │ │ ├── MailAccountSimpleRespVO.java │ │ │ │ │ │ └── MailAccountUpdateReqVO.java │ │ │ │ │ │ ├── log │ │ │ │ │ │ ├── MailLogBaseVO.java │ │ │ │ │ │ ├── MailLogPageReqVO.java │ │ │ │ │ │ └── MailLogRespVO.java │ │ │ │ │ │ └── template │ │ │ │ │ │ ├── MailTemplateBaseVO.java │ │ │ │ │ │ ├── MailTemplateCreateReqVO.java │ │ │ │ │ │ ├── MailTemplatePageReqVO.java │ │ │ │ │ │ ├── MailTemplateRespVO.java │ │ │ │ │ │ ├── MailTemplateSendReqVO.java │ │ │ │ │ │ ├── MailTemplateSimpleRespVO.java │ │ │ │ │ │ └── MailTemplateUpdateReqVO.java │ │ │ │ ├── notice │ │ │ │ │ ├── NoticeController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── NoticeBaseVO.java │ │ │ │ │ │ ├── NoticeCreateReqVO.java │ │ │ │ │ │ ├── NoticePageReqVO.java │ │ │ │ │ │ ├── NoticeRespVO.java │ │ │ │ │ │ └── NoticeUpdateReqVO.java │ │ │ │ ├── notify │ │ │ │ │ ├── NotifyMessageController.java │ │ │ │ │ ├── NotifyTemplateController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── message │ │ │ │ │ │ ├── NotifyMessageBaseVO.java │ │ │ │ │ │ ├── NotifyMessageMyPageReqVO.java │ │ │ │ │ │ ├── NotifyMessagePageReqVO.java │ │ │ │ │ │ └── NotifyMessageRespVO.java │ │ │ │ │ │ └── template │ │ │ │ │ │ ├── NotifyTemplateBaseVO.java │ │ │ │ │ │ ├── NotifyTemplateCreateReqVO.java │ │ │ │ │ │ ├── NotifyTemplatePageReqVO.java │ │ │ │ │ │ ├── NotifyTemplateRespVO.java │ │ │ │ │ │ ├── NotifyTemplateSendReqVO.java │ │ │ │ │ │ └── NotifyTemplateUpdateReqVO.java │ │ │ │ ├── oauth2 │ │ │ │ │ ├── OAuth2ClientController.http │ │ │ │ │ ├── OAuth2ClientController.java │ │ │ │ │ ├── OAuth2OpenController.http │ │ │ │ │ ├── OAuth2OpenController.java │ │ │ │ │ ├── OAuth2TokenController.java │ │ │ │ │ ├── OAuth2UserController.http │ │ │ │ │ ├── OAuth2UserController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── client │ │ │ │ │ │ ├── OAuth2ClientBaseVO.java │ │ │ │ │ │ ├── OAuth2ClientCreateReqVO.java │ │ │ │ │ │ ├── OAuth2ClientPageReqVO.java │ │ │ │ │ │ ├── OAuth2ClientRespVO.java │ │ │ │ │ │ └── OAuth2ClientUpdateReqVO.java │ │ │ │ │ │ ├── open │ │ │ │ │ │ ├── OAuth2OpenAccessTokenRespVO.java │ │ │ │ │ │ ├── OAuth2OpenAuthorizeInfoRespVO.java │ │ │ │ │ │ └── OAuth2OpenCheckTokenRespVO.java │ │ │ │ │ │ ├── token │ │ │ │ │ │ ├── OAuth2AccessTokenPageReqVO.java │ │ │ │ │ │ └── OAuth2AccessTokenRespVO.java │ │ │ │ │ │ └── user │ │ │ │ │ │ ├── OAuth2UserInfoRespVO.java │ │ │ │ │ │ └── OAuth2UserUpdateReqVO.java │ │ │ │ ├── permission │ │ │ │ │ ├── MenuController.http │ │ │ │ │ ├── MenuController.java │ │ │ │ │ ├── PermissionController.java │ │ │ │ │ ├── RoleController.http │ │ │ │ │ ├── RoleController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── menu │ │ │ │ │ │ ├── MenuBaseVO.java │ │ │ │ │ │ ├── MenuCreateReqVO.java │ │ │ │ │ │ ├── MenuListReqVO.java │ │ │ │ │ │ ├── MenuRespVO.java │ │ │ │ │ │ ├── MenuSimpleRespVO.java │ │ │ │ │ │ └── MenuUpdateReqVO.java │ │ │ │ │ │ ├── permission │ │ │ │ │ │ ├── PermissionAssignRoleDataScopeReqVO.java │ │ │ │ │ │ ├── PermissionAssignRoleMenuReqVO.java │ │ │ │ │ │ └── PermissionAssignUserRoleReqVO.java │ │ │ │ │ │ └── role │ │ │ │ │ │ ├── RoleBaseVO.java │ │ │ │ │ │ ├── RoleCreateReqVO.java │ │ │ │ │ │ ├── RoleExcelVO.java │ │ │ │ │ │ ├── RoleExportReqVO.java │ │ │ │ │ │ ├── RolePageReqVO.java │ │ │ │ │ │ ├── RoleRespVO.java │ │ │ │ │ │ ├── RoleSimpleRespVO.java │ │ │ │ │ │ ├── RoleUpdateReqVO.java │ │ │ │ │ │ └── RoleUpdateStatusReqVO.java │ │ │ │ ├── sensitiveword │ │ │ │ │ ├── SensitiveWordController.http │ │ │ │ │ ├── SensitiveWordController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── SensitiveWordBaseVO.java │ │ │ │ │ │ ├── SensitiveWordCreateReqVO.java │ │ │ │ │ │ ├── SensitiveWordExcelVO.java │ │ │ │ │ │ ├── SensitiveWordExportReqVO.java │ │ │ │ │ │ ├── SensitiveWordPageReqVO.java │ │ │ │ │ │ ├── SensitiveWordRespVO.java │ │ │ │ │ │ └── SensitiveWordUpdateReqVO.java │ │ │ │ ├── sms │ │ │ │ │ ├── SmsCallbackController.java │ │ │ │ │ ├── SmsChannelController.java │ │ │ │ │ ├── SmsLogController.java │ │ │ │ │ ├── SmsTemplateController.http │ │ │ │ │ ├── SmsTemplateController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── channel │ │ │ │ │ │ ├── SmsChannelBaseVO.java │ │ │ │ │ │ ├── SmsChannelCreateReqVO.java │ │ │ │ │ │ ├── SmsChannelPageReqVO.java │ │ │ │ │ │ ├── SmsChannelRespVO.java │ │ │ │ │ │ ├── SmsChannelSimpleRespVO.java │ │ │ │ │ │ └── SmsChannelUpdateReqVO.java │ │ │ │ │ │ ├── log │ │ │ │ │ │ ├── SmsLogExcelVO.java │ │ │ │ │ │ ├── SmsLogExportReqVO.java │ │ │ │ │ │ ├── SmsLogPageReqVO.java │ │ │ │ │ │ └── SmsLogRespVO.java │ │ │ │ │ │ └── template │ │ │ │ │ │ ├── SmsTemplateBaseVO.java │ │ │ │ │ │ ├── SmsTemplateCreateReqVO.java │ │ │ │ │ │ ├── SmsTemplateExcelVO.java │ │ │ │ │ │ ├── SmsTemplateExportReqVO.java │ │ │ │ │ │ ├── SmsTemplatePageReqVO.java │ │ │ │ │ │ ├── SmsTemplateRespVO.java │ │ │ │ │ │ ├── SmsTemplateSendReqVO.java │ │ │ │ │ │ └── SmsTemplateUpdateReqVO.java │ │ │ │ ├── socail │ │ │ │ │ ├── SocialClientController.java │ │ │ │ │ ├── SocialUserController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── SocialUserBindReqVO.java │ │ │ │ │ │ ├── SocialUserUnbindReqVO.java │ │ │ │ │ │ ├── client │ │ │ │ │ │ ├── SocialClientBaseVO.java │ │ │ │ │ │ ├── SocialClientCreateReqVO.java │ │ │ │ │ │ ├── SocialClientPageReqVO.java │ │ │ │ │ │ ├── SocialClientRespVO.java │ │ │ │ │ │ └── SocialClientUpdateReqVO.java │ │ │ │ │ │ └── user │ │ │ │ │ │ ├── SocialUserBaseVO.java │ │ │ │ │ │ ├── SocialUserPageReqVO.java │ │ │ │ │ │ └── SocialUserRespVO.java │ │ │ │ ├── tenant │ │ │ │ │ ├── TenantController.http │ │ │ │ │ ├── TenantController.java │ │ │ │ │ ├── TenantPackageController.java │ │ │ │ │ └── vo │ │ │ │ │ │ ├── packages │ │ │ │ │ │ ├── TenantPackageBaseVO.java │ │ │ │ │ │ ├── TenantPackageCreateReqVO.java │ │ │ │ │ │ ├── TenantPackagePageReqVO.java │ │ │ │ │ │ ├── TenantPackageRespVO.java │ │ │ │ │ │ ├── TenantPackageSimpleRespVO.java │ │ │ │ │ │ └── TenantPackageUpdateReqVO.java │ │ │ │ │ │ └── tenant │ │ │ │ │ │ ├── TenantBaseVO.java │ │ │ │ │ │ ├── TenantCreateReqVO.java │ │ │ │ │ │ ├── TenantExcelVO.java │ │ │ │ │ │ ├── TenantExportReqVO.java │ │ │ │ │ │ ├── TenantPageReqVO.java │ │ │ │ │ │ ├── TenantRespVO.java │ │ │ │ │ │ └── TenantUpdateReqVO.java │ │ │ │ └── user │ │ │ │ │ ├── UserController.http │ │ │ │ │ ├── UserController.java │ │ │ │ │ ├── UserProfileController.http │ │ │ │ │ ├── UserProfileController.java │ │ │ │ │ └── vo │ │ │ │ │ ├── profile │ │ │ │ │ ├── UserProfileRespVO.java │ │ │ │ │ ├── UserProfileUpdatePasswordReqVO.java │ │ │ │ │ └── UserProfileUpdateReqVO.java │ │ │ │ │ └── user │ │ │ │ │ ├── UserBaseVO.java │ │ │ │ │ ├── UserCreateReqVO.java │ │ │ │ │ ├── UserExcelVO.java │ │ │ │ │ ├── UserExportReqVO.java │ │ │ │ │ ├── UserImportExcelVO.java │ │ │ │ │ ├── UserImportRespVO.java │ │ │ │ │ ├── UserPageItemRespVO.java │ │ │ │ │ ├── UserPageReqVO.java │ │ │ │ │ ├── UserRespVO.java │ │ │ │ │ ├── UserSimpleRespVO.java │ │ │ │ │ ├── UserUpdatePasswordReqVO.java │ │ │ │ │ ├── UserUpdateReqVO.java │ │ │ │ │ └── UserUpdateStatusReqVO.java │ │ │ ├── app │ │ │ │ ├── dict │ │ │ │ │ ├── AppDictDataController.java │ │ │ │ │ └── vo │ │ │ │ │ │ └── AppDictDataRespVO.java │ │ │ │ └── ip │ │ │ │ │ ├── AppAreaController.java │ │ │ │ │ └── vo │ │ │ │ │ └── AppAreaNodeRespVO.java │ │ │ └── package-info.java │ │ │ ├── convert │ │ │ ├── auth │ │ │ │ ├── AuthConvert.java │ │ │ │ ├── OAuth2ClientConvert.java │ │ │ │ └── OAuth2TokenConvert.java │ │ │ ├── dept │ │ │ │ ├── DeptConvert.java │ │ │ │ └── PostConvert.java │ │ │ ├── dict │ │ │ │ ├── DictDataConvert.java │ │ │ │ └── DictTypeConvert.java │ │ │ ├── errorcode │ │ │ │ └── ErrorCodeConvert.java │ │ │ ├── ip │ │ │ │ └── AreaConvert.java │ │ │ ├── logger │ │ │ │ ├── LoginLogConvert.java │ │ │ │ └── OperateLogConvert.java │ │ │ ├── mail │ │ │ │ ├── MailAccountConvert.java │ │ │ │ ├── MailLogConvert.java │ │ │ │ └── MailTemplateConvert.java │ │ │ ├── notice │ │ │ │ └── NoticeConvert.java │ │ │ ├── notify │ │ │ │ ├── NotifyMessageConvert.java │ │ │ │ └── NotifyTemplateConvert.java │ │ │ ├── oauth2 │ │ │ │ ├── OAuth2OpenConvert.java │ │ │ │ └── OAuth2UserConvert.java │ │ │ ├── package-info.java │ │ │ ├── permission │ │ │ │ ├── MenuConvert.java │ │ │ │ └── RoleConvert.java │ │ │ ├── sensitiveword │ │ │ │ └── SensitiveWordConvert.java │ │ │ ├── sms │ │ │ │ ├── SmsChannelConvert.java │ │ │ │ ├── SmsLogConvert.java │ │ │ │ └── SmsTemplateConvert.java │ │ │ ├── social │ │ │ │ ├── SocialClientConvert.java │ │ │ │ └── SocialUserConvert.java │ │ │ ├── tenant │ │ │ │ ├── TenantConvert.java │ │ │ │ └── TenantPackageConvert.java │ │ │ ├── user │ │ │ │ └── UserConvert.java │ │ │ └── 《芋道 Spring Boot 对象转换 MapStruct 入门》.md │ │ │ ├── dal │ │ │ ├── dataobject │ │ │ │ ├── dept │ │ │ │ │ ├── DeptDO.java │ │ │ │ │ ├── PostDO.java │ │ │ │ │ └── UserPostDO.java │ │ │ │ ├── dict │ │ │ │ │ ├── DictDataDO.java │ │ │ │ │ └── DictTypeDO.java │ │ │ │ ├── errorcode │ │ │ │ │ └── ErrorCodeDO.java │ │ │ │ ├── logger │ │ │ │ │ ├── LoginLogDO.java │ │ │ │ │ └── OperateLogDO.java │ │ │ │ ├── mail │ │ │ │ │ ├── MailAccountDO.java │ │ │ │ │ ├── MailLogDO.java │ │ │ │ │ └── MailTemplateDO.java │ │ │ │ ├── notice │ │ │ │ │ └── NoticeDO.java │ │ │ │ ├── notify │ │ │ │ │ ├── NotifyMessageDO.java │ │ │ │ │ └── NotifyTemplateDO.java │ │ │ │ ├── oauth2 │ │ │ │ │ ├── OAuth2AccessTokenDO.java │ │ │ │ │ ├── OAuth2ApproveDO.java │ │ │ │ │ ├── OAuth2ClientDO.java │ │ │ │ │ ├── OAuth2CodeDO.java │ │ │ │ │ └── OAuth2RefreshTokenDO.java │ │ │ │ ├── permission │ │ │ │ │ ├── MenuDO.java │ │ │ │ │ ├── RoleDO.java │ │ │ │ │ ├── RoleMenuDO.java │ │ │ │ │ └── UserRoleDO.java │ │ │ │ ├── sensitiveword │ │ │ │ │ └── SensitiveWordDO.java │ │ │ │ ├── sms │ │ │ │ │ ├── SmsChannelDO.java │ │ │ │ │ ├── SmsCodeDO.java │ │ │ │ │ ├── SmsLogDO.java │ │ │ │ │ └── SmsTemplateDO.java │ │ │ │ ├── social │ │ │ │ │ ├── SocialClientDO.java │ │ │ │ │ ├── SocialUserBindDO.java │ │ │ │ │ └── SocialUserDO.java │ │ │ │ ├── tenant │ │ │ │ │ ├── TenantDO.java │ │ │ │ │ └── TenantPackageDO.java │ │ │ │ └── user │ │ │ │ │ └── AdminUserDO.java │ │ │ ├── mysql │ │ │ │ ├── dept │ │ │ │ │ ├── DeptMapper.java │ │ │ │ │ ├── PostMapper.java │ │ │ │ │ └── UserPostMapper.java │ │ │ │ ├── dict │ │ │ │ │ ├── DictDataMapper.java │ │ │ │ │ └── DictTypeMapper.java │ │ │ │ ├── errorcode │ │ │ │ │ └── ErrorCodeMapper.java │ │ │ │ ├── logger │ │ │ │ │ ├── LoginLogMapper.java │ │ │ │ │ └── OperateLogMapper.java │ │ │ │ ├── mail │ │ │ │ │ ├── MailAccountMapper.java │ │ │ │ │ ├── MailLogMapper.java │ │ │ │ │ └── MailTemplateMapper.java │ │ │ │ ├── notice │ │ │ │ │ └── NoticeMapper.java │ │ │ │ ├── notify │ │ │ │ │ ├── NotifyMessageMapper.java │ │ │ │ │ └── NotifyTemplateMapper.java │ │ │ │ ├── oauth2 │ │ │ │ │ ├── OAuth2AccessTokenMapper.java │ │ │ │ │ ├── OAuth2ApproveMapper.java │ │ │ │ │ ├── OAuth2ClientMapper.java │ │ │ │ │ ├── OAuth2CodeMapper.java │ │ │ │ │ └── OAuth2RefreshTokenMapper.java │ │ │ │ ├── package-info.java │ │ │ │ ├── permission │ │ │ │ │ ├── MenuMapper.java │ │ │ │ │ ├── RoleMapper.java │ │ │ │ │ ├── RoleMenuMapper.java │ │ │ │ │ └── UserRoleMapper.java │ │ │ │ ├── sensitiveword │ │ │ │ │ └── SensitiveWordMapper.java │ │ │ │ ├── sms │ │ │ │ │ ├── SmsChannelMapper.java │ │ │ │ │ ├── SmsCodeMapper.java │ │ │ │ │ ├── SmsLogMapper.java │ │ │ │ │ └── SmsTemplateMapper.java │ │ │ │ ├── social │ │ │ │ │ ├── SocialClientMapper.java │ │ │ │ │ ├── SocialUserBindMapper.java │ │ │ │ │ └── SocialUserMapper.java │ │ │ │ ├── tenant │ │ │ │ │ ├── TenantMapper.java │ │ │ │ │ └── TenantPackageMapper.java │ │ │ │ └── user │ │ │ │ │ └── AdminUserMapper.java │ │ │ └── redis │ │ │ │ ├── RedisKeyConstants.java │ │ │ │ └── oauth2 │ │ │ │ └── OAuth2AccessTokenRedisDAO.java │ │ │ ├── framework │ │ │ ├── datapermission │ │ │ │ ├── config │ │ │ │ │ └── DataPermissionConfiguration.java │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── sms │ │ │ │ ├── SmsCodeConfiguration.java │ │ │ │ └── SmsCodeProperties.java │ │ │ └── web │ │ │ │ ├── config │ │ │ │ └── SystemWebConfiguration.java │ │ │ │ └── package-info.java │ │ │ ├── job │ │ │ ├── DemoJob.java │ │ │ └── package-info.java │ │ │ ├── mq │ │ │ ├── consumer │ │ │ │ ├── mail │ │ │ │ │ └── MailSendConsumer.java │ │ │ │ └── sms │ │ │ │ │ └── SmsSendConsumer.java │ │ │ ├── message │ │ │ │ ├── mail │ │ │ │ │ └── MailSendMessage.java │ │ │ │ └── sms │ │ │ │ │ └── SmsSendMessage.java │ │ │ └── producer │ │ │ │ ├── mail │ │ │ │ └── MailProducer.java │ │ │ │ └── sms │ │ │ │ └── SmsProducer.java │ │ │ ├── package-info.java │ │ │ ├── service │ │ │ ├── auth │ │ │ │ ├── AdminAuthService.java │ │ │ │ └── AdminAuthServiceImpl.java │ │ │ ├── dept │ │ │ │ ├── DeptService.java │ │ │ │ ├── DeptServiceImpl.java │ │ │ │ ├── PostService.java │ │ │ │ └── PostServiceImpl.java │ │ │ ├── dict │ │ │ │ ├── DictDataService.java │ │ │ │ ├── DictDataServiceImpl.java │ │ │ │ ├── DictTypeService.java │ │ │ │ └── DictTypeServiceImpl.java │ │ │ ├── errorcode │ │ │ │ ├── ErrorCodeService.java │ │ │ │ └── ErrorCodeServiceImpl.java │ │ │ ├── logger │ │ │ │ ├── LoginLogService.java │ │ │ │ ├── LoginLogServiceImpl.java │ │ │ │ ├── OperateLogService.java │ │ │ │ └── OperateLogServiceImpl.java │ │ │ ├── mail │ │ │ │ ├── MailAccountService.java │ │ │ │ ├── MailAccountServiceImpl.java │ │ │ │ ├── MailLogService.java │ │ │ │ ├── MailLogServiceImpl.java │ │ │ │ ├── MailSendService.java │ │ │ │ ├── MailSendServiceImpl.java │ │ │ │ ├── MailTemplateService.java │ │ │ │ └── MailTemplateServiceImpl.java │ │ │ ├── member │ │ │ │ ├── MemberService.java │ │ │ │ ├── MemberServiceImpl.java │ │ │ │ └── package-info.java │ │ │ ├── notice │ │ │ │ ├── NoticeService.java │ │ │ │ └── NoticeServiceImpl.java │ │ │ ├── notify │ │ │ │ ├── NotifyMessageService.java │ │ │ │ ├── NotifyMessageServiceImpl.java │ │ │ │ ├── NotifySendService.java │ │ │ │ ├── NotifySendServiceImpl.java │ │ │ │ ├── NotifyTemplateService.java │ │ │ │ └── NotifyTemplateServiceImpl.java │ │ │ ├── oauth2 │ │ │ │ ├── OAuth2ApproveService.java │ │ │ │ ├── OAuth2ApproveServiceImpl.java │ │ │ │ ├── OAuth2ClientService.java │ │ │ │ ├── OAuth2ClientServiceImpl.java │ │ │ │ ├── OAuth2CodeService.java │ │ │ │ ├── OAuth2CodeServiceImpl.java │ │ │ │ ├── OAuth2GrantService.java │ │ │ │ ├── OAuth2GrantServiceImpl.java │ │ │ │ ├── OAuth2TokenService.java │ │ │ │ └── OAuth2TokenServiceImpl.java │ │ │ ├── permission │ │ │ │ ├── MenuService.java │ │ │ │ ├── MenuServiceImpl.java │ │ │ │ ├── PermissionService.java │ │ │ │ ├── PermissionServiceImpl.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ └── bo │ │ │ │ │ └── RoleCreateReqBO.java │ │ │ ├── sensitiveword │ │ │ │ ├── SensitiveWordService.java │ │ │ │ └── SensitiveWordServiceImpl.java │ │ │ ├── sms │ │ │ │ ├── SmsChannelService.java │ │ │ │ ├── SmsChannelServiceImpl.java │ │ │ │ ├── SmsCodeService.java │ │ │ │ ├── SmsCodeServiceImpl.java │ │ │ │ ├── SmsLogService.java │ │ │ │ ├── SmsLogServiceImpl.java │ │ │ │ ├── SmsSendService.java │ │ │ │ ├── SmsSendServiceImpl.java │ │ │ │ ├── SmsTemplateService.java │ │ │ │ └── SmsTemplateServiceImpl.java │ │ │ ├── social │ │ │ │ ├── SocialClientService.java │ │ │ │ ├── SocialClientServiceImpl.java │ │ │ │ ├── SocialUserService.java │ │ │ │ └── SocialUserServiceImpl.java │ │ │ ├── tenant │ │ │ │ ├── TenantPackageService.java │ │ │ │ ├── TenantPackageServiceImpl.java │ │ │ │ ├── TenantService.java │ │ │ │ ├── TenantServiceImpl.java │ │ │ │ └── handler │ │ │ │ │ ├── TenantInfoHandler.java │ │ │ │ │ └── TenantMenuHandler.java │ │ │ └── user │ │ │ │ ├── AdminUserService.java │ │ │ │ └── AdminUserServiceImpl.java │ │ │ └── util │ │ │ ├── collection │ │ │ └── SimpleTrie.java │ │ │ ├── oauth2 │ │ │ └── OAuth2Utils.java │ │ │ └── package-info.java │ │ ├── test-integration │ │ ├── java │ │ │ └── top │ │ │ │ └── howie │ │ │ │ └── htron │ │ │ │ └── module │ │ │ │ └── system │ │ │ │ ├── job │ │ │ │ └── SchedulerManagerTest.java │ │ │ │ ├── mq │ │ │ │ └── RedisStreamTest.java │ │ │ │ ├── service │ │ │ │ ├── package-info.java │ │ │ │ └── sms │ │ │ │ │ └── SmsServiceIntegrationTest.java │ │ │ │ └── test │ │ │ │ ├── BaseDbAndRedisIntegrationTest.java │ │ │ │ └── BaseRedisIntegrationTest.java │ │ └── resources │ │ │ └── application-integration-test.yaml │ │ └── test │ │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── module │ │ │ └── system │ │ │ ├── controller │ │ │ └── admin │ │ │ │ └── oauth2 │ │ │ │ └── OAuth2OpenControllerTest.java │ │ │ └── service │ │ │ ├── auth │ │ │ └── AdminAuthServiceImplTest.java │ │ │ ├── dept │ │ │ ├── DeptServiceImplTest.java │ │ │ └── PostServiceImplTest.java │ │ │ ├── dict │ │ │ ├── DictDataServiceImplTest.java │ │ │ └── DictTypeServiceImplTest.java │ │ │ ├── errorcode │ │ │ └── ErrorCodeServiceTest.java │ │ │ ├── logger │ │ │ ├── LoginLogServiceImplTest.java │ │ │ └── OperateLogServiceImplTest.java │ │ │ ├── mail │ │ │ ├── MailAccountServiceImplTest.java │ │ │ ├── MailLogServiceImplTest.java │ │ │ ├── MailSendServiceImplTest.java │ │ │ └── MailTemplateServiceImplTest.java │ │ │ ├── notice │ │ │ └── NoticeServiceImplTest.java │ │ │ ├── notify │ │ │ ├── NotifyMessageServiceImplTest.java │ │ │ ├── NotifySendServiceImplTest.java │ │ │ └── NotifyTemplateServiceImplTest.java │ │ │ ├── oauth2 │ │ │ ├── OAuth2ApproveServiceImplTest.java │ │ │ ├── OAuth2ClientServiceImplTest.java │ │ │ ├── OAuth2CodeServiceImplTest.java │ │ │ ├── OAuth2GrantServiceImplTest.java │ │ │ └── OAuth2TokenServiceImplTest.java │ │ │ ├── permission │ │ │ ├── MenuServiceImplTest.java │ │ │ ├── PermissionServiceTest.java │ │ │ └── RoleServiceImplTest.java │ │ │ ├── sensitiveword │ │ │ └── SensitiveWordServiceImplTest.java │ │ │ ├── sms │ │ │ ├── SmsChannelServiceTest.java │ │ │ ├── SmsCodeServiceImplTest.java │ │ │ ├── SmsLogServiceImplTest.java │ │ │ ├── SmsSendServiceImplTest.java │ │ │ └── SmsTemplateServiceImplTest.java │ │ │ ├── social │ │ │ ├── SocialClientServiceImplTest.java │ │ │ └── SocialUserServiceImplTest.java │ │ │ ├── tenant │ │ │ ├── TenantPackageServiceImplTest.java │ │ │ └── TenantServiceImplTest.java │ │ │ └── user │ │ │ └── AdminUserServiceImplTest.java │ │ └── resources │ │ ├── application-unit-test.yaml │ │ ├── logback.xml │ │ └── sql │ │ ├── clean.sql │ │ └── create_tables.sql └── pom.xml ├── htron-server ├── Dockerfile ├── pom.xml └── src │ ├── main │ ├── java │ │ └── top │ │ │ └── howie │ │ │ └── htron │ │ │ └── server │ │ │ ├── HtronServerApplication.java │ │ │ └── controller │ │ │ └── DefaultController.java │ └── resources │ │ ├── application-dev.yaml │ │ ├── application-local.yaml │ │ ├── application.yaml │ │ └── logback-spring.xml │ └── test │ └── java │ └── top │ └── howie │ └── htron │ └── ProjectReactor.java ├── htron-ui-admin-vue3 ├── .editorconfig ├── .env ├── .env.base ├── .env.dev ├── .env.front ├── .env.pro ├── .env.stage ├── .env.static ├── .eslintignore ├── .eslintrc-auto-import.json ├── .eslintrc.js ├── .gitignore ├── .image │ ├── Java监控.jpg │ ├── MySQL.jpg │ ├── OA请假-列表.jpg │ ├── OA请假-发起.jpg │ ├── OA请假-详情.jpg │ ├── Redis.jpg │ ├── admin-uniapp │ │ ├── 01.png │ │ ├── 02.png │ │ ├── 03.png │ │ ├── 04.png │ │ ├── 05.png │ │ ├── 06.png │ │ ├── 07.png │ │ ├── 08.png │ │ └── 09.png │ ├── common │ │ ├── mall-feature.png │ │ ├── mall-preview.png │ │ ├── project-vs.png │ │ ├── ruoyi-vue-pro-architecture.png │ │ ├── ruoyi-vue-pro-biz.png │ │ ├── yudao-cloud-architecture.png │ │ └── yudao-roadmap.png │ ├── 个人中心.jpg │ ├── 代码生成.jpg │ ├── 令牌管理.jpg │ ├── 任务列表-审批.jpg │ ├── 任务列表-已办.jpg │ ├── 任务列表-待办.jpg │ ├── 任务日志.jpg │ ├── 商户信息.jpg │ ├── 在线用户.jpg │ ├── 大屏设计器-列表.jpg │ ├── 大屏设计器-编辑.jpg │ ├── 大屏设计器-预览.jpg │ ├── 字典数据.jpg │ ├── 字典类型.jpg │ ├── 定时任务.jpg │ ├── 岗位管理.jpg │ ├── 应用信息-列表.jpg │ ├── 应用信息-编辑.jpg │ ├── 应用管理.jpg │ ├── 我的流程-列表.jpg │ ├── 我的流程-发起.jpg │ ├── 我的流程-详情.jpg │ ├── 报表设计器-图形报表.jpg │ ├── 报表设计器-打印设计.jpg │ ├── 报表设计器-数据报表.jpg │ ├── 操作日志.jpg │ ├── 支付订单.jpg │ ├── 敏感词.jpg │ ├── 数据库文档.jpg │ ├── 文件管理.jpg │ ├── 文件管理2.jpg │ ├── 文件配置.jpg │ ├── 日志中心.jpg │ ├── 流程模型-列表.jpg │ ├── 流程模型-定义.jpg │ ├── 流程模型-设计.jpg │ ├── 流程表单.jpg │ ├── 生成效果.jpg │ ├── 用户分组.jpg │ ├── 用户管理.jpg │ ├── 登录.jpg │ ├── 登录日志.jpg │ ├── 短信日志.jpg │ ├── 短信模板.jpg │ ├── 短信渠道.jpg │ ├── 租户套餐.png │ ├── 租户管理.jpg │ ├── 系统接口.jpg │ ├── 菜单管理.jpg │ ├── 表单构建.jpg │ ├── 角色管理.jpg │ ├── 访问日志.jpg │ ├── 退款订单.jpg │ ├── 通知公告.jpg │ ├── 部门管理.jpg │ ├── 配置管理.jpg │ ├── 链路追踪.jpg │ ├── 错误日志.jpg │ ├── 错误码管理.jpg │ └── 首页.jpg ├── .prettierignore ├── .stylelintignore ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json ├── LICENSE ├── README.md ├── build │ └── vite │ │ ├── index.ts │ │ └── optimize.ts ├── index.html ├── package.json ├── postcss.config.js ├── prettier.config.js ├── public │ ├── favicon.ico │ ├── home.png │ └── logo.gif ├── src │ ├── App.vue │ ├── api │ │ ├── bpm │ │ │ ├── activity │ │ │ │ └── index.ts │ │ │ ├── definition │ │ │ │ └── index.ts │ │ │ ├── form │ │ │ │ └── index.ts │ │ │ ├── leave │ │ │ │ └── index.ts │ │ │ ├── model │ │ │ │ └── index.ts │ │ │ ├── processInstance │ │ │ │ └── index.ts │ │ │ ├── task │ │ │ │ └── index.ts │ │ │ ├── taskAssignRule │ │ │ │ └── index.ts │ │ │ └── userGroup │ │ │ │ └── index.ts │ │ ├── crm │ │ │ ├── clue │ │ │ │ └── index.ts │ │ │ ├── contract │ │ │ │ └── index.ts │ │ │ ├── receivable │ │ │ │ └── index.ts │ │ │ └── receivablePlan │ │ │ │ └── index.ts │ │ ├── infra │ │ │ ├── apiAccessLog │ │ │ │ └── index.ts │ │ │ ├── apiErrorLog │ │ │ │ └── index.ts │ │ │ ├── codegen │ │ │ │ └── index.ts │ │ │ ├── config │ │ │ │ └── index.ts │ │ │ ├── dataSourceConfig │ │ │ │ └── index.ts │ │ │ ├── dbDoc │ │ │ │ └── index.ts │ │ │ ├── file │ │ │ │ └── index.ts │ │ │ ├── fileConfig │ │ │ │ └── index.ts │ │ │ ├── job │ │ │ │ └── index.ts │ │ │ ├── jobLog │ │ │ │ └── index.ts │ │ │ └── redis │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ ├── login │ │ │ ├── index.ts │ │ │ ├── oauth2 │ │ │ │ └── index.ts │ │ │ └── types.ts │ │ ├── mall │ │ │ ├── market │ │ │ │ └── banner │ │ │ │ │ └── index.ts │ │ │ ├── product │ │ │ │ ├── brand.ts │ │ │ │ ├── category.ts │ │ │ │ ├── comment.ts │ │ │ │ ├── property.ts │ │ │ │ └── spu.ts │ │ │ ├── promotion │ │ │ │ ├── article │ │ │ │ │ └── index.ts │ │ │ │ ├── articleCategory │ │ │ │ │ └── index.ts │ │ │ │ ├── bargain │ │ │ │ │ ├── bargainActivity.ts │ │ │ │ │ ├── bargainHelp.ts │ │ │ │ │ └── bargainRecord.ts │ │ │ │ ├── combination │ │ │ │ │ ├── combinationActivity.ts │ │ │ │ │ └── combinationRecord.ts │ │ │ │ ├── coupon │ │ │ │ │ ├── coupon.ts │ │ │ │ │ └── couponTemplate.ts │ │ │ │ ├── discount │ │ │ │ │ └── discountActivity.ts │ │ │ │ └── seckill │ │ │ │ │ ├── seckillActivity.ts │ │ │ │ │ └── seckillConfig.ts │ │ │ ├── statistics │ │ │ │ ├── common.ts │ │ │ │ ├── member.ts │ │ │ │ ├── pay.ts │ │ │ │ └── trade.ts │ │ │ └── trade │ │ │ │ ├── afterSale │ │ │ │ └── index.ts │ │ │ │ ├── brokerage │ │ │ │ ├── record │ │ │ │ │ └── index.ts │ │ │ │ ├── user │ │ │ │ │ └── index.ts │ │ │ │ └── withdraw │ │ │ │ │ └── index.ts │ │ │ │ ├── config │ │ │ │ └── index.ts │ │ │ │ ├── delivery │ │ │ │ ├── express │ │ │ │ │ └── index.ts │ │ │ │ ├── expressTemplate │ │ │ │ │ └── index.ts │ │ │ │ └── pickUpStore │ │ │ │ │ └── index.ts │ │ │ │ └── order │ │ │ │ └── index.ts │ │ ├── member │ │ │ ├── address │ │ │ │ └── index.ts │ │ │ ├── config │ │ │ │ └── index.ts │ │ │ ├── experience-record │ │ │ │ └── index.ts │ │ │ ├── group │ │ │ │ └── index.ts │ │ │ ├── level │ │ │ │ └── index.ts │ │ │ ├── point │ │ │ │ └── record │ │ │ │ │ └── index.ts │ │ │ ├── signin │ │ │ │ ├── config │ │ │ │ │ └── index.ts │ │ │ │ └── record │ │ │ │ │ └── index.ts │ │ │ ├── tag │ │ │ │ └── index.ts │ │ │ └── user │ │ │ │ └── index.ts │ │ ├── mp │ │ │ ├── account │ │ │ │ └── index.ts │ │ │ ├── autoReply │ │ │ │ └── index.ts │ │ │ ├── draft │ │ │ │ └── index.ts │ │ │ ├── freePublish │ │ │ │ └── index.ts │ │ │ ├── material │ │ │ │ └── index.ts │ │ │ ├── menu │ │ │ │ └── index.ts │ │ │ ├── message │ │ │ │ └── index.ts │ │ │ ├── statistics │ │ │ │ └── index.ts │ │ │ ├── tag │ │ │ │ └── index.ts │ │ │ └── user │ │ │ │ └── index.ts │ │ ├── pay │ │ │ ├── app │ │ │ │ └── index.ts │ │ │ ├── channel │ │ │ │ └── index.ts │ │ │ ├── demo │ │ │ │ └── index.ts │ │ │ ├── notify │ │ │ │ └── index.ts │ │ │ ├── order │ │ │ │ └── index.ts │ │ │ ├── refund │ │ │ │ └── index.ts │ │ │ └── wallet │ │ │ │ ├── balance │ │ │ │ └── index.ts │ │ │ │ ├── rechargePackage │ │ │ │ └── index.ts │ │ │ │ └── transaction │ │ │ │ └── index.ts │ │ └── system │ │ │ ├── area │ │ │ └── index.ts │ │ │ ├── dept │ │ │ └── index.ts │ │ │ ├── dict │ │ │ ├── dict.data.ts │ │ │ └── dict.type.ts │ │ │ ├── errorCode │ │ │ └── index.ts │ │ │ ├── loginLog │ │ │ └── index.ts │ │ │ ├── mail │ │ │ ├── account │ │ │ │ └── index.ts │ │ │ ├── log │ │ │ │ └── index.ts │ │ │ └── template │ │ │ │ └── index.ts │ │ │ ├── menu │ │ │ └── index.ts │ │ │ ├── notice │ │ │ └── index.ts │ │ │ ├── notify │ │ │ ├── message │ │ │ │ └── index.ts │ │ │ └── template │ │ │ │ └── index.ts │ │ │ ├── oauth2 │ │ │ ├── client.ts │ │ │ └── token.ts │ │ │ ├── operatelog │ │ │ └── index.ts │ │ │ ├── permission │ │ │ └── index.ts │ │ │ ├── post │ │ │ └── index.ts │ │ │ ├── role │ │ │ └── index.ts │ │ │ ├── sensitiveWord │ │ │ └── index.ts │ │ │ ├── sms │ │ │ ├── smsChannel │ │ │ │ └── index.ts │ │ │ ├── smsLog │ │ │ │ └── index.ts │ │ │ └── smsTemplate │ │ │ │ └── index.ts │ │ │ ├── tenant │ │ │ └── index.ts │ │ │ ├── tenantPackage │ │ │ └── index.ts │ │ │ └── user │ │ │ ├── index.ts │ │ │ ├── profile.ts │ │ │ └── socialUser.ts │ ├── assets │ │ ├── imgs │ │ │ ├── avatar.gif │ │ │ ├── avatar.jpg │ │ │ ├── logo.png │ │ │ ├── profile.jpg │ │ │ └── wechat.png │ │ ├── map │ │ │ └── json │ │ │ │ └── china.json │ │ └── svgs │ │ │ ├── 403.svg │ │ │ ├── 404.svg │ │ │ ├── 500.svg │ │ │ ├── icon.svg │ │ │ ├── login-bg.svg │ │ │ ├── login-box-bg.svg │ │ │ ├── member_balance.svg │ │ │ ├── member_expenditure_balance.svg │ │ │ ├── member_level.svg │ │ │ ├── member_point.svg │ │ │ ├── member_recharge_balance.svg │ │ │ ├── message.svg │ │ │ ├── money.svg │ │ │ ├── pay │ │ │ └── icon │ │ │ │ ├── alipay_app.svg │ │ │ │ ├── alipay_bar.svg │ │ │ │ ├── alipay_pc.svg │ │ │ │ ├── alipay_qr.svg │ │ │ │ ├── alipay_wap.svg │ │ │ │ ├── mock.svg │ │ │ │ ├── wx_app.svg │ │ │ │ ├── wx_bar.svg │ │ │ │ ├── wx_lite.svg │ │ │ │ ├── wx_native.svg │ │ │ │ └── wx_pub.svg │ │ │ ├── peoples.svg │ │ │ └── shopping.svg │ ├── components │ │ ├── Backtop │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Backtop.vue │ │ ├── Card │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── CardTitle.vue │ │ ├── ConfigGlobal │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── ConfigGlobal.vue │ │ ├── ContentDetailWrap │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── ContentDetailWrap.vue │ │ ├── ContentWrap │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── ContentWrap.vue │ │ ├── CountTo │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── CountTo.vue │ │ ├── Crontab │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Crontab.vue │ │ ├── Cropper │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── CopperModal.vue │ │ │ │ ├── Cropper.vue │ │ │ │ ├── CropperAvatar.vue │ │ │ │ └── types.ts │ │ ├── Descriptions │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── Descriptions.vue │ │ │ │ └── DescriptionsItemLabel.vue │ │ ├── Dialog │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Dialog.vue │ │ ├── DictTag │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── DictTag.vue │ │ ├── DocAlert │ │ │ └── index.vue │ │ ├── Echart │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Echart.vue │ │ ├── Editor │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Editor.vue │ │ ├── Error │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Error.vue │ │ ├── Form │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── Form.vue │ │ │ │ ├── componentMap.ts │ │ │ │ ├── components │ │ │ │ ├── useRenderCheckbox.tsx │ │ │ │ ├── useRenderRadio.tsx │ │ │ │ └── useRenderSelect.tsx │ │ │ │ ├── helper.ts │ │ │ │ └── types.ts │ │ ├── Highlight │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Highlight.vue │ │ ├── IFrame │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── IFrame.vue │ │ ├── Icon │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── Icon.vue │ │ │ │ ├── IconSelect.vue │ │ │ │ └── data.ts │ │ ├── ImageViewer │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── ImageViewer.vue │ │ │ │ └── types.ts │ │ ├── Infotip │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Infotip.vue │ │ ├── InputPassword │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── InputPassword.vue │ │ ├── Pagination │ │ │ └── index.vue │ │ ├── Qrcode │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Qrcode.vue │ │ ├── RouterSearch │ │ │ └── index.vue │ │ ├── Search │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Search.vue │ │ ├── ShortcutDateRangePicker │ │ │ └── index.vue │ │ ├── Sticky │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Sticky.vue │ │ ├── SummaryCard │ │ │ └── index.vue │ │ ├── Table │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── Table.vue │ │ │ │ ├── helper.ts │ │ │ │ └── types.ts │ │ ├── Tooltip │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Tooltip.vue │ │ ├── UploadFile │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── UploadFile.vue │ │ │ │ ├── UploadImg.vue │ │ │ │ └── UploadImgs.vue │ │ ├── Verifition │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── Verify.vue │ │ │ │ ├── Verify │ │ │ │ ├── VerifyPoints.vue │ │ │ │ ├── VerifySlide.vue │ │ │ │ └── index.ts │ │ │ │ └── utils │ │ │ │ ├── ase.ts │ │ │ │ └── util.ts │ │ ├── XButton │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── XButton.vue │ │ │ │ └── XTextButton.vue │ │ ├── bpmnProcessDesigner │ │ │ ├── package │ │ │ │ ├── designer │ │ │ │ │ ├── ProcessDesigner.vue │ │ │ │ │ ├── ProcessViewer.vue │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── index2.ts │ │ │ │ │ └── plugins │ │ │ │ │ │ ├── content-pad │ │ │ │ │ │ ├── contentPadProvider.js │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── defaultEmpty.js │ │ │ │ │ │ ├── descriptor │ │ │ │ │ │ ├── activitiDescriptor.json │ │ │ │ │ │ ├── camundaDescriptor.json │ │ │ │ │ │ └── flowableDescriptor.json │ │ │ │ │ │ ├── extension-moddle │ │ │ │ │ │ ├── activiti │ │ │ │ │ │ │ ├── activitiExtension.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── camunda │ │ │ │ │ │ │ ├── extension.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── flowable │ │ │ │ │ │ │ ├── flowableExtension.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── palette │ │ │ │ │ │ ├── CustomPalette.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── paletteProvider.js │ │ │ │ │ │ └── translate │ │ │ │ │ │ ├── customTranslate.js │ │ │ │ │ │ └── zh.js │ │ │ │ ├── index.ts │ │ │ │ ├── palette │ │ │ │ │ └── ProcessPalette.vue │ │ │ │ ├── penal │ │ │ │ │ ├── PropertiesPanel.vue │ │ │ │ │ ├── base │ │ │ │ │ │ └── ElementBaseInfo.vue │ │ │ │ │ ├── flow-condition │ │ │ │ │ │ └── FlowCondition.vue │ │ │ │ │ ├── form │ │ │ │ │ │ └── ElementForm.vue │ │ │ │ │ ├── index.js │ │ │ │ │ ├── listeners │ │ │ │ │ │ ├── ElementListeners.vue │ │ │ │ │ │ ├── UserTaskListeners.vue │ │ │ │ │ │ ├── template.js │ │ │ │ │ │ └── utilSelf.ts │ │ │ │ │ ├── multi-instance │ │ │ │ │ │ └── ElementMultiInstance.vue │ │ │ │ │ ├── other │ │ │ │ │ │ └── ElementOtherConfig.vue │ │ │ │ │ ├── properties │ │ │ │ │ │ └── ElementProperties.vue │ │ │ │ │ ├── signal-message │ │ │ │ │ │ └── SignalAndMessage.vue │ │ │ │ │ └── task │ │ │ │ │ │ ├── ElementTask.vue │ │ │ │ │ │ └── task-components │ │ │ │ │ │ ├── ReceiveTask.vue │ │ │ │ │ │ ├── ScriptTask.vue │ │ │ │ │ │ └── UserTask.vue │ │ │ │ ├── theme │ │ │ │ │ ├── element-variables.scss │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── process-designer.scss │ │ │ │ │ └── process-panel.scss │ │ │ │ └── utils.ts │ │ │ └── src │ │ │ │ ├── highlight │ │ │ │ └── index.js │ │ │ │ ├── modules │ │ │ │ ├── custom-renderer │ │ │ │ │ ├── CustomRenderer.js │ │ │ │ │ └── index.js │ │ │ │ └── rules │ │ │ │ │ ├── CustomRules.js │ │ │ │ │ └── index.js │ │ │ │ ├── translations.ts │ │ │ │ └── utils │ │ │ │ ├── directive │ │ │ │ └── clickOutSide.js │ │ │ │ ├── index.js │ │ │ │ └── xml2json.js │ │ └── index.ts │ ├── config │ │ └── axios │ │ │ ├── config.ts │ │ │ ├── errorCode.ts │ │ │ ├── index.ts │ │ │ └── service.ts │ ├── directives │ │ ├── index.ts │ │ └── permission │ │ │ ├── hasPermi.ts │ │ │ └── hasRole.ts │ ├── hooks │ │ ├── event │ │ │ └── useScrollTo.ts │ │ └── web │ │ │ ├── useCache.ts │ │ │ ├── useConfigGlobal.ts │ │ │ ├── useCrudSchemas.ts │ │ │ ├── useDesign.ts │ │ │ ├── useEmitt.ts │ │ │ ├── useForm.ts │ │ │ ├── useI18n.ts │ │ │ ├── useIcon.ts │ │ │ ├── useIntro.ts │ │ │ ├── useLocale.ts │ │ │ ├── useMessage.ts │ │ │ ├── useNProgress.ts │ │ │ ├── usePageLoading.ts │ │ │ ├── useTable.ts │ │ │ ├── useTimeAgo.ts │ │ │ ├── useTitle.ts │ │ │ ├── useValidator.ts │ │ │ └── useWatermark.ts │ ├── layout │ │ ├── Layout.vue │ │ └── components │ │ │ ├── AppView.vue │ │ │ ├── Breadcrumb │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── Breadcrumb.vue │ │ │ │ └── helper.ts │ │ │ ├── Collapse │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Collapse.vue │ │ │ ├── ContextMenu │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── ContextMenu.vue │ │ │ ├── Footer │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Footer.vue │ │ │ ├── LocaleDropdown │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── LocaleDropdown.vue │ │ │ ├── Logo │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Logo.vue │ │ │ ├── Menu │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── Menu.vue │ │ │ │ ├── components │ │ │ │ ├── useRenderMenuItem.tsx │ │ │ │ └── useRenderMenuTitle.tsx │ │ │ │ └── helper.ts │ │ │ ├── Message │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Message.vue │ │ │ ├── Screenfull │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── Screenfull.vue │ │ │ ├── Setting │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── Setting.vue │ │ │ │ └── components │ │ │ │ ├── ColorRadioPicker.vue │ │ │ │ ├── InterfaceDisplay.vue │ │ │ │ └── LayoutRadioPicker.vue │ │ │ ├── SizeDropdown │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── SizeDropdown.vue │ │ │ ├── TabMenu │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── TabMenu.vue │ │ │ │ └── helper.ts │ │ │ ├── TagsView │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── TagsView.vue │ │ │ │ └── helper.ts │ │ │ ├── ThemeSwitch │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── ThemeSwitch.vue │ │ │ ├── ToolHeader.vue │ │ │ ├── UserInfo │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── UserInfo.vue │ │ │ └── useRenderLayout.tsx │ ├── locales │ │ ├── en.ts │ │ └── zh-CN.ts │ ├── main.ts │ ├── permission.ts │ ├── plugins │ │ ├── animate.css │ │ │ └── index.ts │ │ ├── echarts │ │ │ └── index.ts │ │ ├── elementPlus │ │ │ └── index.ts │ │ ├── formCreate │ │ │ └── index.ts │ │ ├── svgIcon │ │ │ └── index.ts │ │ ├── tongji │ │ │ └── index.ts │ │ ├── unocss │ │ │ └── index.ts │ │ └── vueI18n │ │ │ ├── helper.ts │ │ │ └── index.ts │ ├── router │ │ ├── index.ts │ │ └── modules │ │ │ └── remaining.ts │ ├── store │ │ ├── index.ts │ │ └── modules │ │ │ ├── app.ts │ │ │ ├── dict.ts │ │ │ ├── locale.ts │ │ │ ├── permission.ts │ │ │ ├── tagsView.ts │ │ │ └── user.ts │ ├── styles │ │ ├── global.module.scss │ │ ├── index.scss │ │ ├── theme.scss │ │ ├── var.css │ │ └── variables.scss │ ├── types │ │ ├── components.d.ts │ │ ├── configGlobal.d.ts │ │ ├── contextMenu.d.ts │ │ ├── descriptions.d.ts │ │ ├── elementPlus.d.ts │ │ ├── form.d.ts │ │ ├── icon.d.ts │ │ ├── infoTip.d.ts │ │ ├── layout.d.ts │ │ ├── localeDropdown.d.ts │ │ ├── qrcode.d.ts │ │ ├── table.d.ts │ │ └── theme.d.ts │ ├── utils │ │ ├── Logger.ts │ │ ├── auth.ts │ │ ├── color.ts │ │ ├── constants.ts │ │ ├── dict.ts │ │ ├── domUtils.ts │ │ ├── download.ts │ │ ├── filt.ts │ │ ├── formCreate.ts │ │ ├── formRules.ts │ │ ├── formatTime.ts │ │ ├── formatter.ts │ │ ├── index.ts │ │ ├── is.ts │ │ ├── jsencrypt.ts │ │ ├── permission.ts │ │ ├── propTypes.ts │ │ ├── routerHelper.ts │ │ ├── tree.ts │ │ └── tsxHelper.ts │ └── views │ │ ├── Error │ │ ├── 403.vue │ │ ├── 404.vue │ │ └── 500.vue │ │ ├── Home │ │ ├── Index.vue │ │ ├── Index2.vue │ │ ├── echarts-data.ts │ │ └── types.ts │ │ ├── Login │ │ ├── Login.vue │ │ ├── SocialLogin.vue │ │ └── components │ │ │ ├── LoginForm.vue │ │ │ ├── LoginFormTitle.vue │ │ │ ├── MobileForm.vue │ │ │ ├── QrCodeForm.vue │ │ │ ├── RegisterForm.vue │ │ │ ├── SSOLogin.vue │ │ │ ├── index.ts │ │ │ └── useLogin.ts │ │ ├── Profile │ │ ├── Index.vue │ │ └── components │ │ │ ├── BasicInfo.vue │ │ │ ├── ProfileUser.vue │ │ │ ├── ResetPwd.vue │ │ │ ├── UserAvatar.vue │ │ │ ├── UserSocial.vue │ │ │ └── index.ts │ │ ├── Redirect │ │ └── Redirect.vue │ │ ├── bpm │ │ ├── definition │ │ │ └── index.vue │ │ ├── form │ │ │ ├── editor │ │ │ │ └── index.vue │ │ │ └── index.vue │ │ ├── group │ │ │ ├── UserGroupForm.vue │ │ │ └── index.vue │ │ ├── model │ │ │ ├── ModelForm.vue │ │ │ ├── ModelImportForm.vue │ │ │ ├── editor │ │ │ │ └── index.vue │ │ │ └── index.vue │ │ ├── oa │ │ │ └── leave │ │ │ │ ├── create.vue │ │ │ │ ├── detail.vue │ │ │ │ └── index.vue │ │ ├── processInstance │ │ │ ├── create │ │ │ │ └── index.vue │ │ │ ├── detail │ │ │ │ ├── ProcessInstanceBpmnViewer.vue │ │ │ │ ├── ProcessInstanceChildrenTaskList.vue │ │ │ │ ├── ProcessInstanceTaskList.vue │ │ │ │ ├── TaskAddSignDialogForm.vue │ │ │ │ ├── TaskDelegateForm.vue │ │ │ │ ├── TaskReturnDialogForm.vue │ │ │ │ ├── TaskSubSignDialogForm.vue │ │ │ │ ├── TaskUpdateAssigneeForm.vue │ │ │ │ └── index.vue │ │ │ └── index.vue │ │ ├── task │ │ │ ├── done │ │ │ │ ├── TaskDetail.vue │ │ │ │ └── index.vue │ │ │ └── todo │ │ │ │ └── index.vue │ │ └── taskAssignRule │ │ │ ├── TaskAssignRuleForm.vue │ │ │ └── index.vue │ │ ├── crm │ │ ├── clue │ │ │ ├── ClueForm.vue │ │ │ └── index.vue │ │ ├── contract │ │ │ ├── ContractForm.vue │ │ │ ├── contract.data.ts │ │ │ └── index.vue │ │ ├── receivable │ │ │ ├── ReceivableForm.vue │ │ │ └── index.vue │ │ └── receivablePlan │ │ │ ├── ReceivablePlanForm.vue │ │ │ └── index.vue │ │ ├── infra │ │ ├── apiAccessLog │ │ │ ├── ApiAccessLogDetail.vue │ │ │ └── index.vue │ │ ├── apiErrorLog │ │ │ ├── ApiErrorLogDetail.vue │ │ │ └── index.vue │ │ ├── build │ │ │ └── index.vue │ │ ├── codegen │ │ │ ├── EditTable.vue │ │ │ ├── ImportTable.vue │ │ │ ├── PreviewCode.vue │ │ │ ├── components │ │ │ │ ├── BasicInfoForm.vue │ │ │ │ ├── ColumInfoForm.vue │ │ │ │ ├── GenerateInfoForm.vue │ │ │ │ └── index.ts │ │ │ └── index.vue │ │ ├── config │ │ │ ├── ConfigForm.vue │ │ │ └── index.vue │ │ ├── dataSourceConfig │ │ │ ├── DataSourceConfigForm.vue │ │ │ └── index.vue │ │ ├── dbDoc │ │ │ └── index.vue │ │ ├── druid │ │ │ └── index.vue │ │ ├── file │ │ │ ├── FileForm.vue │ │ │ └── index.vue │ │ ├── fileConfig │ │ │ ├── FileConfigForm.vue │ │ │ └── index.vue │ │ ├── job │ │ │ ├── JobDetail.vue │ │ │ ├── JobForm.vue │ │ │ ├── index.vue │ │ │ └── logger │ │ │ │ ├── JobLogDetail.vue │ │ │ │ └── index.vue │ │ ├── redis │ │ │ └── index.vue │ │ ├── server │ │ │ └── index.vue │ │ ├── skywalking │ │ │ └── index.vue │ │ ├── swagger │ │ │ └── index.vue │ │ ├── testDemo │ │ │ └── index.vue │ │ └── webSocket │ │ │ └── index.vue │ │ ├── mall │ │ ├── home │ │ │ ├── components │ │ │ │ ├── ComparisonCard.vue │ │ │ │ ├── MemberStatisticsCard.vue │ │ │ │ ├── OperationDataCard.vue │ │ │ │ ├── ShortcutCard.vue │ │ │ │ └── TradeTrendCard.vue │ │ │ └── index.vue │ │ ├── product │ │ │ ├── brand │ │ │ │ ├── BrandForm.vue │ │ │ │ └── index.vue │ │ │ ├── category │ │ │ │ ├── CategoryForm.vue │ │ │ │ ├── components │ │ │ │ │ └── ProductCategorySelect.vue │ │ │ │ └── index.vue │ │ │ ├── comment │ │ │ │ ├── CommentForm.vue │ │ │ │ ├── ReplyForm.vue │ │ │ │ └── index.vue │ │ │ ├── property │ │ │ │ ├── PropertyForm.vue │ │ │ │ ├── index.vue │ │ │ │ └── value │ │ │ │ │ ├── ValueForm.vue │ │ │ │ │ └── index.vue │ │ │ └── spu │ │ │ │ ├── components │ │ │ │ ├── SkuList.vue │ │ │ │ ├── SkuTableSelect.vue │ │ │ │ ├── SpuTableSelect.vue │ │ │ │ └── index.ts │ │ │ │ ├── form │ │ │ │ ├── ActivityOrdersSort.vue │ │ │ │ ├── BasicInfoForm.vue │ │ │ │ ├── DescriptionForm.vue │ │ │ │ ├── OtherSettingsForm.vue │ │ │ │ ├── ProductAttributes.vue │ │ │ │ ├── ProductPropertyAddForm.vue │ │ │ │ ├── index.vue │ │ │ │ └── spu.data.ts │ │ │ │ └── index.vue │ │ ├── promotion │ │ │ ├── article │ │ │ │ ├── ArticleForm.vue │ │ │ │ ├── category │ │ │ │ │ ├── ArticleCategoryForm.vue │ │ │ │ │ └── index.vue │ │ │ │ └── index.vue │ │ │ ├── banner │ │ │ │ ├── BannerForm.vue │ │ │ │ └── index.vue │ │ │ ├── bargain │ │ │ │ ├── activity │ │ │ │ │ ├── BargainActivityForm.vue │ │ │ │ │ ├── bargainActivity.data.ts │ │ │ │ │ └── index.vue │ │ │ │ └── record │ │ │ │ │ ├── BargainRecordListDialog.vue │ │ │ │ │ └── index.vue │ │ │ ├── combination │ │ │ │ ├── activity │ │ │ │ │ ├── CombinationActivityForm.vue │ │ │ │ │ ├── combinationActivity.data.ts │ │ │ │ │ └── index.vue │ │ │ │ └── record │ │ │ │ │ ├── CombinationRecordListDialog.vue │ │ │ │ │ └── index.vue │ │ │ ├── components │ │ │ │ ├── SpuAndSkuList.vue │ │ │ │ ├── SpuSelect.vue │ │ │ │ └── index.ts │ │ │ ├── coupon │ │ │ │ ├── components │ │ │ │ │ ├── CouponSelect.vue │ │ │ │ │ ├── CouponSendForm.vue │ │ │ │ │ └── index.ts │ │ │ │ ├── formatter.ts │ │ │ │ ├── index.vue │ │ │ │ └── template │ │ │ │ │ ├── CouponTemplateForm.vue │ │ │ │ │ └── index.vue │ │ │ ├── discountActivity │ │ │ │ ├── DiscountActivityForm.vue │ │ │ │ ├── discountActivity.data.ts │ │ │ │ └── index.vue │ │ │ └── seckill │ │ │ │ ├── activity │ │ │ │ ├── SeckillActivityForm.vue │ │ │ │ ├── index.vue │ │ │ │ └── seckillActivity.data.ts │ │ │ │ └── config │ │ │ │ ├── SeckillConfigForm.vue │ │ │ │ ├── index.vue │ │ │ │ └── seckillConfig.data.ts │ │ ├── statistics │ │ │ ├── member │ │ │ │ ├── components │ │ │ │ │ ├── MemberFunnelCard.vue │ │ │ │ │ └── MemberTerminalCard.vue │ │ │ │ └── index.vue │ │ │ └── trade │ │ │ │ ├── components │ │ │ │ └── TradeStatisticValue.vue │ │ │ │ └── index.vue │ │ └── trade │ │ │ ├── afterSale │ │ │ ├── detail │ │ │ │ └── index.vue │ │ │ ├── form │ │ │ │ └── AfterSaleDisagreeForm.vue │ │ │ └── index.vue │ │ │ ├── brokerage │ │ │ ├── record │ │ │ │ └── index.vue │ │ │ ├── user │ │ │ │ ├── BrokerageOrderListDialog.vue │ │ │ │ ├── BrokerageUserListDialog.vue │ │ │ │ ├── UpdateBindUserForm.vue │ │ │ │ └── index.vue │ │ │ └── withdraw │ │ │ │ ├── BrokerageWithdrawRejectForm.vue │ │ │ │ └── index.vue │ │ │ ├── config │ │ │ └── index.vue │ │ │ ├── delivery │ │ │ ├── express │ │ │ │ ├── ExpressForm.vue │ │ │ │ └── index.vue │ │ │ ├── expressTemplate │ │ │ │ ├── ExpressTemplateForm.vue │ │ │ │ └── index.vue │ │ │ ├── pickUpOrder │ │ │ │ └── index.vue │ │ │ └── pickUpStore │ │ │ │ ├── PickUpStoreForm.vue │ │ │ │ └── index.vue │ │ │ └── order │ │ │ ├── components │ │ │ ├── OrderTableColumn.vue │ │ │ └── index.ts │ │ │ ├── detail │ │ │ └── index.vue │ │ │ ├── form │ │ │ ├── OrderDeliveryForm.vue │ │ │ ├── OrderPickUpForm.vue │ │ │ ├── OrderUpdateAddressForm.vue │ │ │ ├── OrderUpdatePriceForm.vue │ │ │ └── OrderUpdateRemarkForm.vue │ │ │ └── index.vue │ │ ├── member │ │ ├── config │ │ │ └── index.vue │ │ ├── group │ │ │ ├── GroupForm.vue │ │ │ ├── components │ │ │ │ └── MemberGroupSelect.vue │ │ │ └── index.vue │ │ ├── level │ │ │ ├── LevelForm.vue │ │ │ ├── components │ │ │ │ └── MemberLevelSelect.vue │ │ │ └── index.vue │ │ ├── point │ │ │ └── record │ │ │ │ └── index.vue │ │ ├── signin │ │ │ ├── config │ │ │ │ ├── SignInConfigForm.vue │ │ │ │ └── index.vue │ │ │ └── record │ │ │ │ └── index.vue │ │ ├── tag │ │ │ ├── TagForm.vue │ │ │ ├── components │ │ │ │ └── MemberTagSelect.vue │ │ │ └── index.vue │ │ └── user │ │ │ ├── UserForm.vue │ │ │ ├── UserLevelUpdateForm.vue │ │ │ ├── UserPointUpdateForm.vue │ │ │ ├── components │ │ │ └── balance-list.vue │ │ │ ├── detail │ │ │ ├── UserAccountInfo.vue │ │ │ ├── UserAddressList.vue │ │ │ ├── UserBasicInfo.vue │ │ │ ├── UserBrokerageList.vue │ │ │ ├── UserCouponList.vue │ │ │ ├── UserExperienceRecordList.vue │ │ │ ├── UserOrderList.vue │ │ │ ├── UserPointList.vue │ │ │ ├── UserSignList.vue │ │ │ └── index.vue │ │ │ └── index.vue │ │ ├── mp │ │ ├── account │ │ │ ├── AccountForm.vue │ │ │ └── index.vue │ │ ├── autoReply │ │ │ ├── components │ │ │ │ ├── ReplyForm.vue │ │ │ │ ├── ReplyTable.vue │ │ │ │ └── types.ts │ │ │ └── index.vue │ │ ├── components │ │ │ ├── wx-account-select │ │ │ │ ├── index.ts │ │ │ │ └── main.vue │ │ │ ├── wx-location │ │ │ │ ├── index.ts │ │ │ │ └── main.vue │ │ │ ├── wx-material-select │ │ │ │ ├── index.ts │ │ │ │ ├── main.vue │ │ │ │ └── types.ts │ │ │ ├── wx-msg │ │ │ │ ├── card.scss │ │ │ │ ├── comment.scss │ │ │ │ ├── components │ │ │ │ │ ├── Msg.vue │ │ │ │ │ ├── MsgEvent.vue │ │ │ │ │ └── MsgList.vue │ │ │ │ ├── index.ts │ │ │ │ ├── main.vue │ │ │ │ └── types.ts │ │ │ ├── wx-music │ │ │ │ ├── index.ts │ │ │ │ └── main.vue │ │ │ ├── wx-news │ │ │ │ ├── index.ts │ │ │ │ └── main.vue │ │ │ ├── wx-reply │ │ │ │ ├── components │ │ │ │ │ ├── TabImage.vue │ │ │ │ │ ├── TabMusic.vue │ │ │ │ │ ├── TabNews.vue │ │ │ │ │ ├── TabText.vue │ │ │ │ │ ├── TabVideo.vue │ │ │ │ │ ├── TabVoice.vue │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ └── main.vue │ │ │ ├── wx-video-play │ │ │ │ ├── index.ts │ │ │ │ └── main.vue │ │ │ └── wx-voice-play │ │ │ │ ├── index.ts │ │ │ │ └── main.vue │ │ ├── draft │ │ │ ├── components │ │ │ │ ├── CoverSelect.vue │ │ │ │ ├── DraftTable.vue │ │ │ │ ├── NewsForm.vue │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── editor-config.ts │ │ │ ├── index.vue │ │ │ └── mock.js │ │ ├── freePublish │ │ │ └── index.vue │ │ ├── hooks │ │ │ └── useUpload.ts │ │ ├── material │ │ │ ├── components │ │ │ │ ├── ImageTable.vue │ │ │ │ ├── UploadFile.vue │ │ │ │ ├── UploadVideo.vue │ │ │ │ ├── VideoTable.vue │ │ │ │ ├── VoiceTable.vue │ │ │ │ └── upload.ts │ │ │ └── index.vue │ │ ├── menu │ │ │ ├── assets │ │ │ │ ├── iphone_backImg.png │ │ │ │ ├── menu_foot.png │ │ │ │ └── menu_head.png │ │ │ ├── components │ │ │ │ ├── MenuEditor.vue │ │ │ │ ├── MenuPreviewer.vue │ │ │ │ ├── menuOptions.ts │ │ │ │ └── types.ts │ │ │ └── index.vue │ │ ├── message │ │ │ ├── MessageTable.vue │ │ │ └── index.vue │ │ ├── statistics │ │ │ └── index.vue │ │ ├── tag │ │ │ ├── TagForm.vue │ │ │ └── index.vue │ │ └── user │ │ │ ├── UserForm.vue │ │ │ └── index.vue │ │ ├── pay │ │ ├── app │ │ │ ├── components │ │ │ │ ├── AppForm.vue │ │ │ │ └── channel │ │ │ │ │ ├── AlipayChannelForm.vue │ │ │ │ │ ├── MockChannelForm.vue │ │ │ │ │ └── WeixinChannelForm.vue │ │ │ └── index.vue │ │ ├── cashier │ │ │ └── index.vue │ │ ├── demo │ │ │ └── index.vue │ │ ├── notify │ │ │ ├── NotifyDetail.vue │ │ │ └── index.vue │ │ ├── order │ │ │ ├── OrderDetail.vue │ │ │ └── index.vue │ │ ├── refund │ │ │ ├── RefundDetail.vue │ │ │ └── index.vue │ │ └── wallet │ │ │ ├── balance │ │ │ ├── WalletForm.vue │ │ │ └── index.vue │ │ │ ├── rechargePackage │ │ │ ├── WalletRechargePackageForm.vue │ │ │ └── index.vue │ │ │ └── transaction │ │ │ └── WalletTransactionList.vue │ │ ├── report │ │ ├── goview │ │ │ └── index.vue │ │ └── jmreport │ │ │ └── index.vue │ │ └── system │ │ ├── area │ │ ├── AreaForm.vue │ │ └── index.vue │ │ ├── dept │ │ ├── DeptForm.vue │ │ └── index.vue │ │ ├── dict │ │ ├── DictTypeForm.vue │ │ ├── data │ │ │ ├── DictDataForm.vue │ │ │ └── index.vue │ │ └── index.vue │ │ ├── errorCode │ │ ├── ErrorCodeForm.vue │ │ └── index.vue │ │ ├── loginlog │ │ ├── LoginLogDetail.vue │ │ └── index.vue │ │ ├── mail │ │ ├── account │ │ │ ├── MailAccountDetail.vue │ │ │ ├── MailAccountForm.vue │ │ │ ├── account.data.ts │ │ │ └── index.vue │ │ ├── log │ │ │ ├── MailLogDetail.vue │ │ │ ├── index.vue │ │ │ └── log.data.ts │ │ └── template │ │ │ ├── MailTemplateForm.vue │ │ │ ├── MailTemplateSendForm.vue │ │ │ ├── index.vue │ │ │ └── template.data.ts │ │ ├── menu │ │ ├── MenuForm.vue │ │ └── index.vue │ │ ├── notice │ │ ├── NoticeForm.vue │ │ └── index.vue │ │ ├── notify │ │ ├── message │ │ │ ├── NotifyMessageDetail.vue │ │ │ └── index.vue │ │ ├── my │ │ │ ├── MyNotifyMessageDetail.vue │ │ │ └── index.vue │ │ └── template │ │ │ ├── NotifyTemplateForm.vue │ │ │ ├── NotifyTemplateSendForm.vue │ │ │ └── index.vue │ │ ├── oauth2 │ │ ├── client │ │ │ ├── ClientForm.vue │ │ │ └── index.vue │ │ └── token │ │ │ └── index.vue │ │ ├── operatelog │ │ ├── OperateLogDetail.vue │ │ └── index.vue │ │ ├── post │ │ ├── PostForm.vue │ │ └── index.vue │ │ ├── role │ │ ├── RoleAssignMenuForm.vue │ │ ├── RoleDataPermissionForm.vue │ │ ├── RoleForm.vue │ │ └── index.vue │ │ ├── sensitiveWord │ │ ├── SensitiveWordForm.vue │ │ ├── SensitiveWordTestForm.vue │ │ └── index.vue │ │ ├── sms │ │ ├── channel │ │ │ ├── SmsChannelForm.vue │ │ │ └── index.vue │ │ ├── log │ │ │ ├── SmsLogDetail.vue │ │ │ └── index.vue │ │ └── template │ │ │ ├── SmsTemplateForm.vue │ │ │ ├── SmsTemplateSendForm.vue │ │ │ └── index.vue │ │ ├── tenant │ │ ├── TenantForm.vue │ │ └── index.vue │ │ ├── tenantPackage │ │ ├── TenantPackageForm.vue │ │ └── index.vue │ │ └── user │ │ ├── DeptTree.vue │ │ ├── UserAssignRoleForm.vue │ │ ├── UserForm.vue │ │ ├── UserImportForm.vue │ │ └── index.vue ├── stylelint.config.js ├── tsconfig.json ├── types │ ├── components.d.ts │ ├── custom-types.d.ts │ ├── env.d.ts │ ├── global.d.ts │ └── router.d.ts ├── uno.config.ts └── vite.config.ts ├── http-client.env.json ├── lombok.config ├── pom.xml └── sql ├── db2 └── README.md ├── dm ├── README.md └── ruoyi-vue-pro-dm8.sql ├── mysql ├── mall.sql ├── pay_wallet.sql └── ruoyi-vue-pro.sql ├── oracle └── ruoyi-vue-pro.sql ├── postgresql └── ruoyi-vue-pro.sql └── sqlserver └── ruoyi-vue-pro.sql /.gitattributes: -------------------------------------------------------------------------------- 1 | *.sql linguist-language=java 2 | -------------------------------------------------------------------------------- /.gitee/ISSUE_TEMPLATE.zh-CN.md: -------------------------------------------------------------------------------- 1 | 碰到问题,请在 搜索是否存在相似的 issue。 2 | 3 | 不按照模板提交的 issue,会被系统自动删除。 4 | 5 | ### 基本信息 6 | 7 | - ruoyi-vue-pro 版本: 8 | - 操作系统: 9 | - 数据库: 10 | 11 | ### 你猜测可能的原因 12 | 13 | (必填)我花费了 2-4 小时自查,发现可能的原因是:xxxxxx 14 | 15 | ### 复现步骤 16 | 17 | 第一步, 18 | 19 | 第二步, 20 | 21 | 第三步, 22 | 23 | ### 报错信息 24 | 25 | 带上必要的截图 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 问题反馈 3 | about: 请详细描述,以便更高快的获得到解决 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 碰到问题,请在 搜索是否存在相似的 issue。 11 | 12 | 不按照模板提交的 issue,会被系统自动删除。 13 | 14 | ### 基本信息 15 | 16 | - ruoyi-vue-pro 版本: 17 | - 操作系统: 18 | - 数据库: 19 | 20 | ### 你猜测可能的原因 21 | 22 | (必填)我花费了 2-4 小时自查,发现可能的原因是:xxxxxx 23 | 24 | ### 复现步骤 25 | 26 | 第一步, 27 | 28 | 第二步, 29 | 30 | 第三步, 31 | 32 | ### 报错信息 33 | 34 | 带上必要的截图 35 | -------------------------------------------------------------------------------- /htron-framework/htron-common/src/main/java/top/howie/htron/framework/common/core/IntArrayValuable.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.common.core; 2 | 3 | /** 4 | * 可生成 Int 数组的接口 5 | * 6 | * @author Howietron 7 | */ 8 | public interface IntArrayValuable { 9 | 10 | /** 11 | * @return int 数组 12 | */ 13 | int[] array(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /htron-framework/htron-common/src/main/java/top/howie/htron/framework/common/core/KeyValue.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.common.core; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * Key Value 的键值对 11 | * 12 | * @author Howietron 13 | */ 14 | @Data 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class KeyValue implements Serializable { 18 | 19 | private K key; 20 | private V value; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /htron-framework/htron-common/src/main/java/top/howie/htron/framework/common/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基础的通用类,和框架无关 3 | * 4 | * 例如说,CommonResult 为通用返回 5 | */ 6 | package top.howie.htron.framework.common; 7 | -------------------------------------------------------------------------------- /htron-framework/htron-common/src/main/java/top/howie/htron/framework/common/util/collection/SetUtils.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.common.util.collection; 2 | 3 | import cn.hutool.core.collection.CollUtil; 4 | 5 | import java.util.Set; 6 | 7 | /** 8 | * Set 工具类 9 | * 10 | * @author Howietron 11 | */ 12 | public class SetUtils { 13 | 14 | @SafeVarargs 15 | public static Set asSet(T... objs) { 16 | return CollUtil.newHashSet(objs); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /htron-framework/htron-common/src/main/java/top/howie/htron/framework/common/util/object/PageUtils.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.common.util.object; 2 | 3 | import top.howie.htron.framework.common.pojo.PageParam; 4 | 5 | /** 6 | * {@link top.howie.htron.framework.common.pojo.PageParam} 工具类 7 | * 8 | * @author Howietron 9 | */ 10 | public class PageUtils { 11 | 12 | public static int getStart(PageParam pageParam) { 13 | return (pageParam.getPageNo() - 1) * pageParam.getPageSize(); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /htron-framework/htron-common/src/main/java/top/howie/htron/framework/common/util/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 对于工具类的选择,优先查找 Hutool 中有没对应的方法 3 | * 如果没有,则自己封装对应的工具类,以 Utils 结尾,用于区分 4 | * 5 | * ps:如果担心 Hutool 存在坑的问题,可以阅读 Hutool 的实现源码,以确保可靠性。并且,可以补充相关的单元测试。 6 | */ 7 | package top.howie.htron.framework.common.util; 8 | -------------------------------------------------------------------------------- /htron-framework/htron-common/src/main/java/top/howie/htron/framework/common/validation/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 使用 Hibernate Validator 实现参数校验 3 | */ 4 | package top.howie.htron.framework.common.validation; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-common/《芋道 Spring Boot 参数校验 Validation 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-banner/src/main/java/top/howie/htron/framework/banner/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Banner 用于在 console 控制台,打印开发文档、接口文档等 3 | * 4 | * @author Howietron 5 | */ 6 | package top.howie.htron.framework.banner; 7 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-banner/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.banner.config.HtronBannerAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-data-permission/src/main/java/top/howie/htron/framework/datapermission/core/rule/dept/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基于部门的数据权限规则 3 | * 4 | * @author Howietron 5 | */ 6 | package top.howie.htron.framework.datapermission.core.rule.dept; 7 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-data-permission/src/main/java/top/howie/htron/framework/datapermission/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基于 JSqlParser 解析 SQL,增加数据权限的 WHERE 条件 3 | */ 4 | package top.howie.htron.framework.datapermission; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-data-permission/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.datapermission.config.HtronDataPermissionAutoConfiguration 2 | top.howie.htron.framework.datapermission.config.HtronDeptDataPermissionAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-dict/src/main/java/top/howie/htron/framework/dict/core/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package top.howie.htron.framework.dict.core; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-dict/src/main/java/top/howie/htron/framework/dict/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 字典数据模块,提供 {@link top.howie.htron.framework.dict.core.util.DictFrameworkUtils} 工具类 3 | * 4 | * 通过将字典缓存在内存中,保证性能 5 | */ 6 | package top.howie.htron.framework.dict; 7 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-dict/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.dict.config.HtronDictAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-error-code/src/main/java/top/howie/htron/framework/errorcode/core/generator/ErrorCodeAutoGenerator.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.errorcode.core.generator; 2 | 3 | /** 4 | * 错误码的自动生成器 5 | * 6 | * @author dylan 7 | */ 8 | public interface ErrorCodeAutoGenerator { 9 | 10 | /** 11 | * 将配置类到错误码写入数据库 12 | */ 13 | void execute(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-error-code/src/main/java/top/howie/htron/framework/errorcode/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 错误码 ErrorCode 的自动配置功能,提供如下功能: 3 | * 4 | * 1. 远程读取:项目启动时,从 system-service 服务,读取数据库中的 ErrorCode 错误码,实现错误码的提水可配置; 5 | * 2. 自动更新:管理员在管理后台修数据库中的 ErrorCode 错误码时,项目自动从 system-service 服务加载最新的 ErrorCode 错误码; 6 | * 3. 自动写入:项目启动时,将项目本地的错误码写到 system-server 服务中,方便管理员在管理后台编辑; 7 | * 8 | * @author Howietron 9 | */ 10 | package top.howie.htron.framework.errorcode; 11 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-error-code/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.errorcode.config.HtronErrorCodeAutoConfiguration 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-ip/src/main/java/top/howie/htron/framework/ip/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * IP 拓展,支持如下功能: 3 | * 4 | * 1. IP 功能:查询 IP 对应的城市信息 5 | * 基于 https://gitee.com/lionsoul/ip2region 实现 6 | * 2. 城市功能:查询城市编码对应的城市信息 7 | * 基于 https://github.com/modood/Administrative-divisions-of-China 实现 8 | * 9 | * @author Howietron 10 | */ 11 | package top.howie.htron.framework.ip; 12 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-operatelog/src/main/java/top/howie/htron/framework/operatelog/core/package-info.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.operatelog.core; 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-operatelog/src/main/java/top/howie/htron/framework/operatelog/core/service/OperateLogFrameworkService.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.operatelog.core.service; 2 | 3 | /** 4 | * 操作日志 Framework Service 接口 5 | * 6 | * @author Howietron 7 | */ 8 | public interface OperateLogFrameworkService { 9 | 10 | /** 11 | * 记录操作日志 12 | * 13 | * @param operateLog 操作日志请求 14 | */ 15 | void createOperateLog(OperateLog operateLog); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-operatelog/src/main/java/top/howie/htron/framework/operatelog/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 用户操作日志:记录用户的操作,用于对用户的操作的审计与追溯,永久保存。 3 | * 4 | * @author Howietron 5 | */ 6 | package top.howie.htron.framework.operatelog; 7 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-operatelog/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.operatelog.config.HtronOperateLogAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-pay/src/main/java/top/howie/htron/framework/pay/core/client/exception/PayException.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.pay.core.client.exception; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | /** 7 | * 支付系统异常 Exception 8 | */ 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | public class PayException extends RuntimeException { 12 | 13 | public PayException(Throwable cause) { 14 | super(cause); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-pay/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.pay.config.HtronPayAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-sms/src/main/java/top/howie/htron/framework/sms/core/client/dto/SmsSendRespDTO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.sms.core.client.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 短信发送 Response DTO 7 | * 8 | * @author Howietron 9 | */ 10 | @Data 11 | public class SmsSendRespDTO { 12 | 13 | /** 14 | * 短信 API 发送返回的序号 15 | */ 16 | private String serialNo; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-sms/src/main/java/top/howie/htron/framework/sms/core/enums/SmsTemplateAuditStatusEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.sms.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 短信模板的审核状态枚举 8 | * 9 | * @author Howietron 10 | */ 11 | @AllArgsConstructor 12 | @Getter 13 | public enum SmsTemplateAuditStatusEnum { 14 | 15 | CHECKING(1), 16 | SUCCESS(2), 17 | FAIL(3); 18 | 19 | private final Integer status; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-sms/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.sms.config.HtronSmsAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-social/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.social.config.HtronSocialAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-tenant/src/main/java/top/howie/htron/framework/tenant/core/db/TenantBaseDO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.tenant.core.db; 2 | 3 | import top.howie.htron.framework.mybatis.core.dataobject.BaseDO; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | /** 8 | * 拓展多租户的 BaseDO 基类 9 | * 10 | * @author Howietron 11 | */ 12 | @Data 13 | @EqualsAndHashCode(callSuper = true) 14 | public abstract class TenantBaseDO extends BaseDO { 15 | 16 | /** 17 | * 多租户编号 18 | */ 19 | private Long tenantId; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-tenant/src/main/java/top/howie/htron/framework/tenant/core/job/TenantJob.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.tenant.core.job; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * 多租户 Job 注解 10 | */ 11 | @Target({ElementType.METHOD}) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | public @interface TenantJob { 14 | } 15 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-tenant/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.env.EnvironmentPostProcessor=\ 2 | top.howie.htron.framework.tenant.core.mq.kafka.TenantKafkaEnvironmentPostProcessor 3 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-tenant/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.tenant.config.HtronTenantAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-biz-weixin/src/main/java/top/howie/htron/framework/weixin/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 微信拓展 3 | * 1. 基于 weixin-java-mp 库,对接微信公众号平台。目前主要解决微信公众号的支付场景。 4 | * 2. 基于 weixin-java-miniapp 库,对接微信小程序。目前主要解决微信小程序的一键登录场景。 5 | */ 6 | package top.howie.htron.framework.weixin; 7 | 8 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/java/top/howie/htron/framework/captcha/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 验证码拓展 3 | * 1. 基于 aj-captcha 实现滑块验证码,文档:https://ajcaptcha.beliefteam.cn/captcha-doc/ 4 | * 5 | * @author 星语 6 | */ 7 | package top.howie.htron.framework.captcha; 8 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/META-INF/services/com.xingyuv.captcha.service.CaptchaCacheService: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.captcha.core.service.RedisCaptchaServiceImpl 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.captcha.config.HtronCaptchaConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg1.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg2.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg3.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg4.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg5.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg6.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg7.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg8.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/original/bg9.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/1.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/10.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/11.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/12.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/13.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/14.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/15.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/16.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/17.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/18.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/19.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/8.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/11/9.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/2.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/3.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/jigsaw/slidingBlock/4.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg1.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg10.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg2.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg3.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg4.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg5.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg6.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg7.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg8.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-captcha/src/main/resources/images/pic-click/bg9.png -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-desensitize/src/main/java/top/howie/htron/framework/desensitize/core/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 脱敏组件:支持 JSON 返回数据时,将邮箱、手机等字段进行脱敏 3 | */ 4 | package top.howie.htron.framework.desensitize.core; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-excel/src/main/java/top/howie/htron/framework/excel/core/annotations/DictFormat.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.excel.core.annotations; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 字典格式化 7 | * 8 | * 实现将字典数据的值,格式化成字典数据的标签 9 | */ 10 | @Target({ElementType.FIELD}) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Inherited 13 | public @interface DictFormat { 14 | 15 | /** 16 | * 例如说,SysDictTypeConstants、InfDictTypeConstants 17 | * 18 | * @return 字典类型 19 | */ 20 | String value(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-excel/src/main/java/top/howie/htron/framework/excel/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基于 EasyExcel 实现 Excel 相关的操作 3 | */ 4 | package top.howie.htron.framework.excel; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-file/src/main/java/top/howie/htron/framework/file/core/client/FileClientConfig.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.file.core.client; 2 | 3 | import com.fasterxml.jackson.annotation.JsonTypeInfo; 4 | 5 | /** 6 | * 文件客户端的配置 7 | * 不同实现的客户端,需要不同的配置,通过子类来定义 8 | * 9 | * @author Howietron 10 | */ 11 | @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) 12 | // @JsonTypeInfo 注解的作用,Jackson 多态 13 | // 1. 序列化到时数据库时,增加 @class 属性。 14 | // 2. 反序列化到内存对象时,通过 @class 属性,可以创建出正确的类型 15 | public interface FileClientConfig { 16 | } 17 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-file/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.file.config.HtronFileAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-file/src/test/java/top/howie/htron/framework/file/config/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位,避免 package 无法提交到 Git 仓库 3 | */ 4 | package top.howie.htron.framework.file.config; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-file/src/test/java/top/howie/htron/framework/file/core/enums/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位,避免 package 无法提交到 Git 仓库 3 | */ 4 | package top.howie.htron.framework.file.core.enums; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-file/src/test/resources/file/erweima.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-framework/htron-spring-boot-starter-file/src/test/resources/file/erweima.jpg -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-flowable/src/main/java/top/howie/htron/framework/flowable/core/package-info.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.flowable.core; 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-flowable/src/main/java/top/howie/htron/framework/flowable/package-info.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.flowable; 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-flowable/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.flowable.config.HtronFlowableConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-job/src/main/java/top/howie/htron/framework/quartz/core/enums/JobDataKeyEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.quartz.core.enums; 2 | 3 | /** 4 | * Quartz Job Data 的 key 枚举 5 | */ 6 | public enum JobDataKeyEnum { 7 | 8 | JOB_ID, 9 | JOB_HANDLER_NAME, 10 | JOB_HANDLER_PARAM, 11 | JOB_RETRY_COUNT, // 最大重试次数 12 | JOB_RETRY_INTERVAL, // 每次重试间隔 13 | 14 | } 15 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-job/src/main/java/top/howie/htron/framework/quartz/core/handler/JobHandler.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.quartz.core.handler; 2 | 3 | /** 4 | * 任务处理器 5 | * 6 | * @author Howietron 7 | */ 8 | public interface JobHandler { 9 | 10 | /** 11 | * 执行任务 12 | * 13 | * @param param 参数 14 | * @return 结果 15 | * @throws Exception 异常 16 | */ 17 | String execute(String param) throws Exception; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-job/src/main/java/top/howie/htron/framework/quartz/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 1. 定时任务,采用 Quartz 实现进程内的任务执行。 3 | * 考虑到高可用,使用 Quartz 自带的 MySQL 集群方案。 4 | * 5 | * 2. 异步任务,采用 Spring Async 异步执行。 6 | */ 7 | package top.howie.htron.framework.quartz; 8 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-job/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.quartz.config.HtronQuartzAutoConfiguration 2 | top.howie.htron.framework.quartz.config.HtronAsyncAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-job/《芋道 Spring Boot 定时任务入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-job/《芋道 Spring Boot 异步任务入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-monitor/src/main/java/top/howie/htron/framework/tracer/config/TracerProperties.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.tracer.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | 6 | /** 7 | * BizTracer配置类 8 | * 9 | * @author 麻薯 10 | */ 11 | @ConfigurationProperties("htron.tracer") 12 | @Data 13 | public class TracerProperties { 14 | } 15 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-monitor/src/main/java/top/howie/htron/framework/tracer/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 使用 SkyWalking 组件,作为链路追踪、日志中心。 3 | * 4 | * @author Howietron 5 | */ 6 | package top.howie.htron.framework.tracer; 7 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-monitor/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.tracer.config.HtronTracerAutoConfiguration 2 | top.howie.htron.framework.tracer.config.HtronMetricsAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-monitor/《芋道 Spring Boot 监控工具 Admin 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-monitor/《芋道 Spring Boot 监控端点 Actuator 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-monitor/《芋道 Spring Boot 链路追踪 SkyWalking 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mq/src/main/java/top/howie/htron/framework/mq/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列,支持 Redis、RocketMQ、RabbitMQ、Kafka 四种 3 | */ 4 | package top.howie.htron.framework.mq; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mq/src/main/java/top/howie/htron/framework/mq/rabbitmq/core/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位符,无特殊逻辑 3 | */ 4 | package top.howie.htron.framework.mq.rabbitmq.core; -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mq/src/main/java/top/howie/htron/framework/mq/rabbitmq/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列,基于 RabbitMQ 提供 3 | */ 4 | package top.howie.htron.framework.mq.rabbitmq; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mq/src/main/java/top/howie/htron/framework/mq/redis/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列,基于 Redis 提供: 3 | * 1. 基于 Pub/Sub 实现广播消费 4 | * 2. 基于 Stream 实现集群消费 5 | */ 6 | package top.howie.htron.framework.mq.redis; 7 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mq/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.mq.redis.config.HtronRedisMQAutoConfiguration 2 | top.howie.htron.framework.mq.rabbitmq.config.HtronRabbitMQAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mq/《芋道 Spring Boot 事件机制 Event 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mq/《芋道 Spring Boot 消息队列 Kafka 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mq/《芋道 Spring Boot 消息队列 RabbitMQ 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mq/《芋道 Spring Boot 消息队列 RocketMQ 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mybatis/src/main/java/top/howie/htron/framework/datasource/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 数据库连接池,采用 Druid 3 | * 多数据源,采用爆米花 4 | */ 5 | package top.howie.htron.framework.datasource; 6 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mybatis/src/main/java/top/howie/htron/framework/mybatis/core/enums/SqlConstants.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.mybatis.core.enums; 2 | 3 | import com.baomidou.mybatisplus.annotation.DbType; 4 | 5 | /** 6 | * SQL相关常量类 7 | * 8 | * @author Howietron 9 | */ 10 | public class SqlConstants { 11 | 12 | /** 13 | * 数据库的类型 14 | */ 15 | public static DbType DB_TYPE; 16 | 17 | public static void init(DbType dbType) { 18 | DB_TYPE = dbType; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mybatis/src/main/java/top/howie/htron/framework/mybatis/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 使用 MyBatis Plus 提升使用 MyBatis 的开发效率 3 | */ 4 | package top.howie.htron.framework.mybatis; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mybatis/src/main/java/top/howie/htron/framework/package-info.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework; 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mybatis/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.env.EnvironmentPostProcessor=\ 2 | top.howie.htron.framework.mybatis.config.IdTypeEnvironmentPostProcessor 3 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mybatis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.datasource.config.HtronDataSourceAutoConfiguration 2 | top.howie.htron.framework.mybatis.config.HtronMybatisAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mybatis/《芋道 Spring Boot MyBatis 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mybatis/《芋道 Spring Boot 多数据源(读写分离)入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-mybatis/《芋道 Spring Boot 数据库连接池入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-protection/src/main/java/top/howie/htron/framework/lock4j/core/Lock4jRedisKeyConstants.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.lock4j.core; 2 | 3 | /** 4 | * Lock4j Redis Key 枚举类 5 | * 6 | * @author Howietron 7 | */ 8 | public interface Lock4jRedisKeyConstants { 9 | 10 | /** 11 | * 分布式锁 12 | * 13 | * KEY 格式:lock4j:%s // 参数来自 DefaultLockKeyBuilder 类 14 | * VALUE 数据格式:HASH // RLock.class:Redisson 的 Lock 锁,使用 Hash 数据结构 15 | * 过期时间:不固定 16 | */ 17 | String LOCK4J = "lock4j:%s"; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-protection/src/main/java/top/howie/htron/framework/lock4j/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 分布式锁组件,使用 https://gitee.com/baomidou/lock4j 开源项目 3 | */ 4 | package top.howie.htron.framework.lock4j; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-protection/src/main/java/top/howie/htron/framework/resilience4j/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 使用 Resilience4j 组件,实现服务保障,包括: 3 | * 1. 熔断器 4 | * 2. 限流器 5 | * 3. 舱壁隔离 6 | * 4. 重试 7 | * 5. 限时器 8 | */ 9 | package top.howie.htron.framework.resilience4j; 10 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-protection/src/main/java/top/howie/htron/framework/resilience4j/《芋道 Spring Boot 服务容错 Resilience4j 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-protection/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.idempotent.config.HtronIdempotentConfiguration 2 | top.howie.htron.framework.lock4j.config.HtronLock4jConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-redis/src/main/java/top/howie/htron/framework/redis/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 采用 Spring Data Redis 操作 Redis,底层使用 Redisson 作为客户端 3 | */ 4 | package top.howie.htron.framework.redis; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.redis.config.HtronRedisAutoConfiguration 2 | top.howie.htron.framework.redis.config.HtronCacheAutoConfiguration -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-redis/《芋道 Spring Boot Cache 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-redis/《芋道 Spring Boot Redis 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-security/src/main/java/top/howie/htron/framework/security/core/annotations/PreAuthenticated.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.security.core.annotations; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 声明用户需要登录 7 | * 8 | * 为什么不使用 {@link org.springframework.security.access.prepost.PreAuthorize} 注解,原因是不通过时,抛出的是认证不通过,而不是未登录 9 | * 10 | * @author Howietron 11 | */ 12 | @Target({ElementType.METHOD}) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Inherited 15 | @Documented 16 | public @interface PreAuthenticated { 17 | } 18 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-security/src/main/java/top/howie/htron/framework/security/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基于 Spring Security 框架 3 | * 实现安全认证功能 4 | * 5 | * @author Howietron 6 | */ 7 | package top.howie.htron.framework.security; 8 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.security.config.HtronSecurityAutoConfiguration 2 | top.howie.htron.framework.security.config.HtronWebSecurityConfigurerAdapter -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-security/《芋道 Spring Boot 安全框架 Spring Security 入门》.md: -------------------------------------------------------------------------------- 1 | * htron Spring Security 入门: 2 | * Spring Security 基本概念: 3 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-test/src/main/java/top/howie/htron/framework/test/core/ut/BaseMockitoUnitTest.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.test.core.ut; 2 | 3 | import org.junit.jupiter.api.extension.ExtendWith; 4 | import org.mockito.junit.jupiter.MockitoExtension; 5 | 6 | /** 7 | * 纯 Mockito 的单元测试 8 | * 9 | * @author Howietron 10 | */ 11 | @ExtendWith(MockitoExtension.class) 12 | public class BaseMockitoUnitTest { 13 | } 14 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-test/src/main/java/top/howie/htron/framework/test/core/ut/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供单元测试 Unit Test 的基类 3 | */ 4 | package top.howie.htron.framework.test.core.ut; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-test/src/main/java/top/howie/htron/framework/test/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 测试组件,用于单元测试、集成测试等等 3 | */ 4 | package top.howie.htron.framework.test; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-test/《芋道 Spring Boot 单元测试 Test 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/src/main/java/top/howie/htron/framework/apilog/core/service/ApiAccessLogFrameworkService.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.apilog.core.service; 2 | 3 | /** 4 | * API 访问日志 Framework Service 接口 5 | * 6 | * @author Howietron 7 | */ 8 | public interface ApiAccessLogFrameworkService { 9 | 10 | /** 11 | * 创建 API 访问日志 12 | * 13 | * @param apiAccessLog API 访问日志 14 | */ 15 | void createApiAccessLog(ApiAccessLog apiAccessLog); 16 | } 17 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/src/main/java/top/howie/htron/framework/apilog/core/service/ApiErrorLogFrameworkService.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.apilog.core.service; 2 | 3 | /** 4 | * API 错误日志 Framework Service 接口 5 | * 6 | * @author Howietron 7 | */ 8 | public interface ApiErrorLogFrameworkService { 9 | 10 | /** 11 | * 创建 API 错误日志 12 | * 13 | * @param apiErrorLog API 错误日志 14 | */ 15 | void createApiErrorLog(ApiErrorLog apiErrorLog); 16 | } 17 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/src/main/java/top/howie/htron/framework/apilog/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * API 日志:包含两类 3 | * 1. API 访问日志:记录用户访问 API 的访问日志,定期归档历史日志。 4 | * 2. 异常日志:记录用户访问 API 的系统异常,方便日常排查问题与告警。 5 | * 6 | * @author Howietron 7 | */ 8 | package top.howie.htron.framework.apilog; 9 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/src/main/java/top/howie/htron/framework/jackson/core/package-info.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.jackson.core; 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/src/main/java/top/howie/htron/framework/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Web 框架,全局异常、API 日志等 3 | */ 4 | package top.howie.htron.framework; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/src/main/java/top/howie/htron/framework/swagger/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 基于 Swagger + Knife4j 实现 API 接口文档 3 | * 4 | * @author Howietron 5 | */ 6 | package top.howie.htron.framework.swagger; 7 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/src/main/java/top/howie/htron/framework/web/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 针对 SpringMVC 的基础封装 3 | */ 4 | package top.howie.htron.framework.web; 5 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/src/main/java/top/howie/htron/framework/xss/core/clean/XssCleaner.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.xss.core.clean; 2 | 3 | /** 4 | * 对 html 文本中的有 Xss 风险的数据进行清理 5 | */ 6 | public interface XssCleaner { 7 | 8 | /** 9 | * 清理有 Xss 风险的文本 10 | * 11 | * @param html 原 html 12 | * @return 清理后的 html 13 | */ 14 | String clean(String html); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/src/main/java/top/howie/htron/framework/xss/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 针对 XSS 的基础封装 3 | * 4 | * XSS 说明:https://tech.meituan.com/2018/09/27/fe-security.html 5 | */ 6 | package top.howie.htron.framework.xss; 7 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.apilog.config.HtronApiLogAutoConfiguration 2 | top.howie.htron.framework.jackson.config.HtronJacksonAutoConfiguration 3 | top.howie.htron.framework.swagger.config.HtronSwaggerAutoConfiguration 4 | top.howie.htron.framework.web.config.HtronWebAutoConfiguration 5 | top.howie.htron.framework.xss.config.HtronXssAutoConfiguration 6 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/《芋道 Spring Boot API 接口文档 Swagger 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-web/《芋道 Spring Boot SpringMVC 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-websocket/src/main/java/top/howie/htron/framework/websocket/core/WebSocketKeyDefine.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.websocket.core; 2 | 3 | 4 | import lombok.Data; 5 | 6 | @Data 7 | public class WebSocketKeyDefine { 8 | public static final String LOGIN_USER ="LOGIN_USER"; 9 | } 10 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-websocket/src/main/java/top/howie/htron/framework/websocket/package-info.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.framework.websocket; 2 | -------------------------------------------------------------------------------- /htron-framework/htron-spring-boot-starter-websocket/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | top.howie.htron.framework.websocket.config.HtronWebSocketAutoConfiguration -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-api/src/main/java/top/howie/htron/module/infra/api/logger/ApiErrorLogApi.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.infra.api.logger; 2 | 3 | import top.howie.htron.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO; 4 | 5 | import javax.validation.Valid; 6 | 7 | /** 8 | * API 错误日志的 API 接口 9 | * 10 | * @author Howietron 11 | */ 12 | public interface ApiErrorLogApi { 13 | 14 | /** 15 | * 创建 API 错误日志 16 | * 17 | * @param createDTO 创建信息 18 | */ 19 | void createApiErrorLog(@Valid ApiErrorLogCreateReqDTO createDTO); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-api/src/main/java/top/howie/htron/module/infra/api/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * infra API 包,定义暴露给其它模块的 API 3 | */ 4 | package top.howie.htron.module.infra.api; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/api/package-info.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.infra.api; 2 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/controller/admin/redis/RedisController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /infra/redis/get-monitor-info 接口 => 成功 2 | GET {{baseUrl}}/infra/redis/get-monitor-info 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/controller/admin/test/vo/TestDemoCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.infra.controller.admin.test.vo; 2 | import io.swagger.v3.oas.annotations.media.Schema; 3 | import lombok.*; 4 | 5 | @Schema(description = "管理后台 - 字典类型创建 Request VO") 6 | @Data 7 | @EqualsAndHashCode(callSuper = true) 8 | @ToString(callSuper = true) 9 | public class TestDemoCreateReqVO extends TestDemoBaseVO { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/controller/app/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package top.howie.htron.module.infra.controller.app; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 RESTful API 给前端: 3 | * 1. admin 包:提供给管理后台 htron-ui-admin 前端项目 4 | * 2. app 包:提供给用户 APP htron-ui-app 前端项目,它的 Controller 和 VO 都要添加 App 前缀,用于和管理后台进行区分 5 | */ 6 | package top.howie.htron.module.infra.controller; 7 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/convert/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 POJO 类的实体转换 3 | * 4 | * 目前使用 MapStruct 框架 5 | */ 6 | package top.howie.htron.module.infra.convert; 7 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/dal/mysql/db/DataSourceConfigMapper.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.infra.dal.mysql.db; 2 | 3 | import top.howie.htron.framework.mybatis.core.mapper.BaseMapperX; 4 | import top.howie.htron.module.infra.dal.dataobject.db.DataSourceConfigDO; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 数据源配置 Mapper 9 | * 10 | * @author Howietron 11 | */ 12 | @Mapper 13 | public interface DataSourceConfigMapper extends BaseMapperX { 14 | } 15 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/dal/mysql/file/FileContentMapper.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.infra.dal.mysql.file; 2 | 3 | import top.howie.htron.module.infra.dal.dataobject.file.FileContentDO; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface FileContentMapper extends BaseMapper { 9 | } 10 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/enums/codegen/CodegenTemplateTypeEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.infra.enums.codegen; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 代码生成模板类型 8 | * 9 | * @author Howietron 10 | */ 11 | @AllArgsConstructor 12 | @Getter 13 | public enum CodegenTemplateTypeEnum { 14 | 15 | CRUD(1), // 单表(增删改查) 16 | TREE(2), // 树表(增删改查) 17 | ; 18 | 19 | /** 20 | * 类型 21 | */ 22 | private final Integer type; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/enums/config/ConfigTypeEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.infra.enums.config; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | @Getter 7 | @AllArgsConstructor 8 | public enum ConfigTypeEnum { 9 | 10 | /** 11 | * 系统配置 12 | */ 13 | SYSTEM(1), 14 | /** 15 | * 自定义配置 16 | */ 17 | CUSTOM(2); 18 | 19 | private final Integer type; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/enums/job/JobLogStatusEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.infra.enums.job; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 任务日志的状态枚举 8 | * 9 | * @author Howietron 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum JobLogStatusEnum { 14 | 15 | RUNNING(0), // 运行中 16 | SUCCESS(1), // 成功 17 | FAILURE(2); // 失败 18 | 19 | /** 20 | * 状态 21 | */ 22 | private final Integer status; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/enums/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package top.howie.htron.module.infra.enums; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/framework/codegen/config/CodegenConfiguration.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.infra.framework.codegen.config; 2 | 3 | import org.springframework.boot.context.properties.EnableConfigurationProperties; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration(proxyBeanMethods = false) 7 | @EnableConfigurationProperties(CodegenProperties.class) 8 | public class CodegenConfiguration { 9 | } 10 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/framework/codegen/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 代码生成器 3 | */ 4 | package top.howie.htron.module.infra.framework.codegen; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/framework/monitor/config/AdminServerConfiguration.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.infra.framework.monitor.config; 2 | 3 | import de.codecentric.boot.admin.server.config.EnableAdminServer; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration(proxyBeanMethods = false) 7 | @EnableAdminServer 8 | public class AdminServerConfiguration { 9 | } 10 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/framework/monitor/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 使用 Spring Boot Admin 实现简单的监控平台 3 | */ 4 | package top.howie.htron.module.infra.framework.monitor; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/framework/monitor/《芋道 Spring Boot 监控工具 Admin 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/framework/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 属于 infra 模块的 framework 封装 3 | * 4 | * @author Howietron 5 | */ 6 | package top.howie.htron.module.infra.framework; 7 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/framework/security/core/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package top.howie.htron.module.infra.framework.security.core; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/framework/web/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * infra 模块的 web 配置 3 | */ 4 | package top.howie.htron.module.infra.framework.web; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/mq/consumer/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列的消费者 3 | */ 4 | package top.howie.htron.module.infra.mq.consumer; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/mq/message/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列的消息 3 | */ 4 | package top.howie.htron.module.infra.mq.message; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/mq/producer/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列的生产者 3 | */ 4 | package top.howie.htron.module.infra.mq.producer; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/java/top/howie/htron/module/infra/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * infra 模块,主要提供两块能力: 3 | * 1. 我们放基础设施的运维与管理,支撑上层的通用与核心业务。 例如说:定时任务的管理、服务器的信息等等 4 | * 2. 研发工具,提升研发效率与质量。 例如说:代码生成器、接口文档等等 5 | * 6 | * 1. Controller URL:以 /infra/ 开头,避免和其它 Module 冲突 7 | * 2. DataObject 表名:以 infra_ 开头,方便在数据库中区分 8 | */ 9 | package top.howie.htron.module.infra; 10 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/resources/codegen/java/enums/errorcode.vm: -------------------------------------------------------------------------------- 1 | // TODO 待办:请将下面的错误码复制到 htron-module-${table.moduleName}-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! 2 | // ========== ${table.classComment} TODO 补充编号 ========== 3 | ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS = new ErrorCode(TODO 补充编号, "${table.classComment}不存在"); 4 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/resources/file/erweima.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-module-infra/htron-module-infra-biz/src/main/resources/file/erweima.jpg -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/main/resources/mapper/null/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-module-infra/htron-module-infra-biz/src/main/resources/mapper/null/.gitkeep -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/test-integration/java/top/howie/htron/module/infra/dal/mysql/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package top.howie.htron.module.infra.dal.mysql; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/test-integration/java/top/howie/htron/module/infra/dal/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package top.howie.htron.module.infra.dal; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/test-integration/java/top/howie/htron/module/infra/service/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package top.howie.htron.module.infra.service; 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /htron-module-infra/htron-module-infra-biz/src/test/resources/sql/clean.sql: -------------------------------------------------------------------------------- 1 | DELETE FROM "infra_config"; 2 | DELETE FROM "infra_file_config"; 3 | DELETE FROM "infra_file"; 4 | DELETE FROM "infra_job"; 5 | DELETE FROM "infra_job_log"; 6 | DELETE FROM "infra_api_access_log"; 7 | DELETE FROM "infra_api_error_log"; 8 | DELETE FROM "infra_file_config"; 9 | DELETE FROM "infra_test_demo"; 10 | DELETE FROM "infra_data_source_config"; 11 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-api/src/main/java/top/howie/htron/module/member/api/config/MemberConfigApi.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.api.config; 2 | 3 | import top.howie.htron.module.member.api.config.dto.MemberConfigRespDTO; 4 | 5 | /** 6 | * 用户配置 API 接口 7 | * 8 | * @author owen 9 | */ 10 | public interface MemberConfigApi { 11 | 12 | /** 13 | * 获得积分配置 14 | * 15 | * @return 积分配置 16 | */ 17 | MemberConfigRespDTO getConfig(); 18 | } 19 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-api/src/main/java/top/howie/htron/module/member/api/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * member API 包,定义暴露给其它模块的 API 3 | */ 4 | package top.howie.htron.module.member.api; 5 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-api/src/main/java/top/howie/htron/module/member/enums/DictTypeConstants.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.enums; 2 | 3 | /** 4 | * Member 字典类型的枚举类 5 | * 6 | * @author owen 7 | */ 8 | public interface DictTypeConstants { 9 | 10 | /** 11 | * 会员经验记录 - 业务类型 12 | */ 13 | String MEMBER_EXPERIENCE_BIZ_TYPE = "member_experience_biz_type"; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-api/src/main/java/top/howie/htron/module/member/message/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列的消息 3 | */ 4 | package top.howie.htron.module.member.message; 5 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-api/src/main/java/top/howie/htron/module/member/message/user/MemberUserCreateMessage.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.message.user; 2 | 3 | import lombok.Data; 4 | 5 | import javax.validation.constraints.NotNull; 6 | 7 | /** 8 | * 会员用户创建消息 9 | * 10 | * @author owen 11 | */ 12 | @Data 13 | public class MemberUserCreateMessage { 14 | 15 | /** 16 | * 用户编号 17 | */ 18 | @NotNull(message = "用户编号不能为空") 19 | private Long userId; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/api/package-info.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.api; 2 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/controller/admin/address/package-info.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.controller.admin.address; 2 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/controller/admin/config/vo/MemberConfigSaveReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.controller.admin.config.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.ToString; 7 | 8 | @Schema(description = "管理后台 - 会员配置保存 Request VO") 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | @ToString(callSuper = true) 12 | public class MemberConfigSaveReqVO extends MemberConfigBaseVO { 13 | } 14 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/controller/admin/group/vo/MemberGroupCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.controller.admin.group.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.ToString; 7 | 8 | @Schema(description = "管理后台 - 用户分组创建 Request VO") 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | @ToString(callSuper = true) 12 | public class MemberGroupCreateReqVO extends MemberGroupBaseVO { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/controller/admin/level/vo/level/MemberLevelCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.controller.admin.level.vo.level; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.ToString; 7 | 8 | @Schema(description = "管理后台 - 会员等级创建 Request VO") 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | @ToString(callSuper = true) 12 | public class MemberLevelCreateReqVO extends MemberLevelBaseVO { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/controller/admin/signin/vo/config/MemberSignInConfigCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.controller.admin.signin.vo.config; 2 | 3 | import lombok.*; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | 6 | @Schema(description = "管理后台 - 签到规则创建 Request VO") 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | @ToString(callSuper = true) 10 | public class MemberSignInConfigCreateReqVO extends MemberSignInConfigBaseVO { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/controller/admin/tag/vo/MemberTagCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.controller.admin.tag.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.ToString; 7 | 8 | @Schema(description = "管理后台 - 会员标签创建 Request VO") 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | @ToString(callSuper = true) 12 | public class MemberTagCreateReqVO extends MemberTagBaseVO { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/controller/app/address/vo/AppAddressCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.controller.app.address.vo; 2 | import io.swagger.v3.oas.annotations.media.Schema; 3 | import lombok.*; 4 | 5 | @Schema(description = "用户 APP - 用户收件地址创建 Request VO") 6 | @Data 7 | @EqualsAndHashCode(callSuper = true) 8 | @ToString(callSuper = true) 9 | public class AppAddressCreateReqVO extends AppAddressBaseVO { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/controller/app/user/AppMemberUserController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /member/user/profile/get 接口 => 没有权限 2 | GET {{appApi}}/member/user/get 3 | Authorization: Bearer test245 4 | tenant-id: {{appTenentId}} 5 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 RESTful API 给前端: 3 | * 1. admin 包:提供给管理后台 htron-ui-admin 前端项目 4 | * 2. app 包:提供给用户 APP htron-ui-app 前端项目,它的 Controller 和 VO 都要添加 App 前缀,用于和管理后台进行区分 5 | */ 6 | package top.howie.htron.module.member.controller; 7 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/convert/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 POJO 类的实体转换 3 | * 4 | * 目前使用 MapStruct 框架 5 | */ 6 | package top.howie.htron.module.member.convert; 7 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/dal/mysql/config/MemberConfigMapper.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.member.dal.mysql.config; 2 | 3 | import top.howie.htron.framework.mybatis.core.mapper.BaseMapperX; 4 | import top.howie.htron.module.member.dal.dataobject.config.MemberConfigDO; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 积分设置 Mapper 9 | * 10 | * @author QingX 11 | */ 12 | @Mapper 13 | public interface MemberConfigMapper extends BaseMapperX { 14 | } 15 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/dal/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * DAL = Data Access Layer 数据访问层 3 | * 1. data object:数据对象 4 | * 2. redis:Redis 的 CRUD 操作 5 | * 3. mysql:MySQL 的 CRUD 操作 6 | * 7 | * 其中,MySQL 的表以 member_ 作为前缀 8 | */ 9 | package top.howie.htron.module.member.dal; 10 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/dal/redis/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位,后续有类后,可以删除,避免 package 无法提交到 Git 上 3 | */ 4 | package top.howie.htron.module.member.dal.redis; 5 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/framework/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 属于 member 模块的 framework 封装 3 | * 4 | * @author Howietron 5 | */ 6 | package top.howie.htron.module.member.framework; 7 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/framework/web/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * member 模块的 web 配置 3 | */ 4 | package top.howie.htron.module.member.framework.web; 5 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/mq/consumer/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列的消费者 3 | */ 4 | package top.howie.htron.module.member.mq.consumer; 5 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/mq/message/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列的消息 3 | */ 4 | package top.howie.htron.module.member.mq.message; 5 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/mq/producer/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 消息队列的生产者 3 | */ 4 | package top.howie.htron.module.member.mq.producer; 5 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/main/java/top/howie/htron/module/member/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * member 模块,我们放会员业务。 3 | * 例如说:会员中心等等 4 | * 5 | * 1. Controller URL:以 /member/ 开头,避免和其它 Module 冲突 6 | * 2. DataObject 表名:以 member_ 开头,方便在数据库中区分 7 | */ 8 | package top.howie.htron.module.member; 9 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /htron-module-member/htron-module-member-biz/src/test/resources/sql/clean.sql: -------------------------------------------------------------------------------- 1 | DELETE FROM "member_user"; 2 | DELETE FROM "member_address"; 3 | DELETE FROM "member_tag"; 4 | DELETE FROM "member_level"; 5 | DELETE FROM "member_group"; -------------------------------------------------------------------------------- /htron-module-mp/htron-module-mp-api/src/main/java/top/howie/htron/module/mp/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * mp 模块,我们放微信微信公众号。 3 | * 例如说:提供微信公众号的账号、菜单、粉丝、标签、消息、自动回复、素材、模板通知、运营数据等功能 4 | * 5 | * 1. Controller URL:以 /mp/ 开头,避免和其它 Module 冲突 6 | * 2. DataObject 表名:以 mp_ 开头,方便在数据库中区分 7 | */ 8 | package top.howie.htron.module.mp; 9 | -------------------------------------------------------------------------------- /htron-module-mp/htron-module-mp-biz/src/main/java/top/howie/htron/module/mp/controller/admin/account/vo/MpAccountCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.mp.controller.admin.account.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.ToString; 7 | 8 | @Schema(description = "管理后台 - 公众号账号创建 Request VO") 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | @ToString(callSuper = true) 12 | public class MpAccountCreateReqVO extends MpAccountBaseVO { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /htron-module-mp/htron-module-mp-biz/src/main/java/top/howie/htron/module/mp/controller/admin/material/MpMaterialController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /mp/material/page 接口 => 成功 2 | GET {{baseUrl}}/mp/material/page?permanent=true&pageNo=1&pageSize=10 3 | Content-Type: application/json 4 | Authorization: Bearer {{token}} 5 | tenant-id: {{adminTenentId}} 6 | -------------------------------------------------------------------------------- /htron-module-mp/htron-module-mp-biz/src/main/java/top/howie/htron/module/mp/controller/admin/message/MpAutoReplyController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /mp/message/page 接口 => 成功 2 | GET {{baseUrl}}/mp/auto-reply/page?accountId=1&pageNo=1&pageSize=10 3 | Content-Type: application/json 4 | Authorization: Bearer {{token}} 5 | tenant-id: {{adminTenentId}} 6 | -------------------------------------------------------------------------------- /htron-module-mp/htron-module-mp-biz/src/main/java/top/howie/htron/module/mp/controller/admin/user/MpUserController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /mp/user/sync 接口 => 成功 2 | POST {{baseUrl}}/mp/user/sync?accountId=1 3 | Content-Type: application/json 4 | Authorization: Bearer {{token}} 5 | tenant-id: {{adminTenentId}} 6 | 7 | ### 请求 /mp/user/update 接口 => 成功 8 | PUT {{baseUrl}}/mp/user/update 9 | Content-Type: application/json 10 | Authorization: Bearer {{token}} 11 | tenant-id: {{adminTenentId}} 12 | 13 | { 14 | "id": "3", 15 | "nickname": "test", 16 | "remark": "测试备注", 17 | "tagIds": [103, 104] 18 | } 19 | -------------------------------------------------------------------------------- /htron-module-mp/htron-module-mp-biz/src/main/java/top/howie/htron/module/mp/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 RESTful API 给前端: 3 | * 1. admin 包:提供给管理后台 htron-ui-admin 前端项目 4 | * 2. app 包:提供给用户 APP htron-ui-app 前端项目,它的 Controller 和 VO 都要添加 App 前缀,用于和管理后台进行区分 5 | */ 6 | package top.howie.htron.module.mp.controller; 7 | -------------------------------------------------------------------------------- /htron-module-mp/htron-module-mp-biz/src/main/java/top/howie/htron/module/mp/framework/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 属于 mp 模块的 framework 封装 3 | * 4 | * @author Howietron 5 | */ 6 | package top.howie.htron.module.mp.framework; 7 | -------------------------------------------------------------------------------- /htron-module-mp/htron-module-mp-biz/src/main/java/top/howie/htron/module/mp/framework/web/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * mp 模块的 web 配置 3 | */ 4 | package top.howie.htron.module.mp.framework.web; 5 | -------------------------------------------------------------------------------- /htron-module-mp/htron-module-mp-biz/src/main/java/top/howie/htron/module/mp/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * mp 模块,我们放微信微信公众号。 3 | * 例如说:提供微信公众号的账号、菜单、粉丝、标签、消息、自动回复、素材、模板通知、运营数据等功能 4 | * 5 | * 1. Controller URL:以 /mp/ 开头,避免和其它 Module 冲突 6 | * 2. DataObject 表名:以 mp_ 开头,方便在数据库中区分 7 | */ 8 | package top.howie.htron.module.mp; 9 | -------------------------------------------------------------------------------- /htron-module-mp/htron-module-mp-biz/src/main/java/top/howie/htron/module/mp/service/handler/other/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 本包内的 handler 都是一些不重要的,所以放在 other 其它里 3 | */ 4 | package top.howie.htron.module.mp.service.handler.other; 5 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-api/src/main/java/top/howie/htron/module/pay/api/notify/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位符,无特殊作用 3 | */ 4 | package top.howie.htron.module.pay.api.notify; 5 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-api/src/main/java/top/howie/htron/module/pay/api/transfer/PayTransferApi.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.pay.api.transfer; 2 | 3 | import top.howie.htron.module.pay.api.transfer.dto.PayTransferCreateReqDTO; 4 | 5 | import javax.validation.Valid; 6 | 7 | /** 8 | * 转账单 API 接口 9 | * 10 | * @author jason 11 | */ 12 | public interface PayTransferApi { 13 | 14 | /** 15 | * 创建转账单 16 | * 17 | * @param reqDTO 创建请求 18 | * @return 转账单编号 19 | */ 20 | Long createTransfer(@Valid PayTransferCreateReqDTO reqDTO); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-api/src/main/java/top/howie/htron/module/pay/enums/DictTypeConstants.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.pay.enums; 2 | 3 | /** 4 | * Pay 字典类型的枚举类 5 | * 6 | * @author Howietron 7 | */ 8 | public interface DictTypeConstants { 9 | 10 | String CHANNEL_CODE = "pay_channel_code"; // 支付渠道编码 11 | 12 | String ORDER_STATUS = "pay_order_status"; // 支付渠道 13 | 14 | String REFUND_STATUS = "pay_order_status"; // 退款状态 15 | 16 | String NOTIFY_STATUS = "pay_notify_status"; // 回调状态 17 | 18 | } 19 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/main/java/top/howie/htron/module/pay/controller/admin/app/vo/PayAppCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.pay.controller.admin.app.vo; 2 | import io.swagger.v3.oas.annotations.media.Schema; 3 | import lombok.*; 4 | 5 | @Schema(description = "管理后台 - 支付应用信息创建 Request VO") 6 | @Data 7 | @EqualsAndHashCode(callSuper = true) 8 | @ToString(callSuper = true) 9 | public class PayAppCreateReqVO extends PayAppBaseVO { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/main/java/top/howie/htron/module/pay/controller/app/refund/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * TODO Howie:占个位置,没啥用 3 | */ 4 | package top.howie.htron.module.pay.controller.app.refund; 5 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/main/java/top/howie/htron/module/pay/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 RESTful API 给前端: 3 | * 1. admin 包:提供给管理后台 htron-ui-admin 前端项目 4 | * 2. app 包:提供给用户 APP htron-ui-app 前端项目,它的 Controller 和 VO 都要添加 App 前缀,用于和管理后台进行区分 5 | */ 6 | package top.howie.htron.module.pay.controller; 7 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/main/java/top/howie/htron/module/pay/convert/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 POJO 类的实体转换 3 | * 4 | * 目前使用 MapStruct 框架 5 | */ 6 | package top.howie.htron.module.pay.convert; 7 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/main/java/top/howie/htron/module/pay/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/main/java/top/howie/htron/module/pay/framework/job/core/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package top.howie.htron.module.pay.framework.job.core; 5 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/main/java/top/howie/htron/module/pay/framework/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 属于 pay 模块的 framework 封装 3 | * 4 | * @author Howietron 5 | */ 6 | package top.howie.htron.module.pay.framework; 7 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/main/java/top/howie/htron/module/pay/framework/pay/config/PayConfiguration.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.pay.framework.pay.config; 2 | 3 | import org.springframework.boot.context.properties.EnableConfigurationProperties; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration(proxyBeanMethods = false) 7 | @EnableConfigurationProperties(PayProperties.class) 8 | public class PayConfiguration { 9 | } 10 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/main/java/top/howie/htron/module/pay/framework/web/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * pay 模块的 web 配置 3 | */ 4 | package top.howie.htron.module.pay.framework.web; 5 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/main/java/top/howie/htron/module/pay/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * pay 模块,我们放支付业务,提供业务的支付能力。 3 | * 例如说:商户、应用、支付、退款等等 4 | * 5 | * 1. Controller URL:以 /pay/ 开头,避免和其它 Module 冲突 6 | * 2. DataObject 表名:以 pay_ 开头,方便在数据库中区分 7 | * 8 | * 注意,由于 Pay 模块和 Trade 模块,容易重名,所以类名都加载 Pay 的前缀~ 9 | */ 10 | package top.howie.htron.module.pay; 11 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/test-integration/java/top/howie/htron/module/pay/service/package-info.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.pay.service; 2 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /htron-module-pay/htron-module-pay-biz/src/test/resources/sql/clean.sql: -------------------------------------------------------------------------------- 1 | DELETE FROM pay_app; 2 | DELETE FROM pay_channel; 3 | DELETE FROM pay_order; 4 | DELETE FROM pay_order_extension; 5 | DELETE FROM pay_refund; 6 | DELETE FROM pay_notify_task; 7 | DELETE FROM pay_notify_log; 8 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/api/dept/PostApi.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.api.dept; 2 | 3 | import java.util.Collection; 4 | 5 | /** 6 | * 岗位 API 接口 7 | * 8 | * @author Howietron 9 | */ 10 | public interface PostApi { 11 | 12 | /** 13 | * 校验岗位们是否有效。如下情况,视为无效: 14 | * 1. 岗位编号不存在 15 | * 2. 岗位被禁用 16 | * 17 | * @param ids 岗位编号数组 18 | */ 19 | void validPostList(Collection ids); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/api/logger/LoginLogApi.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.api.logger; 2 | 3 | import top.howie.htron.module.system.api.logger.dto.LoginLogCreateReqDTO; 4 | 5 | import javax.validation.Valid; 6 | 7 | /** 8 | * 登录日志的 API 接口 9 | * 10 | * @author Howietron 11 | */ 12 | public interface LoginLogApi { 13 | 14 | /** 15 | * 创建登录日志 16 | * 17 | * @param reqDTO 日志信息 18 | */ 19 | void createLoginLog(@Valid LoginLogCreateReqDTO reqDTO); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/api/logger/OperateLogApi.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.api.logger; 2 | 3 | import top.howie.htron.module.system.api.logger.dto.OperateLogCreateReqDTO; 4 | 5 | import javax.validation.Valid; 6 | 7 | /** 8 | * 操作日志 API 接口 9 | * 10 | * @author Howietron 11 | */ 12 | public interface OperateLogApi { 13 | 14 | /** 15 | * 创建操作日志 16 | * 17 | * @param createReqDTO 请求 18 | */ 19 | void createOperateLog(@Valid OperateLogCreateReqDTO createReqDTO); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/api/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * System API 包,定义暴露给其它模块的 API 3 | */ 4 | package top.howie.htron.module.system.api; 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/api/permission/RoleApi.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.api.permission; 2 | 3 | import java.util.Collection; 4 | 5 | /** 6 | * 角色 API 接口 7 | * 8 | * @author Howietron 9 | */ 10 | public interface RoleApi { 11 | 12 | /** 13 | * 校验角色们是否有效。如下情况,视为无效: 14 | * 1. 角色编号不存在 15 | * 2. 角色被禁用 16 | * 17 | * @param ids 角色编号数组 18 | */ 19 | void validRoleList(Collection ids); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/api/tenant/TenantApi.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.api.tenant; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 多租户的 API 接口 7 | * 8 | * @author Howietron 9 | */ 10 | public interface TenantApi { 11 | 12 | /** 13 | * 获得所有租户 14 | * 15 | * @return 租户编号数组 16 | */ 17 | List getTenantIdList(); 18 | 19 | /** 20 | * 校验租户是否合法 21 | * 22 | * @param id 租户编号 23 | */ 24 | void validateTenant(Long id); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/enums/common/SexEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.enums.common; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 性别的枚举值 8 | * 9 | * @author Howietron 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum SexEnum { 14 | 15 | /** 男 */ 16 | MALE(1), 17 | /** 女 */ 18 | FEMALE(2), 19 | /* 未知 */ 20 | UNKNOWN(3); 21 | 22 | /** 23 | * 性别 24 | */ 25 | private final Integer sex; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/enums/dept/DeptIdEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.enums.dept; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 部门编号枚举 8 | */ 9 | @Getter 10 | @AllArgsConstructor 11 | public enum DeptIdEnum { 12 | 13 | /** 14 | * 根节点 15 | */ 16 | ROOT(0L); 17 | 18 | private final Long id; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/enums/notice/NoticeTypeEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.enums.notice; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 通知类型 8 | * 9 | * @author Howietron 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum NoticeTypeEnum { 14 | 15 | NOTICE(1), 16 | ANNOUNCEMENT(2); 17 | 18 | /** 19 | * 类型 20 | */ 21 | private final Integer type; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/enums/oauth2/OAuth2ClientConstants.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.enums.oauth2; 2 | 3 | /** 4 | * OAuth2.0 客户端的通用枚举 5 | * 6 | * @author Howietron 7 | */ 8 | public interface OAuth2ClientConstants { 9 | 10 | String CLIENT_ID_DEFAULT = "default"; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/enums/permission/MenuTypeEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.enums.permission; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 菜单类型枚举类 8 | * 9 | * @author Howietron 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum MenuTypeEnum { 14 | 15 | DIR(1), // 目录 16 | MENU(2), // 菜单 17 | BUTTON(3) // 按钮 18 | ; 19 | 20 | /** 21 | * 类型 22 | */ 23 | private final Integer type; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/enums/permission/RoleTypeEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.enums.permission; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | @Getter 7 | @AllArgsConstructor 8 | public enum RoleTypeEnum { 9 | 10 | /** 11 | * 内置角色 12 | */ 13 | SYSTEM(1), 14 | /** 15 | * 自定义角色 16 | */ 17 | CUSTOM(2); 18 | 19 | private final Integer type; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/enums/sms/SmsReceiveStatusEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.enums.sms; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 短信的接收状态枚举 8 | * 9 | * @author Howietron 10 | * @date 2021/2/1 13:39 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum SmsReceiveStatusEnum { 15 | 16 | INIT(0), // 初始化 17 | SUCCESS(10), // 接收成功 18 | FAILURE(20), // 接收失败 19 | ; 20 | 21 | private final int status; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/enums/sms/SmsSendStatusEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.enums.sms; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 短信的发送状态枚举 8 | * 9 | * @author zzf 10 | * @date 2021/2/1 13:39 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum SmsSendStatusEnum { 15 | 16 | INIT(0), // 初始化 17 | SUCCESS(10), // 发送成功 18 | FAILURE(20), // 发送失败 19 | IGNORE(30), // 忽略,即不发送 20 | ; 21 | 22 | private final int status; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-api/src/main/java/top/howie/htron/module/system/enums/sms/SmsTemplateTypeEnum.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.enums.sms; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 短信的模板类型枚举 8 | * 9 | * @author Howietron 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum SmsTemplateTypeEnum { 14 | 15 | VERIFICATION_CODE(1), // 验证码 16 | NOTICE(2), // 通知 17 | PROMOTION(3), // 营销 18 | ; 19 | 20 | /** 21 | * 类型 22 | */ 23 | private final int type; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/dept/vo/dept/DeptCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.controller.admin.dept.vo.dept; 2 | import io.swagger.v3.oas.annotations.media.Schema; 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.ToString; 6 | 7 | @Schema(description = "管理后台 - 部门创建 Request VO") 8 | @Data 9 | @EqualsAndHashCode(callSuper = true) 10 | @ToString(callSuper = true) 11 | public class DeptCreateReqVO extends DeptBaseVO { 12 | } 13 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/dept/vo/post/PostCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.controller.admin.dept.vo.post; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Schema(description = "管理后台 - 岗位创建 Request VO") 8 | @Data 9 | @EqualsAndHashCode(callSuper = true) 10 | public class PostCreateReqVO extends PostBaseVO { 11 | } 12 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/dict/DictDataController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /menu/list 接口 => 成功 2 | GET {{baseUrl}}/system/dict-data/list-all-simple 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/dict/vo/data/DictDataCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.controller.admin.dict.vo.data; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Schema(description = "管理后台 - 字典数据创建 Request VO") 8 | @Data 9 | @EqualsAndHashCode(callSuper = true) 10 | public class DictDataCreateReqVO extends DictDataBaseVO { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/errorcode/ErrorCodeController.http: -------------------------------------------------------------------------------- 1 | ### 创建错误码 2 | POST {{baseUrl}}/inra/error-code/create 3 | Authorization: Bearer {{token}} 4 | Content-Type: application/json 5 | tenant-id: {{adminTenentId}} 6 | 7 | { 8 | "code": 200, 9 | "message": "成功", 10 | "group": "test", 11 | "type": 1 12 | } 13 | 14 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/errorcode/vo/ErrorCodeCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.controller.admin.errorcode.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.ToString; 7 | 8 | @Schema(description = "管理后台 - 错误码创建 Request VO") 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | @ToString(callSuper = true) 12 | public class ErrorCodeCreateReqVO extends ErrorCodeBaseVO { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/ip/AreaController.http: -------------------------------------------------------------------------------- 1 | ### 获得地区树 2 | GET {{baseUrl}}/system/area/tree 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | 6 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/logger/OperateLogController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/operate-log/demo 接口 => 成功 2 | GET {{baseUrl}}/system/operate-log/demo 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/mail/MailTemplateController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/mail-template/send-mail 接口 => 成功 2 | POST {{baseUrl}}/system/mail-template/send-mail 3 | Authorization: Bearer {{token}} 4 | Content-Type: application/json 5 | tenant-id: {{adminTenentId}} 6 | 7 | { 8 | "templateCode": "test_01", 9 | "mail": "7685413@qq.com", 10 | "templateParams": { 11 | "key01": "value01", 12 | "key02": "value02" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/mail/vo/account/MailAccountCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.controller.admin.mail.vo.account; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.ToString; 7 | 8 | @Schema(description = "管理后台 - 邮箱账号创建 Request VO") 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | @ToString(callSuper = true) 12 | public class MailAccountCreateReqVO extends MailAccountBaseVO { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/notice/vo/NoticeCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.controller.admin.notice.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Schema(description = "管理后台 - 通知公告创建 Request VO") 8 | @Data 9 | @EqualsAndHashCode(callSuper = true) 10 | public class NoticeCreateReqVO extends NoticeBaseVO { 11 | } 12 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/notify/vo/template/NotifyTemplateCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.controller.admin.notify.vo.template; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.*; 5 | 6 | @Schema(description = "管理后台 - 站内信模版创建 Request VO") 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | @ToString(callSuper = true) 10 | public class NotifyTemplateCreateReqVO extends NotifyTemplateBaseVO { 11 | } 12 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/oauth2/OAuth2UserController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/oauth2/user/get 接口 => 成功 2 | GET {{baseUrl}}/system/oauth2/user/get 3 | Authorization: Bearer 47f9c74ec11041f193b777ebb95c3b0d 4 | tenant-id: {{adminTenentId}} 5 | 6 | ### 请求 /system/oauth2/user/update 接口 => 成功 7 | PUT {{baseUrl}}/system/oauth2/user/update 8 | Content-Type: application/json 9 | Authorization: Bearer 47f9c74ec11041f193b777ebb95c3b0d 10 | tenant-id: {{adminTenentId}} 11 | 12 | { 13 | "nickname": "Howietron" 14 | } 15 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/oauth2/vo/client/OAuth2ClientCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.controller.admin.oauth2.vo.client; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.*; 5 | 6 | @Schema(description = "管理后台 - OAuth2 客户端创建 Request VO") 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | @ToString(callSuper = true) 10 | public class OAuth2ClientCreateReqVO extends OAuth2ClientBaseVO { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/permission/MenuController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /menu/list 接口 => 成功 2 | GET {{baseUrl}}/system/menu/list 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/permission/vo/menu/MenuCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.controller.admin.permission.vo.menu; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.*; 5 | 6 | @Schema(description = "管理后台 - 菜单创建 Request VO") 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class MenuCreateReqVO extends MenuBaseVO { 10 | } 11 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/permission/vo/role/RoleCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.controller.admin.permission.vo.role; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Schema(description = "管理后台 - 角色创建 Request VO") 8 | @Data 9 | @EqualsAndHashCode(callSuper = true) 10 | public class RoleCreateReqVO extends RoleBaseVO { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/sensitiveword/SensitiveWordController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/sensitive-word/validate-text 接口 => 成功 2 | GET {{baseUrl}}/system/sensitive-word/validate-text?text=XXX&tags=短信&tags=蔬菜 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/sms/SmsTemplateController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/sms-template/send-sms 接口 => 成功 2 | POST {{baseUrl}}/system/sms-template/send-sms 3 | Authorization: Bearer {{token}} 4 | Content-Type: application/json 5 | tenant-id: {{adminTenentId}} 6 | 7 | { 8 | "templateCode": "test_01", 9 | "mobile": "15601691390", 10 | "templateParams": { 11 | "operation": "value01", 12 | "code": "value02" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/sms/vo/template/SmsTemplateCreateReqVO.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.controller.admin.sms.vo.template; 2 | import io.swagger.v3.oas.annotations.media.Schema; 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.ToString; 6 | 7 | @Schema(description = "管理后台 - 短信模板创建 Request VO") 8 | @Data 9 | @EqualsAndHashCode(callSuper = true) 10 | @ToString(callSuper = true) 11 | public class SmsTemplateCreateReqVO extends SmsTemplateBaseVO { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/user/UserController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/user/page 接口 => 没有权限 2 | GET {{baseUrl}}/system/user/page?pageNo=1&pageSize=10 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/admin/user/UserProfileController.http: -------------------------------------------------------------------------------- 1 | ### 请求 /system/user/profile/get 接口 => 没有权限 2 | GET {{baseUrl}}/system/user/profile/get 3 | Authorization: Bearer {{token}} 4 | tenant-id: {{adminTenentId}} 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 RESTful API 给前端: 3 | * 1. admin 包:提供给管理后台 htron-ui-admin 前端项目 4 | * 2. app 包:提供给用户 APP htron-ui-app 前端项目,它的 Controller 和 VO 都要添加 App 前缀,用于和管理后台进行区分 5 | */ 6 | package top.howie.htron.module.system.controller; 7 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/convert/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 提供 POJO 类的实体转换 3 | * 4 | * 目前使用 MapStruct 框架 5 | */ 6 | package top.howie.htron.module.system.convert; 7 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/dal/mysql/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * DAL = Data Access Layer 数据访问层 3 | * 1. data object:数据对象 4 | * 2. redis:Redis 的 CRUD 操作 5 | * 3. mysql:MySQL 的 CRUD 操作 6 | * 7 | * 其中,MySQL 的表以 system_ 作为前缀 8 | */ 9 | package top.howie.htron.module.system.dal.mysql; 10 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/framework/datapermission/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * system 模块的数据权限配置 3 | */ 4 | package top.howie.htron.module.system.framework.datapermission; 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/framework/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 属于 system 模块的 framework 封装 3 | * 4 | * @author Howietron 5 | */ 6 | package top.howie.htron.module.system.framework; 7 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/framework/sms/SmsCodeConfiguration.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.framework.sms; 2 | 3 | import org.springframework.boot.context.properties.EnableConfigurationProperties; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration(proxyBeanMethods = false) 7 | @EnableConfigurationProperties(SmsCodeProperties.class) 8 | public class SmsCodeConfiguration { 9 | } 10 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/framework/web/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * system 模块的 web 配置 3 | */ 4 | package top.howie.htron.module.system.framework.web; 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/job/package-info.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.job; 2 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * system 模块下,我们放通用业务,支撑上层的核心业务。 3 | * 例如说:用户、部门、权限、数据字典等等 4 | * 5 | * 1. Controller URL:以 /system/ 开头,避免和其它 Module 冲突 6 | * 2. DataObject 表名:以 system_ 开头,方便在数据库中区分 7 | */ 8 | package top.howie.htron.module.system; 9 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/service/member/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * htron-module-member 模块的适配,解除 htron-module-system 对它们的依赖 3 | */ 4 | package top.howie.htron.module.system.service.member; 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/service/tenant/handler/TenantInfoHandler.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.service.tenant.handler; 2 | 3 | import top.howie.htron.module.system.dal.dataobject.tenant.TenantDO; 4 | 5 | /** 6 | * 租户信息处理 7 | * 目的:尽量减少租户逻辑耦合到系统中 8 | * 9 | * @author Howietron 10 | */ 11 | public interface TenantInfoHandler { 12 | 13 | /** 14 | * 基于传入的租户信息,进行相关逻辑的执行 15 | * 例如说,创建用户时,超过最大账户配额 16 | * 17 | * @param tenant 租户信息 18 | */ 19 | void handle(TenantDO tenant); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/service/tenant/handler/TenantMenuHandler.java: -------------------------------------------------------------------------------- 1 | package top.howie.htron.module.system.service.tenant.handler; 2 | 3 | import java.util.Set; 4 | 5 | /** 6 | * 租户菜单处理 7 | * 目的:尽量减少租户逻辑耦合到系统中 8 | * 9 | * @author Howietron 10 | */ 11 | public interface TenantMenuHandler { 12 | 13 | /** 14 | * 基于传入的租户菜单【全】列表,进行相关逻辑的执行 15 | * 例如说,返回可分配菜单的时候,可以移除多余的 16 | * 17 | * @param menuIds 菜单列表 18 | */ 19 | void handle(Set menuIds); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/main/java/top/howie/htron/module/system/util/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 每个模块的 util 包,放专属当前模块的 Utils 工具类 3 | */ 4 | package top.howie.htron.module.system.util; 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/test-integration/java/top/howie/htron/module/system/service/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 占位 3 | */ 4 | package top.howie.htron.module.system.service; 5 | -------------------------------------------------------------------------------- /htron-module-system/htron-module-system-biz/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | [*.{js,ts,vue}] 3 | charset = utf-8 # 设置文件字符集为 utf-8 4 | end_of_line = lf # 控制换行类型(lf | cr | crlf) 5 | insert_final_newline = true # 始终在文件末尾插入一个新行 6 | indent_style = space # 缩进风格(tab | space) 7 | indent_size = 2 # 缩进大小 8 | max_line_length = 100 # 最大行长度 9 | 10 | [*.md] # 仅 md 文件适用以下规则 11 | max_line_length = off # 关闭最大行长度限制 12 | trim_trailing_whitespace = false # 关闭末尾空格修剪 13 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.env: -------------------------------------------------------------------------------- 1 | # 标题 2 | VITE_APP_TITLE=芋道管理系统 3 | 4 | # 项目本地运行端口号 5 | VITE_PORT=80 6 | 7 | # open 运行 npm run dev 时自动打开浏览器 8 | VITE_OPEN=true 9 | 10 | # 租户开关 11 | VITE_APP_TENANT_ENABLE=true 12 | 13 | # 验证码的开关 14 | VITE_APP_CAPTCHA_ENABLE=true 15 | 16 | # 百度统计 17 | VITE_APP_BAIDU_CODE = a1ff8825baa73c3a78eb96aa40325abc 18 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.env.base: -------------------------------------------------------------------------------- 1 | # 本地开发环境 2 | NODE_ENV=development 3 | 4 | VITE_DEV=true 5 | 6 | # 请求路径 7 | VITE_BASE_URL='http://localhost:48080' 8 | 9 | # 上传路径 10 | VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' 11 | 12 | # 接口前缀 13 | VITE_API_BASEPATH=/dev-api 14 | 15 | # 接口地址 16 | VITE_API_URL=/admin-api 17 | 18 | # 打包路径 19 | VITE_BASE_PATH=/ 20 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.env.dev: -------------------------------------------------------------------------------- 1 | # 开发环境 2 | NODE_ENV=development 3 | 4 | VITE_DEV=false 5 | 6 | # 请求路径 7 | VITE_BASE_URL='http://localhost:48080' 8 | 9 | # 上传路径 10 | VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' 11 | 12 | # 接口前缀 13 | VITE_API_BASEPATH=/dev-api 14 | 15 | # 接口地址 16 | VITE_API_URL=/admin-api 17 | 18 | # 打包路径 19 | VITE_BASE_PATH=/ 20 | 21 | # 是否删除debugger 22 | VITE_DROP_DEBUGGER=true 23 | 24 | # 是否删除console.log 25 | VITE_DROP_CONSOLE=false 26 | 27 | # 是否sourcemap 28 | VITE_SOURCEMAP=false 29 | 30 | # 输出路径 31 | VITE_OUT_DIR=dist 32 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.env.pro: -------------------------------------------------------------------------------- 1 | # 生产环境 2 | NODE_ENV=production 3 | 4 | VITE_DEV=false 5 | 6 | # 请求路径 7 | VITE_BASE_URL='http://localhost:48080' 8 | 9 | # 上传路径 10 | VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' 11 | 12 | # 接口前缀 13 | VITE_API_BASEPATH= 14 | 15 | # 接口地址 16 | VITE_API_URL=/admin-api 17 | 18 | # 是否删除debugger 19 | VITE_DROP_DEBUGGER=true 20 | 21 | # 是否删除console.log 22 | VITE_DROP_CONSOLE=true 23 | 24 | # 是否sourcemap 25 | VITE_SOURCEMAP=false 26 | 27 | # 打包路径 28 | VITE_BASE_PATH=/ 29 | 30 | # 输出路径 31 | VITE_OUT_DIR=dist-pro 32 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.env.static: -------------------------------------------------------------------------------- 1 | # 开发环境 2 | NODE_ENV=production 3 | 4 | VITE_DEV=false 5 | 6 | # 请求路径 7 | VITE_BASE_URL='http://localhost:48080' 8 | 9 | # 上传路径 10 | VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' 11 | 12 | # 接口前缀 13 | VITE_API_BASEPATH= 14 | 15 | # 接口地址 16 | VITE_API_URL=/admin-api 17 | 18 | # 是否删除debugger 19 | VITE_DROP_DEBUGGER=true 20 | 21 | # 是否删除console.log 22 | VITE_DROP_CONSOLE=true 23 | 24 | # 是否sourcemap 25 | VITE_SOURCEMAP=false 26 | 27 | # 打包路径 28 | VITE_BASE_PATH=/admin-ui-vue3/ 29 | 30 | # 输出路径 31 | VITE_OUT_DIR=dist-dev 32 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.eslintignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /config/ 3 | /dist/ 4 | /*.js 5 | /test/unit/coverage/ 6 | /node_modules/* 7 | /dist* 8 | /src/main.ts 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | /dist* 7 | *-lock.* 8 | pnpm-debug 9 | auto-*.d.ts 10 | .idea 11 | .history 12 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/Java监控.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/Java监控.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/MySQL.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/MySQL.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/OA请假-列表.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/OA请假-列表.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/OA请假-发起.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/OA请假-发起.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/OA请假-详情.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/OA请假-详情.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/Redis.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/Redis.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/admin-uniapp/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/admin-uniapp/01.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/admin-uniapp/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/admin-uniapp/02.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/admin-uniapp/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/admin-uniapp/03.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/admin-uniapp/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/admin-uniapp/04.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/admin-uniapp/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/admin-uniapp/05.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/admin-uniapp/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/admin-uniapp/06.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/admin-uniapp/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/admin-uniapp/07.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/admin-uniapp/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/admin-uniapp/08.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/admin-uniapp/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/admin-uniapp/09.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/common/mall-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/common/mall-feature.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/common/mall-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/common/mall-preview.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/common/project-vs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/common/project-vs.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/common/ruoyi-vue-pro-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/common/ruoyi-vue-pro-architecture.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/common/ruoyi-vue-pro-biz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/common/ruoyi-vue-pro-biz.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/common/yudao-cloud-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/common/yudao-cloud-architecture.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/common/yudao-roadmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/common/yudao-roadmap.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/个人中心.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/个人中心.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/代码生成.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/代码生成.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/令牌管理.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/令牌管理.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/任务列表-审批.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/任务列表-审批.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/任务列表-已办.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/任务列表-已办.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/任务列表-待办.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/任务列表-待办.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/任务日志.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/任务日志.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/商户信息.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/商户信息.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/在线用户.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/在线用户.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/大屏设计器-列表.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/大屏设计器-列表.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/大屏设计器-编辑.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/大屏设计器-编辑.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/大屏设计器-预览.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/大屏设计器-预览.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/字典数据.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/字典数据.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/字典类型.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/字典类型.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/定时任务.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/定时任务.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/岗位管理.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/岗位管理.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/应用信息-列表.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/应用信息-列表.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/应用信息-编辑.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/应用信息-编辑.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/应用管理.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/应用管理.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/我的流程-列表.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/我的流程-列表.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/我的流程-发起.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/我的流程-发起.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/我的流程-详情.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/我的流程-详情.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/报表设计器-图形报表.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/报表设计器-图形报表.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/报表设计器-打印设计.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/报表设计器-打印设计.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/报表设计器-数据报表.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/报表设计器-数据报表.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/操作日志.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/操作日志.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/支付订单.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/支付订单.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/敏感词.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/敏感词.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/数据库文档.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/数据库文档.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/文件管理.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/文件管理.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/文件管理2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/文件管理2.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/文件配置.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/文件配置.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/日志中心.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/日志中心.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/流程模型-列表.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/流程模型-列表.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/流程模型-定义.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/流程模型-定义.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/流程模型-设计.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/流程模型-设计.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/流程表单.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/流程表单.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/生成效果.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/生成效果.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/用户分组.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/用户分组.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/用户管理.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/用户管理.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/登录.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/登录.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/登录日志.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/登录日志.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/短信日志.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/短信日志.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/短信模板.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/短信模板.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/短信渠道.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/短信渠道.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/租户套餐.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/租户套餐.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/租户管理.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/租户管理.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/系统接口.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/系统接口.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/菜单管理.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/菜单管理.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/表单构建.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/表单构建.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/角色管理.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/角色管理.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/访问日志.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/访问日志.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/退款订单.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/退款订单.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/通知公告.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/通知公告.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/部门管理.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/部门管理.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/配置管理.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/配置管理.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/链路追踪.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/链路追踪.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/错误日志.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/错误日志.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/错误码管理.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/错误码管理.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.image/首页.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/.image/首页.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.prettierignore: -------------------------------------------------------------------------------- 1 | /node_modules/** 2 | /dist/ 3 | /dist* 4 | /public/* 5 | /docs/* 6 | /vite.config.ts 7 | /src/types/env.d.ts 8 | /src/types/auto-components.d.ts 9 | /src/types/auto-imports.d.ts 10 | /docs/**/* 11 | CHANGELOG 12 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.stylelintignore: -------------------------------------------------------------------------------- 1 | /dist/* 2 | /public/* 3 | public/* 4 | /dist* 5 | /src/types/env.d.ts 6 | /docs/**/* 7 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "christian-kohler.path-intellisense", 4 | "vscode-icons-team.vscode-icons", 5 | "davidanson.vscode-markdownlint", 6 | "stylelint.vscode-stylelint", 7 | "dbaeumer.vscode-eslint", 8 | "esbenp.prettier-vscode", 9 | "mrmlnc.vscode-less", 10 | "lokalise.i18n-ally", 11 | "redhat.vscode-yaml", 12 | "csstools.postcss", 13 | "mikestead.dotenv", 14 | "eamodio.gitlens", 15 | "antfu.iconify", 16 | "antfu.unocss", 17 | "Vue.volar" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "msedge", 9 | "request": "launch", 10 | "name": "Launch Edge against localhost", 11 | "url": "http://localhost", 12 | "webRoot": "${workspaceFolder}/src", 13 | "sourceMaps": true 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/public/favicon.ico -------------------------------------------------------------------------------- /htron-ui-admin-vue3/public/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/public/home.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/public/logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/public/logo.gif -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/bpm/activity/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | export const getActivityList = async (params) => { 4 | return await request.get({ 5 | url: '/bpm/activity/list', 6 | params 7 | }) 8 | } 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/infra/dbDoc/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | // 导出Html 4 | export const exportHtml = () => { 5 | return request.download({ url: '/infra/db-doc/export-html' }) 6 | } 7 | 8 | // 导出Word 9 | export const exportWord = () => { 10 | return request.download({ url: '/infra/db-doc/export-word' }) 11 | } 12 | 13 | // 导出Markdown 14 | export const exportMarkdown = () => { 15 | return request.download({ url: '/infra/db-doc/export-markdown' }) 16 | } 17 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/infra/file/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | export interface FilePageReqVO extends PageParam { 4 | path?: string 5 | type?: string 6 | createTime?: Date[] 7 | } 8 | 9 | // 查询文件列表 10 | export const getFilePage = (params: FilePageReqVO) => { 11 | return request.get({ url: '/infra/file/page', params }) 12 | } 13 | 14 | // 删除文件 15 | export const deleteFile = (id: number) => { 16 | return request.delete({ url: '/infra/file/delete?id=' + id }) 17 | } 18 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/infra/redis/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | /** 4 | * 获取redis 监控信息 5 | */ 6 | export const getCache = () => { 7 | return request.get({ url: '/infra/redis/get-monitor-info' }) 8 | } 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/mall/promotion/bargain/bargainHelp.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | export interface BargainHelpVO { 4 | id: number 5 | record: number 6 | userId: number 7 | reducePrice: number 8 | endTime: Date 9 | } 10 | 11 | // 查询砍价记录列表 12 | export const getBargainHelpPage = async (params) => { 13 | return await request.get({ url: `/promotion/bargain-help/page`, params }) 14 | } 15 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/mall/promotion/bargain/bargainRecord.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | export interface BargainRecordVO { 4 | id: number 5 | activityId: number 6 | userId: number 7 | spuId: number 8 | skuId: number 9 | bargainFirstPrice: number 10 | bargainPrice: number 11 | status: number 12 | orderId: number 13 | endTime: Date 14 | } 15 | 16 | // 查询砍价记录列表 17 | export const getBargainRecordPage = async (params) => { 18 | return await request.get({ url: `/promotion/bargain-record/page`, params }) 19 | } 20 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/mall/statistics/common.ts: -------------------------------------------------------------------------------- 1 | /** 数据对照 Response VO */ 2 | export interface DataComparisonRespVO { 3 | value: T 4 | reference: T 5 | } 6 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/mall/statistics/pay.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | /** 支付统计 */ 4 | export interface PaySummaryRespVO { 5 | /** 充值金额,单位分 */ 6 | rechargePrice: number 7 | } 8 | 9 | /** 获取钱包充值金额 */ 10 | export const getWalletRechargePrice = async () => { 11 | return await request.get({ url: `/statistics/pay/summary` }) 12 | } 13 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/mall/trade/brokerage/record/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | // 查询佣金记录列表 4 | export const getBrokerageRecordPage = async (params: any) => { 5 | return await request.get({ url: `/trade/brokerage-record/page`, params }) 6 | } 7 | 8 | // 查询佣金记录详情 9 | export const getBrokerageRecord = async (id: number) => { 10 | return await request.get({ url: `/trade/brokerage-record/get?id=` + id }) 11 | } 12 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/member/address/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | export interface AddressVO { 4 | id: number 5 | name: string 6 | mobile: string 7 | areaId: number 8 | detailAddress: string 9 | defaultStatus: boolean 10 | } 11 | 12 | // 查询用户收件地址列表 13 | export const getAddressList = async (params) => { 14 | return await request.get({ url: `/member/address/list`, params }) 15 | } 16 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/member/config/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | export interface ConfigVO { 4 | id: number 5 | pointTradeDeductEnable: number 6 | pointTradeDeductUnitPrice: number 7 | pointTradeDeductMaxPrice: number 8 | pointTradeGivePoint: number 9 | } 10 | 11 | // 查询积分设置详情 12 | export const getConfig = async () => { 13 | return await request.get({ url: `/member/config/get` }) 14 | } 15 | 16 | // 新增修改积分设置 17 | export const saveConfig = async (data: ConfigVO) => { 18 | return await request.put({ url: `/member/config/save`, data }) 19 | } 20 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/member/point/record/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | export interface RecordVO { 4 | id: number 5 | bizId: string 6 | bizType: string 7 | title: string 8 | description: string 9 | point: number 10 | totalPoint: number 11 | userId: number 12 | createDate: Date 13 | } 14 | 15 | // 查询用户积分记录列表 16 | export const getRecordPage = async (params) => { 17 | return await request.get({ url: `/member/point/record/page`, params }) 18 | } 19 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/member/signin/record/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | export interface SignInRecordVO { 4 | id: number 5 | userId: number 6 | day: number 7 | point: number 8 | } 9 | 10 | // 查询用户签到积分列表 11 | export const getSignInRecordPage = async (params) => { 12 | return await request.get({ url: `/member/sign-in/record/page`, params }) 13 | } 14 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/mp/material/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | // 获得公众号素材分页 4 | export const getMaterialPage = (query) => { 5 | return request.get({ 6 | url: '/mp/material/page', 7 | params: query 8 | }) 9 | } 10 | 11 | // 删除公众号永久素材 12 | export const deletePermanentMaterial = (id) => { 13 | return request.delete({ 14 | url: '/mp/material/delete-permanent?id=' + id 15 | }) 16 | } 17 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/mp/message/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | // 获得公众号消息分页 4 | export const getMessagePage = (query: PageParam) => { 5 | return request.get({ 6 | url: '/mp/message/page', 7 | params: query 8 | }) 9 | } 10 | 11 | // 给粉丝发送消息 12 | export const sendMessage = (data) => { 13 | return request.post({ 14 | url: '/mp/message/send', 15 | data: data 16 | }) 17 | } 18 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/pay/notify/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | // 获得支付通知明细 4 | export const getNotifyTaskDetail = (id) => { 5 | return request.get({ 6 | url: '/pay/notify/get-detail?id=' + id 7 | }) 8 | } 9 | 10 | // 获得支付通知分页 11 | export const getNotifyTaskPage = (query) => { 12 | return request.get({ 13 | url: '/pay/notify/page', 14 | params: query 15 | }) 16 | } 17 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/pay/wallet/transaction/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | export interface WalletTransactionVO { 4 | id: number 5 | walletId: number 6 | title: string 7 | price: number 8 | balance: number 9 | } 10 | 11 | // 查询会员钱包流水列表 12 | export const getWalletTransactionPage = async (params) => { 13 | return await request.get({ url: `/pay/wallet-transaction/page`, params }) 14 | } 15 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/api/system/area/index.ts: -------------------------------------------------------------------------------- 1 | import request from '@/config/axios' 2 | 3 | // 获得地区树 4 | export const getAreaTree = async () => { 5 | return await request.get({ url: '/system/area/tree' }) 6 | } 7 | 8 | // 获得 IP 对应的地区名 9 | export const getAreaByIp = async (ip: string) => { 10 | return await request.get({ url: '/system/area/get-by-ip?ip=' + ip }) 11 | } 12 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/assets/imgs/avatar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/src/assets/imgs/avatar.gif -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/assets/imgs/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/src/assets/imgs/avatar.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/assets/imgs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/src/assets/imgs/logo.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/assets/imgs/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/src/assets/imgs/profile.jpg -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/assets/imgs/wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/src/assets/imgs/wechat.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/assets/svgs/money.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Backtop/index.ts: -------------------------------------------------------------------------------- 1 | import Backtop from './src/Backtop.vue' 2 | 3 | export { Backtop } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Backtop/src/Backtop.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 18 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Card/index.ts: -------------------------------------------------------------------------------- 1 | import CardTitle from './src/CardTitle.vue' 2 | 3 | export { CardTitle } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/ConfigGlobal/index.ts: -------------------------------------------------------------------------------- 1 | import ConfigGlobal from './src/ConfigGlobal.vue' 2 | 3 | export { ConfigGlobal } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/ContentDetailWrap/index.ts: -------------------------------------------------------------------------------- 1 | import ContentDetailWrap from './src/ContentDetailWrap.vue' 2 | 3 | export { ContentDetailWrap } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/ContentWrap/index.ts: -------------------------------------------------------------------------------- 1 | import ContentWrap from './src/ContentWrap.vue' 2 | 3 | export { ContentWrap } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/CountTo/index.ts: -------------------------------------------------------------------------------- 1 | import CountTo from './src/CountTo.vue' 2 | 3 | export { CountTo } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Crontab/index.ts: -------------------------------------------------------------------------------- 1 | import Crontab from './src/Crontab.vue' 2 | export { Crontab } 3 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Cropper/index.ts: -------------------------------------------------------------------------------- 1 | import CropperImage from './src/Cropper.vue' 2 | import CropperAvatar from './src/CropperAvatar.vue' 3 | 4 | export { CropperImage, CropperAvatar } 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Cropper/src/types.ts: -------------------------------------------------------------------------------- 1 | import type Cropper from 'cropperjs' 2 | 3 | export interface CropendResult { 4 | imgBase64: string 5 | imgInfo: Cropper.Data 6 | } 7 | 8 | export type { Cropper } 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Descriptions/index.ts: -------------------------------------------------------------------------------- 1 | import Descriptions from './src/Descriptions.vue' 2 | import DescriptionsItemLabel from './src/DescriptionsItemLabel.vue' 3 | 4 | export { Descriptions, DescriptionsItemLabel } 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Dialog/index.ts: -------------------------------------------------------------------------------- 1 | import Dialog from './src/Dialog.vue' 2 | 3 | export { Dialog } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/DictTag/index.ts: -------------------------------------------------------------------------------- 1 | import DictTag from './src/DictTag.vue' 2 | 3 | export { DictTag } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Echart/index.ts: -------------------------------------------------------------------------------- 1 | import Echart from './src/Echart.vue' 2 | 3 | export { Echart } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Editor/index.ts: -------------------------------------------------------------------------------- 1 | import Editor from './src/Editor.vue' 2 | import { IDomEditor } from '@wangeditor/editor' 3 | 4 | export interface EditorExpose { 5 | getEditorRef: () => Promise 6 | } 7 | 8 | export { Editor } 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Error/index.ts: -------------------------------------------------------------------------------- 1 | import Error from './src/Error.vue' 2 | 3 | export { Error } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Form/src/types.ts: -------------------------------------------------------------------------------- 1 | import { FormSchema } from '@/types/form' 2 | 3 | export interface PlaceholderModel { 4 | placeholder?: string 5 | startPlaceholder?: string 6 | endPlaceholder?: string 7 | rangeSeparator?: string 8 | } 9 | 10 | export type FormProps = { 11 | schema?: FormSchema[] 12 | isCol?: boolean 13 | model?: Recordable 14 | autoSetPlaceholder?: boolean 15 | isCustom?: boolean 16 | labelWidth?: string | number 17 | } & Recordable 18 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Highlight/index.ts: -------------------------------------------------------------------------------- 1 | import Highlight from './src/Highlight.vue' 2 | 3 | export { Highlight } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/IFrame/index.ts: -------------------------------------------------------------------------------- 1 | import IFrame from './src/IFrame.vue' 2 | 3 | export { IFrame } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Icon/index.ts: -------------------------------------------------------------------------------- 1 | import Icon from './src/Icon.vue' 2 | import IconSelect from './src/IconSelect.vue' 3 | 4 | export { Icon, IconSelect } 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/ImageViewer/src/types.ts: -------------------------------------------------------------------------------- 1 | export interface ImageViewerProps { 2 | urlList?: string[] 3 | zIndex?: number 4 | initialIndex?: number 5 | infinite?: boolean 6 | hideOnClickModal?: boolean 7 | appendToBody?: boolean 8 | show?: boolean 9 | } 10 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Infotip/index.ts: -------------------------------------------------------------------------------- 1 | import Infotip from './src/Infotip.vue' 2 | 3 | export { Infotip } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/InputPassword/index.ts: -------------------------------------------------------------------------------- 1 | import InputPassword from './src/InputPassword.vue' 2 | 3 | export { InputPassword } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Qrcode/index.ts: -------------------------------------------------------------------------------- 1 | import Qrcode from './src/Qrcode.vue' 2 | 3 | export { Qrcode } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Search/index.ts: -------------------------------------------------------------------------------- 1 | import Search from './src/Search.vue' 2 | 3 | export { Search } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Sticky/index.ts: -------------------------------------------------------------------------------- 1 | import Sticky from './src/Sticky.vue' 2 | 3 | export { Sticky } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Table/index.ts: -------------------------------------------------------------------------------- 1 | import Table from './src/Table.vue' 2 | import { ElTable } from 'element-plus' 3 | import { TableSetPropsType } from '@/types/table' 4 | 5 | export interface TableExpose { 6 | setProps: (props: Recordable) => void 7 | setColumn: (columnProps: TableSetPropsType[]) => void 8 | selections: Recordable[] 9 | elTableRef: ComponentRef 10 | } 11 | 12 | export { Table } 13 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Table/src/helper.ts: -------------------------------------------------------------------------------- 1 | export const setIndex = (reserveIndex: boolean, index: number, size: number, current: number) => { 2 | const newIndex = index + 1 3 | if (reserveIndex) { 4 | return size * (current - 1) + newIndex 5 | } else { 6 | return newIndex 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Tooltip/index.ts: -------------------------------------------------------------------------------- 1 | import Tooltip from './src/Tooltip.vue' 2 | 3 | export { Tooltip } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Tooltip/src/Tooltip.vue: -------------------------------------------------------------------------------- 1 | 12 | 18 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/UploadFile/index.ts: -------------------------------------------------------------------------------- 1 | import UploadImg from './src/UploadImg.vue' 2 | import UploadImgs from './src/UploadImgs.vue' 3 | import UploadFile from './src/UploadFile.vue' 4 | 5 | export { UploadImg, UploadImgs, UploadFile } 6 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Verifition/index.ts: -------------------------------------------------------------------------------- 1 | import Verify from './src/Verify.vue' 2 | 3 | export { Verify } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Verifition/src/Verify/index.ts: -------------------------------------------------------------------------------- 1 | import VerifySlide from './VerifySlide.vue' 2 | import VerifyPoints from './VerifyPoints.vue' 3 | 4 | export { VerifySlide, VerifyPoints } 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/Verifition/src/utils/ase.ts: -------------------------------------------------------------------------------- 1 | import CryptoJS from 'crypto-js' 2 | /** 3 | * @word 要加密的内容 4 | * @keyWord String 服务器随机返回的关键字 5 | * */ 6 | export function aesEncrypt(word, keyWord = 'XwKsGlMcdPMEhR1B') { 7 | const key = CryptoJS.enc.Utf8.parse(keyWord) 8 | const srcs = CryptoJS.enc.Utf8.parse(word) 9 | const encrypted = CryptoJS.AES.encrypt(srcs, key, { 10 | mode: CryptoJS.mode.ECB, 11 | padding: CryptoJS.pad.Pkcs7 12 | }) 13 | return encrypted.toString() 14 | } 15 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/XButton/index.ts: -------------------------------------------------------------------------------- 1 | import XButton from './src/XButton.vue' 2 | import XTextButton from './src/XTextButton.vue' 3 | 4 | export { XButton, XTextButton } 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/index.ts: -------------------------------------------------------------------------------- 1 | import MyProcessDesigner from './ProcessDesigner.vue' 2 | 3 | MyProcessDesigner.install = function (Vue) { 4 | Vue.component(MyProcessDesigner.name, MyProcessDesigner) 5 | } 6 | 7 | // 流程图的设计器,可编辑 8 | export default MyProcessDesigner 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/index2.ts: -------------------------------------------------------------------------------- 1 | import MyProcessViewer from './ProcessViewer.vue' 2 | 3 | MyProcessViewer.install = function (Vue) { 4 | Vue.component(MyProcessViewer.name, MyProcessViewer) 5 | } 6 | 7 | // 流程图的查看器,不可编辑 8 | export default MyProcessViewer 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js: -------------------------------------------------------------------------------- 1 | import CustomContextPadProvider from './contentPadProvider' 2 | 3 | export default { 4 | __init__: ['contextPadProvider'], 5 | contextPadProvider: ['type', CustomContextPadProvider] 6 | } 7 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @author igdianov 3 | * address https://github.com/igdianov/activiti-bpmn-moddle 4 | * */ 5 | 6 | import activitiExtension from './activitiExtension' 7 | 8 | export default { 9 | __init__: ['ActivitiModdleExtension'], 10 | ActivitiModdleExtension: ['type', activitiExtension] 11 | } 12 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | import extension from './extension' 4 | 5 | export default { 6 | __init__: ['camundaModdleExtension'], 7 | camundaModdleExtension: ['type', extension] 8 | } 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @author igdianov 3 | * address https://github.com/igdianov/activiti-bpmn-moddle 4 | * */ 5 | import flowableExtension from './flowableExtension' 6 | 7 | export default { 8 | __init__: ['FlowableModdleExtension'], 9 | FlowableModdleExtension: ['type', flowableExtension] 10 | } 11 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/package/index.ts: -------------------------------------------------------------------------------- 1 | import MyProcessDesigner from './designer' 2 | import MyProcessPenal from './penal' 3 | import MyProcessViewer from './designer/index2' 4 | 5 | import './theme/index.scss' 6 | import 'bpmn-js/dist/assets/diagram-js.css' 7 | import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css' 8 | import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css' 9 | import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css' 10 | 11 | export { MyProcessDesigner, MyProcessPenal, MyProcessViewer } 12 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/package/penal/index.js: -------------------------------------------------------------------------------- 1 | import MyPropertiesPanel from './PropertiesPanel.vue' 2 | 3 | MyPropertiesPanel.install = function (Vue) { 4 | Vue.component(MyPropertiesPanel.name, MyPropertiesPanel) 5 | } 6 | 7 | export default MyPropertiesPanel 8 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/package/theme/index.scss: -------------------------------------------------------------------------------- 1 | @import './process-designer.scss'; 2 | @import './process-panel.scss'; 3 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/src/highlight/index.js: -------------------------------------------------------------------------------- 1 | const hljs = require('highlight.js/lib/core') 2 | hljs.registerLanguage('xml', require('highlight.js/lib/languages/xml')) 3 | hljs.registerLanguage('json', require('highlight.js/lib/languages/json')) 4 | 5 | module.exports = hljs 6 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js: -------------------------------------------------------------------------------- 1 | import CustomRenderer from './CustomRenderer' 2 | 3 | export default { 4 | __init__: ['customRenderer'], 5 | customRenderer: ['type', CustomRenderer] 6 | } 7 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js: -------------------------------------------------------------------------------- 1 | import BpmnRules from 'bpmn-js/lib/features/rules/BpmnRules' 2 | import inherits from 'inherits' 3 | 4 | export default function CustomRules(eventBus) { 5 | BpmnRules.call(this, eventBus) 6 | } 7 | 8 | inherits(CustomRules, BpmnRules) 9 | 10 | CustomRules.prototype.canDrop = function () { 11 | return false 12 | } 13 | 14 | CustomRules.prototype.canMove = function () { 15 | return false 16 | } 17 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/src/modules/rules/index.js: -------------------------------------------------------------------------------- 1 | import CustomRules from './CustomRules' 2 | 3 | export default { 4 | __init__: ['customRules'], 5 | customRules: ['type', CustomRules] 6 | } 7 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/bpmnProcessDesigner/src/utils/index.js: -------------------------------------------------------------------------------- 1 | export function debounce(fn, delay = 500) { 2 | let timer 3 | return function (...args) { 4 | if (timer) { 5 | clearTimeout(timer) 6 | timer = null 7 | } 8 | timer = setTimeout(fn.bind(this, ...args), delay) 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/components/index.ts: -------------------------------------------------------------------------------- 1 | import type { App } from 'vue' 2 | import { Icon } from './Icon' 3 | 4 | export const setupGlobCom = (app: App): void => { 5 | app.component('Icon', Icon) 6 | } 7 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/config/axios/errorCode.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | '401': '认证失败,无法访问系统资源', 3 | '403': '当前操作没有权限', 4 | '404': '访问资源不存在', 5 | default: '系统未知错误,请反馈给管理员' 6 | } 7 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/directives/index.ts: -------------------------------------------------------------------------------- 1 | import type { App } from 'vue' 2 | import { hasRole } from './permission/hasRole' 3 | import { hasPermi } from './permission/hasPermi' 4 | 5 | /** 6 | * 导出指令:v-xxx 7 | * @methods hasRole 用户权限,用法: v-hasRole 8 | * @methods hasPermi 按钮权限,用法: v-hasPermi 9 | */ 10 | export const setupAuth = (app: App) => { 11 | hasRole(app) 12 | hasPermi(app) 13 | } 14 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/hooks/web/useConfigGlobal.ts: -------------------------------------------------------------------------------- 1 | import { ConfigGlobalTypes } from '@/types/configGlobal' 2 | 3 | export const useConfigGlobal = () => { 4 | const configGlobal = inject('configGlobal', {}) as ConfigGlobalTypes 5 | 6 | return { 7 | configGlobal 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/hooks/web/useDesign.ts: -------------------------------------------------------------------------------- 1 | import variables from '@/styles/global.module.scss' 2 | 3 | export const useDesign = () => { 4 | const scssVariables = variables 5 | 6 | /** 7 | * @param scope 类名 8 | * @returns 返回空间名-类名 9 | */ 10 | const getPrefixCls = (scope: string) => { 11 | return `${scssVariables.namespace}-${scope}` 12 | } 13 | 14 | return { 15 | variables: scssVariables, 16 | getPrefixCls 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/hooks/web/useEmitt.ts: -------------------------------------------------------------------------------- 1 | import mitt from 'mitt' 2 | 3 | interface Option { 4 | name: string // 事件名称 5 | callback: Fn // 回调 6 | } 7 | 8 | const emitter = mitt() 9 | 10 | export const useEmitt = (option?: Option) => { 11 | if (option) { 12 | emitter.on(option.name, option.callback) 13 | 14 | onBeforeUnmount(() => { 15 | emitter.off(option.name) 16 | }) 17 | } 18 | 19 | return { 20 | emitter 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/hooks/web/useIcon.ts: -------------------------------------------------------------------------------- 1 | import { h } from 'vue' 2 | import type { VNode } from 'vue' 3 | import { Icon } from '@/components/Icon' 4 | import { IconTypes } from '@/types/icon' 5 | 6 | export const useIcon = (props: IconTypes): VNode => { 7 | return h(Icon, props) 8 | } 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/hooks/web/usePageLoading.ts: -------------------------------------------------------------------------------- 1 | import { useAppStoreWithOut } from '@/store/modules/app' 2 | 3 | const appStore = useAppStoreWithOut() 4 | 5 | export const usePageLoading = () => { 6 | const loadStart = () => { 7 | appStore.setPageLoading(true) 8 | } 9 | 10 | const loadDone = () => { 11 | appStore.setPageLoading(false) 12 | } 13 | 14 | return { 15 | loadStart, 16 | loadDone 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/Breadcrumb/index.ts: -------------------------------------------------------------------------------- 1 | import Breadcrumb from './src/Breadcrumb.vue' 2 | 3 | export { Breadcrumb } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/Collapse/index.ts: -------------------------------------------------------------------------------- 1 | import Collapse from './src/Collapse.vue' 2 | 3 | export { Collapse } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/ContextMenu/index.ts: -------------------------------------------------------------------------------- 1 | import ContextMenu from './src/ContextMenu.vue' 2 | import { ElDropdown } from 'element-plus' 3 | import type { RouteLocationNormalizedLoaded } from 'vue-router' 4 | 5 | export interface ContextMenuExpose { 6 | elDropdownMenuRef: ComponentRef 7 | tagItem: RouteLocationNormalizedLoaded 8 | } 9 | 10 | export { ContextMenu } 11 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/Footer/index.ts: -------------------------------------------------------------------------------- 1 | import Footer from './src/Footer.vue' 2 | 3 | export { Footer } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/LocaleDropdown/index.ts: -------------------------------------------------------------------------------- 1 | import LocaleDropdown from './src/LocaleDropdown.vue' 2 | 3 | export { LocaleDropdown } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/Logo/index.ts: -------------------------------------------------------------------------------- 1 | import Logo from './src/Logo.vue' 2 | 3 | export { Logo } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/Menu/index.ts: -------------------------------------------------------------------------------- 1 | import Menu from './src/Menu.vue' 2 | 3 | export { Menu } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/Message/index.ts: -------------------------------------------------------------------------------- 1 | import Message from './src/Message.vue' 2 | 3 | export { Message } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/Screenfull/index.ts: -------------------------------------------------------------------------------- 1 | import Screenfull from './src/Screenfull.vue' 2 | 3 | export { Screenfull } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/Setting/index.ts: -------------------------------------------------------------------------------- 1 | import Setting from './src/Setting.vue' 2 | 3 | export { Setting } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/SizeDropdown/index.ts: -------------------------------------------------------------------------------- 1 | import SizeDropdown from './src/SizeDropdown.vue' 2 | 3 | export { SizeDropdown } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/TabMenu/index.ts: -------------------------------------------------------------------------------- 1 | import TabMenu from './src/TabMenu.vue' 2 | 3 | export { TabMenu } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/TagsView/index.ts: -------------------------------------------------------------------------------- 1 | import TagsView from './src/TagsView.vue' 2 | 3 | export { TagsView } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/ThemeSwitch/index.ts: -------------------------------------------------------------------------------- 1 | import ThemeSwitch from './src/ThemeSwitch.vue' 2 | 3 | export { ThemeSwitch } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/layout/components/UserInfo/index.ts: -------------------------------------------------------------------------------- 1 | import UserInfo from './src/UserInfo.vue' 2 | 3 | export { UserInfo } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/plugins/animate.css/index.ts: -------------------------------------------------------------------------------- 1 | import 'animate.css' 2 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/plugins/elementPlus/index.ts: -------------------------------------------------------------------------------- 1 | import type { App } from 'vue' 2 | // 需要全局引入一些组件,如ElScrollbar,不然一些下拉项样式有问题 3 | import { ElLoading, ElScrollbar, ElButton } from 'element-plus' 4 | 5 | const plugins = [ElLoading] 6 | 7 | const components = [ElScrollbar, ElButton] 8 | 9 | export const setupElementPlus = (app: App) => { 10 | plugins.forEach((plugin) => { 11 | app.use(plugin) 12 | }) 13 | 14 | components.forEach((component) => { 15 | app.component(component.name, component) 16 | }) 17 | } 18 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/plugins/svgIcon/index.ts: -------------------------------------------------------------------------------- 1 | import 'virtual:svg-icons-register' 2 | 3 | import '@purge-icons/generated' 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/plugins/unocss/index.ts: -------------------------------------------------------------------------------- 1 | import 'virtual:uno.css' 2 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/plugins/vueI18n/helper.ts: -------------------------------------------------------------------------------- 1 | export const setHtmlPageLang = (locale: LocaleType) => { 2 | document.querySelector('html')?.setAttribute('lang', locale) 3 | } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/store/index.ts: -------------------------------------------------------------------------------- 1 | import type { App } from 'vue' 2 | import { createPinia } from 'pinia' 3 | 4 | const store = createPinia() 5 | 6 | export const setupStore = (app: App) => { 7 | app.use(store) 8 | } 9 | 10 | export { store } 11 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/styles/global.module.scss: -------------------------------------------------------------------------------- 1 | @import './variables.scss'; 2 | // 导出变量 3 | :export { 4 | namespace: $namespace; 5 | elNamespace: $elNamespace; 6 | } 7 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/styles/theme.scss: -------------------------------------------------------------------------------- 1 | // .text-color { 2 | // color: var(--el-text-color-regular); 3 | // } 4 | // .dark .dark\:text-color { 5 | // color: rgba(255, 255, 255, var(--dark-text-color)); 6 | // } 7 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/styles/variables.scss: -------------------------------------------------------------------------------- 1 | // 命名空间 2 | $namespace: v; 3 | // el命名空间 4 | $elNamespace: el; 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/types/configGlobal.d.ts: -------------------------------------------------------------------------------- 1 | import { ElementPlusSize } from './elementPlus' 2 | export interface ConfigGlobalTypes { 3 | size?: ElementPlusSize 4 | } 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/types/contextMenu.d.ts: -------------------------------------------------------------------------------- 1 | export type contextMenuSchema = { 2 | disabled?: boolean 3 | divided?: boolean 4 | icon?: string 5 | label: string 6 | command?: (item: contextMenuSchema) => void 7 | } 8 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/types/descriptions.d.ts: -------------------------------------------------------------------------------- 1 | export interface DescriptionsSchema { 2 | span?: number // 占多少分 3 | field: string // 字段名 4 | label?: string // label名 5 | width?: string | number 6 | minWidth?: string | number 7 | align?: 'left' | 'center' | 'right' 8 | labelAlign?: 'left' | 'center' | 'right' 9 | className?: string 10 | labelClassName?: string 11 | dateFormat?: string // add by 星语:支持时间的格式化 12 | dictType?: string // add by 星语:支持 dict 字典数据 13 | } 14 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/types/elementPlus.d.ts: -------------------------------------------------------------------------------- 1 | export type ElementPlusSize = 'default' | 'small' | 'large' 2 | 3 | export type ElementPlusInfoType = 'success' | 'info' | 'warning' | 'danger' 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/types/icon.d.ts: -------------------------------------------------------------------------------- 1 | export interface IconTypes { 2 | size?: number 3 | color?: string 4 | icon: string 5 | } 6 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/types/infoTip.d.ts: -------------------------------------------------------------------------------- 1 | export interface TipSchema { 2 | label: string 3 | keys?: string[] 4 | } 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/types/layout.d.ts: -------------------------------------------------------------------------------- 1 | export type LayoutType = 'classic' | 'topLeft' | 'top' | 'cutMenu' 2 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/types/localeDropdown.d.ts: -------------------------------------------------------------------------------- 1 | export interface Language { 2 | el: Recordable 3 | name: string 4 | } 5 | 6 | export interface LocaleDropdownType { 7 | lang: LocaleType 8 | name?: string 9 | elLocale?: Language 10 | } 11 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/types/qrcode.d.ts: -------------------------------------------------------------------------------- 1 | export interface QrcodeLogo { 2 | src?: string 3 | logoSize?: number 4 | bgColor?: string 5 | borderSize?: number 6 | crossOrigin?: string 7 | borderRadius?: number 8 | logoRadius?: number 9 | } 10 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/types/theme.d.ts: -------------------------------------------------------------------------------- 1 | export type ThemeTypes = { 2 | elColorPrimary?: string 3 | leftMenuBorderColor?: string 4 | leftMenuBgColor?: string 5 | leftMenuBgLightColor?: string 6 | leftMenuBgActiveColor?: string 7 | leftMenuCollapseBgActiveColor?: string 8 | leftMenuTextColor?: string 9 | leftMenuTextActiveColor?: string 10 | logoTitleTextColor?: string 11 | logoBorderColor?: string 12 | topHeaderBgColor?: string 13 | topHeaderTextColor?: string 14 | topHeaderHoverColor?: string 15 | topToolBorderColor?: string 16 | } 17 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/utils/formRules.ts: -------------------------------------------------------------------------------- 1 | const { t } = useI18n() 2 | 3 | // 必填项 4 | export const required = { 5 | required: true, 6 | message: t('common.required') 7 | } 8 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/utils/formatter.ts: -------------------------------------------------------------------------------- 1 | import { floatToFixed2 } from '@/utils' 2 | 3 | // 格式化金额【分转元】 4 | // @ts-ignore 5 | export const fenToYuanFormat = (_, __, cellValue: any, ___) => { 6 | return `¥${floatToFixed2(cellValue)}` 7 | } 8 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/utils/tsxHelper.ts: -------------------------------------------------------------------------------- 1 | import { Slots } from 'vue' 2 | import { isFunction } from '@/utils/is' 3 | 4 | export const getSlot = (slots: Slots, slot = 'default', data?: Recordable) => { 5 | // Reflect.has 判断一个对象是否存在某个属性 6 | if (!slots || !Reflect.has(slots, slot)) { 7 | return null 8 | } 9 | if (!isFunction(slots[slot])) { 10 | console.error(`${slot} is not a function!`) 11 | return null 12 | } 13 | const slotFn = slots[slot] 14 | if (!slotFn) return null 15 | return slotFn(data) 16 | } 17 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/Error/403.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/Error/404.vue: -------------------------------------------------------------------------------- 1 | 4 | 8 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/Error/500.vue: -------------------------------------------------------------------------------- 1 | 4 | 8 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/Login/components/index.ts: -------------------------------------------------------------------------------- 1 | import LoginForm from './LoginForm.vue' 2 | import MobileForm from './MobileForm.vue' 3 | import LoginFormTitle from './LoginFormTitle.vue' 4 | import RegisterForm from './RegisterForm.vue' 5 | import QrCodeForm from './QrCodeForm.vue' 6 | import SSOLoginVue from './SSOLogin.vue' 7 | 8 | export { LoginForm, MobileForm, LoginFormTitle, RegisterForm, QrCodeForm, SSOLoginVue } 9 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/Profile/components/index.ts: -------------------------------------------------------------------------------- 1 | import BasicInfo from './BasicInfo.vue' 2 | import ProfileUser from './ProfileUser.vue' 3 | import ResetPwd from './ResetPwd.vue' 4 | import UserAvatarVue from './UserAvatar.vue' 5 | import UserSocial from './UserSocial.vue' 6 | 7 | export { BasicInfo, ProfileUser, ResetPwd, UserAvatarVue, UserSocial } 8 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/infra/codegen/components/index.ts: -------------------------------------------------------------------------------- 1 | import BasicInfoForm from './BasicInfoForm.vue' 2 | import ColumInfoForm from './ColumInfoForm.vue' 3 | import GenerateInfoForm from './GenerateInfoForm.vue' 4 | export { BasicInfoForm, ColumInfoForm, GenerateInfoForm } 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/infra/testDemo/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mall/promotion/components/index.ts: -------------------------------------------------------------------------------- 1 | import SpuSelect from './SpuSelect.vue' 2 | import SpuAndSkuList from './SpuAndSkuList.vue' 3 | import { PropertyAndValues } from '@/views/mall/product/spu/components' 4 | 5 | type SpuProperty = { 6 | spuId: number 7 | spuDetail: T 8 | propertyList: PropertyAndValues[] 9 | } 10 | 11 | /** 12 | * 提供商品活动商品选择通用组件 13 | */ 14 | export { SpuSelect, SpuAndSkuList, SpuProperty } 15 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mall/promotion/coupon/components/index.ts: -------------------------------------------------------------------------------- 1 | import CouponSendForm from './CouponSendForm.vue' 2 | import CouponSelect from './CouponSelect.vue' 3 | 4 | export { CouponSendForm, CouponSelect } 5 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mall/trade/order/components/index.ts: -------------------------------------------------------------------------------- 1 | import OrderTableColumn from './OrderTableColumn.vue' 2 | 3 | export { OrderTableColumn } 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/member/user/components/balance-list.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/autoReply/components/types.ts: -------------------------------------------------------------------------------- 1 | // 消息类型(Follow: 关注时回复;Message: 消息回复;Keyword: 关键词回复) 2 | // 作为 tab.name,enum 的数字不能随意修改,与 api 参数相关 3 | export enum MsgType { 4 | Follow = 1, 5 | Message = 2, 6 | Keyword = 3 7 | } 8 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/components/wx-account-select/index.ts: -------------------------------------------------------------------------------- 1 | import WxAccountSelect from './main.vue' 2 | 3 | export default WxAccountSelect 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/components/wx-location/index.ts: -------------------------------------------------------------------------------- 1 | import WxLocation from './main.vue' 2 | 3 | export default WxLocation 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/components/wx-material-select/index.ts: -------------------------------------------------------------------------------- 1 | import WxMaterialSelect from './main.vue' 2 | import { NewsType, MaterialType } from './types' 3 | 4 | export { NewsType, MaterialType } 5 | 6 | export default WxMaterialSelect 7 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/components/wx-material-select/types.ts: -------------------------------------------------------------------------------- 1 | export enum NewsType { 2 | Draft = '2', 3 | Published = '1' 4 | } 5 | 6 | export enum MaterialType { 7 | Image = 'image', 8 | Voice = 'voice', 9 | Video = 'video', 10 | News = 'news' 11 | } 12 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/components/wx-msg/index.ts: -------------------------------------------------------------------------------- 1 | import WxMsg from './main.vue' 2 | import { MsgType } from './types' 3 | 4 | export { MsgType } 5 | 6 | export default WxMsg 7 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/components/wx-msg/types.ts: -------------------------------------------------------------------------------- 1 | export enum MsgType { 2 | Event = 'event', 3 | Text = 'text', 4 | Voice = 'voice', 5 | Image = 'image', 6 | Video = 'video', 7 | Link = 'link', 8 | Location = 'location', 9 | Music = 'music', 10 | News = 'news' 11 | } 12 | 13 | export interface User { 14 | nickname: string 15 | avatar: string 16 | accountId: number 17 | } 18 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/components/wx-music/index.ts: -------------------------------------------------------------------------------- 1 | import WxMusic from './main.vue' 2 | 3 | export default WxMusic 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/components/wx-news/index.ts: -------------------------------------------------------------------------------- 1 | import WxNews from './main.vue' 2 | 3 | export default WxNews 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/components/wx-reply/index.ts: -------------------------------------------------------------------------------- 1 | import { Reply, NewsType, ReplyType, createEmptyReply } from './components/types' 2 | 3 | import WxReplySelect from './main.vue' 4 | 5 | export type { Reply } 6 | export { createEmptyReply, NewsType, ReplyType } 7 | export default WxReplySelect 8 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/components/wx-video-play/index.ts: -------------------------------------------------------------------------------- 1 | import WxVideoPlayer from './main.vue' 2 | 3 | export default WxVideoPlayer 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/components/wx-voice-play/index.ts: -------------------------------------------------------------------------------- 1 | import WxVoicePlayer from './main.vue' 2 | 3 | export default WxVoicePlayer 4 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/draft/components/index.ts: -------------------------------------------------------------------------------- 1 | import type { Article, NewsItem, NewsItemList } from './types' 2 | import { createEmptyNewsItem } from './types' 3 | import DraftTable from './DraftTable.vue' 4 | import NewsForm from './NewsForm.vue' 5 | 6 | export { DraftTable, NewsForm, createEmptyNewsItem } 7 | export type { Article, NewsItem, NewsItemList } 8 | -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/menu/assets/iphone_backImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/src/views/mp/menu/assets/iphone_backImg.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/menu/assets/menu_foot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/src/views/mp/menu/assets/menu_foot.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/mp/menu/assets/menu_head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Howietron/Htron-vue/5a92d81201bf6d2af5235ff471e459d7d6f8af80/htron-ui-admin-vue3/src/views/mp/menu/assets/menu_head.png -------------------------------------------------------------------------------- /htron-ui-admin-vue3/src/views/report/goview/index.vue: -------------------------------------------------------------------------------- 1 |