├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── _config └── postgresql │ └── dax-pay.sql ├── _doc ├── ChangeLog.md ├── Task.md └── images │ └── dax-pay.svg ├── _license ├── LICENSE.md ├── easy-cron │ └── LICENSE ├── easy_trans │ └── LICENSE ├── go-view │ ├── LICENSE │ └── LICENSE2 ├── hand_hzero │ └── LICENSE ├── jeecg-boot │ └── LICENSE ├── k-form-design │ └── LICENSE ├── knife4j │ └── LICENSE ├── mybatis-enhance-actable │ └── LICENSE ├── pay-java-parent │ └── LICENSE ├── ruoyi-vue-pro │ └── LICENSE ├── snowy │ └── LICENSE ├── vue3-vant4-mobile │ └── LICENSE ├── workflow-bpmn-modeler-antdv │ └── LICENSE └── wxdfun-sw │ └── LICENSE ├── bootx-platform ├── bootx-platform-common │ ├── common-config │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── common │ │ │ │ └── config │ │ │ │ ├── BootxConfigProperties.java │ │ │ │ ├── ConfigAutoConfiguration.java │ │ │ │ └── enums │ │ │ │ └── DeployMode.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── common-exception-handler │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── common │ │ │ │ └── exceptionhandler │ │ │ │ ├── ExceptionHandlerAutoConfiguration.java │ │ │ │ └── handler │ │ │ │ ├── ExceptionHandlerProperties.java │ │ │ │ └── RestExceptionHandler.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── common-header-holder │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── common │ │ │ │ └── headerholder │ │ │ │ ├── HeaderHolder.java │ │ │ │ ├── filter │ │ │ │ └── WebHeaderHolderInterceptor.java │ │ │ │ └── local │ │ │ │ └── HolderContextHolder.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── common-jackson │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── common │ │ │ │ └── jackson │ │ │ │ ├── configuration │ │ │ │ └── JacksonConfiguration.java │ │ │ │ ├── deserializer │ │ │ │ ├── BootxLocalDateTimeDeserializer.java │ │ │ │ └── BootxLocalTimeDeserializer.java │ │ │ │ ├── jdk │ │ │ │ ├── Java8TimeModule.java │ │ │ │ └── JavaLongTypeModule.java │ │ │ │ ├── sensitive │ │ │ │ ├── SensitiveInfo.java │ │ │ │ └── SensitiveInfoSerialize.java │ │ │ │ └── util │ │ │ │ └── JacksonUtil.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── common-log │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── common │ │ │ │ └── log │ │ │ │ ├── LogAutoConfigurationLogAutoConfiguration.java │ │ │ │ └── handler │ │ │ │ └── LogTraceHeaderHolderFilter.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── common-mybatis-plus │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── common │ │ │ │ └── mybatisplus │ │ │ │ ├── MybatisPlusCommonAutoConfiguration.java │ │ │ │ ├── aspect │ │ │ │ ├── DataPermScopeAspect.java │ │ │ │ └── IgnoreTenantAspectHandler.java │ │ │ │ ├── base │ │ │ │ ├── MpBaseEntity.java │ │ │ │ ├── MpCreateEntity.java │ │ │ │ ├── MpIdEntity.java │ │ │ │ └── MpRealDelEntity.java │ │ │ │ ├── configuration │ │ │ │ └── MpConfiguration.java │ │ │ │ ├── function │ │ │ │ ├── CollectorsFunction.java │ │ │ │ ├── MetaObjectFill.java │ │ │ │ └── ToResult.java │ │ │ │ ├── handler │ │ │ │ ├── IntegerListTypeHandler.java │ │ │ │ ├── LongListTypeHandler.java │ │ │ │ ├── MpMetaObjectHandler.java │ │ │ │ ├── SnowflakeIdentifierGenerator.java │ │ │ │ └── StringListTypeHandler.java │ │ │ │ ├── impl │ │ │ │ └── BaseManager.java │ │ │ │ ├── interceptor │ │ │ │ ├── MpInterceptor.java │ │ │ │ └── MpInterceptorConfiguration.java │ │ │ │ ├── local │ │ │ │ └── DataPermContextHolder.java │ │ │ │ ├── query │ │ │ │ ├── QueryApplication.java │ │ │ │ ├── code │ │ │ │ │ ├── CompareTypeEnum.java │ │ │ │ │ └── ParamTypeEnum.java │ │ │ │ ├── entity │ │ │ │ │ ├── QueryBetweenParam.java │ │ │ │ │ ├── QueryParam.java │ │ │ │ │ ├── QueryParams.java │ │ │ │ │ └── SortParam.java │ │ │ │ ├── function │ │ │ │ │ └── QueryBetween.java │ │ │ │ └── generator │ │ │ │ │ ├── AnnotationQueryGenerator.java │ │ │ │ │ ├── ParamValueTypeConvert.java │ │ │ │ │ ├── QueryGenerator.java │ │ │ │ │ └── SuperQueryGenerator.java │ │ │ │ └── util │ │ │ │ └── MpUtil.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── common-redis │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── common │ │ │ │ ├── RedisCommonAutoConfiguration.java │ │ │ │ ├── configuration │ │ │ │ └── RedisAutoConfiguration.java │ │ │ │ └── serializer │ │ │ │ └── KryoRedisSerializer.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── common-spring │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── common │ │ │ │ └── spring │ │ │ │ ├── SpringConfigApplication.java │ │ │ │ ├── configuration │ │ │ │ ├── AsyncExecutorConfiguration.java │ │ │ │ ├── SpringCorsConfiguration.java │ │ │ │ └── SpringProperties.java │ │ │ │ ├── exception │ │ │ │ └── RetryableException.java │ │ │ │ └── util │ │ │ │ ├── AopUtil.java │ │ │ │ └── WebServletUtil.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── common-swagger │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── common │ │ │ │ └── swagger │ │ │ │ ├── SwaggerAutoConfiguration.java │ │ │ │ ├── SwaggerPostConfiguration.java │ │ │ │ └── SwaggerProperties.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ └── pom.xml ├── bootx-platform-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── cn │ │ └── bootx │ │ └── platform │ │ └── core │ │ ├── annotation │ │ ├── BigField.java │ │ ├── ClientCode.java │ │ ├── DataPermScope.java │ │ ├── IgnoreAuth.java │ │ ├── IgnoreTenant.java │ │ ├── InternalPath.java │ │ ├── OperateLog.java │ │ ├── OperateLogs.java │ │ ├── PermCode.java │ │ ├── QueryParam.java │ │ ├── RequestGroup.java │ │ └── RequestPath.java │ │ ├── code │ │ ├── CommonCode.java │ │ ├── CommonErrorCode.java │ │ ├── ServletCode.java │ │ └── WebHeaderCode.java │ │ ├── entity │ │ └── UserDetail.java │ │ ├── exception │ │ ├── BizErrorException.java │ │ ├── BizException.java │ │ ├── BizInfoException.java │ │ ├── BizWarnException.java │ │ ├── DangerSqlException.java │ │ ├── DataNotExistException.java │ │ ├── RepetitiveOperationException.java │ │ ├── UnSupportOperateException.java │ │ └── ValidationFailedException.java │ │ ├── rest │ │ ├── Res.java │ │ ├── dto │ │ │ ├── KeyValue.java │ │ │ └── LabelValue.java │ │ ├── param │ │ │ └── PageParam.java │ │ └── result │ │ │ ├── ErrorResult.java │ │ │ ├── PageResult.java │ │ │ └── Result.java │ │ ├── result │ │ └── BaseResult.java │ │ ├── util │ │ ├── BigDecimalUtil.java │ │ ├── CertUtil.java │ │ ├── ClassUtils.java │ │ ├── DateTimeUtil.java │ │ ├── JsonUtil.java │ │ ├── SqlInjectionUtil.java │ │ ├── TreeBuildUtil.java │ │ └── ValidationUtil.java │ │ └── validation │ │ ├── IpAddress.java │ │ ├── IpAddressValidator.java │ │ └── ValidationGroup.java ├── bootx-platform-service │ ├── pom.xml │ ├── service-baseapi │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── baseapi │ │ │ │ ├── BaseApiApplication.java │ │ │ │ ├── controller │ │ │ │ ├── BaseController.java │ │ │ │ ├── dict │ │ │ │ │ ├── DictionaryController.java │ │ │ │ │ └── DictionaryItemController.java │ │ │ │ ├── parameter │ │ │ │ │ └── SystemParamController.java │ │ │ │ └── region │ │ │ │ │ └── ChinaRegionController.java │ │ │ │ ├── convert │ │ │ │ ├── dict │ │ │ │ │ └── DictionaryConvert.java │ │ │ │ └── parameter │ │ │ │ │ └── SystemConvert.java │ │ │ │ ├── dao │ │ │ │ ├── dict │ │ │ │ │ ├── DictionaryItemManager.java │ │ │ │ │ ├── DictionaryItemMapper.java │ │ │ │ │ ├── DictionaryManager.java │ │ │ │ │ └── DictionaryMapper.java │ │ │ │ ├── parameter │ │ │ │ │ ├── SystemParamManager.java │ │ │ │ │ └── SystemParamMapper.java │ │ │ │ └── region │ │ │ │ │ ├── AreaManager.java │ │ │ │ │ ├── AreaMapper.java │ │ │ │ │ ├── CityManager.java │ │ │ │ │ ├── CityMapper.java │ │ │ │ │ ├── ProvinceManager.java │ │ │ │ │ ├── ProvinceMapper.java │ │ │ │ │ ├── StreetManager.java │ │ │ │ │ └── StreetMapper.java │ │ │ │ ├── entity │ │ │ │ ├── dict │ │ │ │ │ ├── Dictionary.java │ │ │ │ │ └── DictionaryItem.java │ │ │ │ ├── parameter │ │ │ │ │ └── SystemParameter.java │ │ │ │ └── region │ │ │ │ │ ├── Area.java │ │ │ │ │ ├── City.java │ │ │ │ │ ├── Province.java │ │ │ │ │ └── Street.java │ │ │ │ ├── enums │ │ │ │ └── ChinaRegionEnum.java │ │ │ │ ├── handler │ │ │ │ └── mp │ │ │ │ │ └── BaseMetaObjectHandler.java │ │ │ │ ├── param │ │ │ │ ├── dict │ │ │ │ │ ├── DictionaryItemParam.java │ │ │ │ │ └── DictionaryParam.java │ │ │ │ └── parameter │ │ │ │ │ └── SystemParameterParam.java │ │ │ │ ├── result │ │ │ │ ├── dict │ │ │ │ │ ├── DictionaryItemResult.java │ │ │ │ │ └── DictionaryResult.java │ │ │ │ ├── parameter │ │ │ │ │ └── SystemParameterResult.java │ │ │ │ └── region │ │ │ │ │ └── RegionResult.java │ │ │ │ └── service │ │ │ │ ├── dict │ │ │ │ ├── DictionaryItemService.java │ │ │ │ └── DictionaryService.java │ │ │ │ ├── parameter │ │ │ │ └── SystemParamService.java │ │ │ │ └── region │ │ │ │ └── ChinaRegionService.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ └── service-iam │ │ ├── pom.xml │ │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── bootx │ │ │ └── platform │ │ │ └── iam │ │ │ ├── IamApplication.java │ │ │ ├── auth │ │ │ ├── handler │ │ │ │ ├── LoginFailureHandlerImpl.java │ │ │ │ └── LoginSuccessHandlerImpl.java │ │ │ ├── login │ │ │ │ └── PasswordLoginHandler.java │ │ │ └── service │ │ │ │ ├── AuthAssistService.java │ │ │ │ └── GetAuthClientServiceImpl.java │ │ │ ├── bo │ │ │ └── permission │ │ │ │ └── RequestPathBo.java │ │ │ ├── code │ │ │ ├── IamErrorCode.java │ │ │ └── UserStatusEnum.java │ │ │ ├── controller │ │ │ ├── client │ │ │ │ └── ClientController.java │ │ │ ├── permission │ │ │ │ ├── PermCodeController.java │ │ │ │ ├── PermMenuController.java │ │ │ │ └── PermPathController.java │ │ │ ├── role │ │ │ │ └── RoleController.java │ │ │ ├── upms │ │ │ │ ├── RoleCodeController.java │ │ │ │ ├── RoleMenuController.java │ │ │ │ ├── RolePathController.java │ │ │ │ └── UserRoleController.java │ │ │ └── user │ │ │ │ ├── UserAdminController.java │ │ │ │ └── UserInfoController.java │ │ │ ├── convert │ │ │ ├── client │ │ │ │ └── ClientConvert.java │ │ │ ├── permission │ │ │ │ ├── PermCodeConvert.java │ │ │ │ ├── PermMenuConvert.java │ │ │ │ └── PermPathConvert.java │ │ │ ├── role │ │ │ │ └── RoleConvert.java │ │ │ └── user │ │ │ │ ├── UserConvert.java │ │ │ │ └── UserExpandConvert.java │ │ │ ├── dao │ │ │ ├── client │ │ │ │ ├── ClientManager.java │ │ │ │ └── ClientMapper.java │ │ │ ├── permission │ │ │ │ ├── PermCodeManager.java │ │ │ │ ├── PermCodeMapper.java │ │ │ │ ├── PermMenuManager.java │ │ │ │ ├── PermMenuMapper.java │ │ │ │ ├── PermPathManager.java │ │ │ │ └── PermPathMapper.java │ │ │ ├── role │ │ │ │ ├── RoleManager.java │ │ │ │ └── RoleMapper.java │ │ │ ├── upms │ │ │ │ ├── RoleCodeManager.java │ │ │ │ ├── RoleCodeMapper.java │ │ │ │ ├── RoleMenuManager.java │ │ │ │ ├── RoleMenuMapper.java │ │ │ │ ├── RolePathManager.java │ │ │ │ ├── RolePathMapper.java │ │ │ │ ├── UserRoleManager.java │ │ │ │ └── UserRoleMapper.java │ │ │ └── user │ │ │ │ ├── UserExpandInfoManager.java │ │ │ │ ├── UserExpandInfoMapper.java │ │ │ │ ├── UserInfoManager.java │ │ │ │ └── UserInfoMapper.java │ │ │ ├── entity │ │ │ ├── client │ │ │ │ ├── Client.java │ │ │ │ └── System.java │ │ │ ├── permission │ │ │ │ ├── PermCode.java │ │ │ │ ├── PermMenu.java │ │ │ │ └── PermPath.java │ │ │ ├── role │ │ │ │ └── Role.java │ │ │ ├── upms │ │ │ │ ├── RoleCode.java │ │ │ │ ├── RoleMenu.java │ │ │ │ ├── RolePath.java │ │ │ │ └── UserRole.java │ │ │ └── user │ │ │ │ ├── UserExpandInfo.java │ │ │ │ └── UserInfo.java │ │ │ ├── exception │ │ │ ├── login │ │ │ │ └── UserPasswordInvalidException.java │ │ │ ├── permission │ │ │ │ └── PermissionDBErrorException.java │ │ │ ├── role │ │ │ │ ├── RoleAlreadyExistedException.java │ │ │ │ ├── RoleAlreadyUsedException.java │ │ │ │ ├── RoleHasChildrenException.java │ │ │ │ └── RoleNotExistedException.java │ │ │ └── user │ │ │ │ ├── UserInfoNotExistsException.java │ │ │ │ ├── UserNonePhoneAndEmailException.java │ │ │ │ └── UserPhoneAlreadyExistedException.java │ │ │ ├── handler │ │ │ ├── InternalRouterCheck.java │ │ │ ├── PermCodeRouterCheck.java │ │ │ ├── UserInfoStatusCheckImpl.java │ │ │ └── UserPathRouterCheck.java │ │ │ ├── param │ │ │ ├── auth │ │ │ │ └── LoginContentParam.java │ │ │ ├── client │ │ │ │ └── ClientParam.java │ │ │ ├── permission │ │ │ │ ├── PermCodeAssignParam.java │ │ │ │ ├── PermCodeParam.java │ │ │ │ ├── PermMenuAssignParam.java │ │ │ │ ├── PermMenuParam.java │ │ │ │ └── PermPathAssignParam.java │ │ │ ├── role │ │ │ │ └── RoleParam.java │ │ │ ├── upms │ │ │ │ ├── UserRoleBatchParam.java │ │ │ │ └── UserRoleParam.java │ │ │ └── user │ │ │ │ ├── RestartPwdBatchParam.java │ │ │ │ ├── RestartPwdParam.java │ │ │ │ ├── UserBaseInfoParam.java │ │ │ │ ├── UserInfoParam.java │ │ │ │ └── UserInfoQuery.java │ │ │ ├── result │ │ │ ├── auth │ │ │ │ └── LoginContentResult.java │ │ │ ├── captcha │ │ │ │ └── CaptchaDataResult.java │ │ │ ├── client │ │ │ │ └── ClientResult.java │ │ │ ├── permission │ │ │ │ ├── PermCodeResult.java │ │ │ │ ├── PermMenuResult.java │ │ │ │ ├── PermPathResult.java │ │ │ │ └── SimplePermPathResult.java │ │ │ ├── role │ │ │ │ └── RoleResult.java │ │ │ ├── upms │ │ │ │ └── RolePermCodeResult.java │ │ │ └── user │ │ │ │ ├── LoginAfterUserInfoResult.java │ │ │ │ ├── UserBaseInfoResult.java │ │ │ │ ├── UserExpandInfoResult.java │ │ │ │ ├── UserInfoResult.java │ │ │ │ └── UserWholeInfoResult.java │ │ │ └── service │ │ │ ├── client │ │ │ ├── ClientCodeService.java │ │ │ └── ClientService.java │ │ │ ├── permission │ │ │ ├── PermCodeService.java │ │ │ ├── PermMenuService.java │ │ │ ├── PermPathService.java │ │ │ └── PermPathSyncService.java │ │ │ ├── role │ │ │ ├── RoleQueryService.java │ │ │ └── RoleService.java │ │ │ ├── upms │ │ │ ├── RoleCodeService.java │ │ │ ├── RoleMenuService.java │ │ │ ├── RolePathService.java │ │ │ ├── UserRolePremService.java │ │ │ └── UserRoleService.java │ │ │ └── user │ │ │ ├── UserAdminService.java │ │ │ ├── UserInfoService.java │ │ │ └── UserQueryService.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── bootx-platform-starter │ ├── pom.xml │ ├── starter-audit-log │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── starter │ │ │ │ └── audit │ │ │ │ └── log │ │ │ │ ├── AuditLogAutoConfiguration.java │ │ │ │ ├── controller │ │ │ │ ├── LoginLogController.java │ │ │ │ └── OperateLogController.java │ │ │ │ ├── convert │ │ │ │ └── LogConvert.java │ │ │ │ ├── dao │ │ │ │ ├── LoginLogDbManager.java │ │ │ │ ├── LoginLogDbMapper.java │ │ │ │ ├── OperateLogDbManager.java │ │ │ │ └── OperateLogDbMapper.java │ │ │ │ ├── entity │ │ │ │ ├── LoginLogDb.java │ │ │ │ └── OperateLogDb.java │ │ │ │ ├── handler │ │ │ │ └── OperateLogAspectHandler.java │ │ │ │ ├── param │ │ │ │ ├── LoginLogParam.java │ │ │ │ ├── LoginLogQuery.java │ │ │ │ ├── OperateLogParam.java │ │ │ │ └── OperateLogQuery.java │ │ │ │ ├── properties │ │ │ │ └── AuditLogProperties.java │ │ │ │ ├── result │ │ │ │ ├── LoginLogResult.java │ │ │ │ └── OperateLogResult.java │ │ │ │ └── service │ │ │ │ ├── ip2region │ │ │ │ ├── IpRegion.java │ │ │ │ └── IpToRegionService.java │ │ │ │ └── log │ │ │ │ ├── LoginLogService.java │ │ │ │ └── OperateLogService.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── starter-auth │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── starter │ │ │ │ └── auth │ │ │ │ ├── AuthAutoConfiguration.java │ │ │ │ ├── authentication │ │ │ │ ├── AbstractAuthentication.java │ │ │ │ ├── GetAuthClientService.java │ │ │ │ └── UserInfoStatusCheck.java │ │ │ │ ├── cache │ │ │ │ ├── SessionCacheFilter.java │ │ │ │ └── SessionCacheLocal.java │ │ │ │ ├── code │ │ │ │ └── AuthLoginTypeCode.java │ │ │ │ ├── configuration │ │ │ │ ├── AuthProperties.java │ │ │ │ └── SaTokenConfigure.java │ │ │ │ ├── endpoint │ │ │ │ ├── TokenEndpoint.java │ │ │ │ └── TokenService.java │ │ │ │ ├── entity │ │ │ │ ├── AuthClient.java │ │ │ │ ├── AuthInfoResult.java │ │ │ │ ├── AuthLoginType.java │ │ │ │ └── LoginAuthContext.java │ │ │ │ ├── exception │ │ │ │ ├── ApplicationNotEnableException.java │ │ │ │ ├── ApplicationNotFoundException.java │ │ │ │ ├── ClientNotEnableException.java │ │ │ │ ├── ClientNotFoundException.java │ │ │ │ ├── LoginFailureException.java │ │ │ │ ├── NotLoginException.java │ │ │ │ ├── RouterCheckException.java │ │ │ │ └── UserNotFoundException.java │ │ │ │ ├── handler │ │ │ │ ├── LoginFailureHandler.java │ │ │ │ ├── LoginSuccessHandler.java │ │ │ │ ├── SaExceptionHandler.java │ │ │ │ └── SaRouteHandler.java │ │ │ │ ├── service │ │ │ │ ├── RouterCheck.java │ │ │ │ └── impl │ │ │ │ │ ├── IgnoreAdminUserRouterCheck.java │ │ │ │ │ └── IgnoreAnnotationRouterCheck.java │ │ │ │ └── util │ │ │ │ └── SecurityUtil.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── starter-cache │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── starter │ │ │ │ └── cache │ │ │ │ ├── CacheAutoConfiguration.java │ │ │ │ ├── configuration │ │ │ │ ├── BootxRedisCache.java │ │ │ │ ├── BootxRedisCacheManager.java │ │ │ │ └── CachingProperties.java │ │ │ │ ├── controller │ │ │ │ └── CacheClearController.java │ │ │ │ ├── handler │ │ │ │ └── CacheClearProcessor.java │ │ │ │ ├── manager │ │ │ │ └── CachingConfiguration.java │ │ │ │ └── service │ │ │ │ └── CacheClearService.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── starter-delay-queue │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── starter │ │ │ │ └── redis │ │ │ │ └── delay │ │ │ │ ├── DelayQueryAutoConfiguration.java │ │ │ │ ├── annotation │ │ │ │ ├── DelayEventListener.java │ │ │ │ ├── DelayJobEvent.java │ │ │ │ └── DelayJobProcessor.java │ │ │ │ ├── bean │ │ │ │ ├── DelayJob.java │ │ │ │ └── QueueJob.java │ │ │ │ ├── configuration │ │ │ │ └── DelayQueueProperties.java │ │ │ │ ├── constants │ │ │ │ └── JobStatus.java │ │ │ │ ├── container │ │ │ │ ├── DelayBucket.java │ │ │ │ ├── DelayJobPool.java │ │ │ │ ├── DelayQueue.java │ │ │ │ └── DelayTopic.java │ │ │ │ ├── controller │ │ │ │ └── DelayQueueController.java │ │ │ │ ├── result │ │ │ │ ├── BucketResult.java │ │ │ │ ├── DelayJobResult.java │ │ │ │ └── TopicResult.java │ │ │ │ ├── service │ │ │ │ ├── DelayJobService.java │ │ │ │ └── DelayQueueService.java │ │ │ │ └── timer │ │ │ │ ├── DelayJobHandler.java │ │ │ │ └── DelayQueueTimer.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ ├── starter-file │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── cn │ │ │ │ └── bootx │ │ │ │ └── platform │ │ │ │ └── starter │ │ │ │ └── file │ │ │ │ ├── FileAutoConfiguration.java │ │ │ │ ├── code │ │ │ │ └── FilePlatformTypeEnum.java │ │ │ │ ├── configuration │ │ │ │ ├── FileUploadProperties.java │ │ │ │ └── OssProperties.java │ │ │ │ ├── controller │ │ │ │ ├── FIleUpLoadController.java │ │ │ │ ├── FilePlatformController.java │ │ │ │ └── OssController.java │ │ │ │ ├── convert │ │ │ │ ├── FileConvert.java │ │ │ │ └── FilePlatformConvert.java │ │ │ │ ├── dao │ │ │ │ ├── FilePlatformManager.java │ │ │ │ ├── FilePlatformMapper.java │ │ │ │ ├── UploadFileManager.java │ │ │ │ └── UploadFileMapper.java │ │ │ │ ├── entity │ │ │ │ ├── FilePlatform.java │ │ │ │ └── UploadFileInfo.java │ │ │ │ ├── handler │ │ │ │ └── FileDetailRecordHandler.java │ │ │ │ ├── param │ │ │ │ ├── FilePlatformParam.java │ │ │ │ ├── FilePlatformQuery.java │ │ │ │ ├── FileUploadRequestParams.java │ │ │ │ └── UploadFileQuery.java │ │ │ │ ├── result │ │ │ │ ├── FilePlatformResult.java │ │ │ │ ├── FileUploadParamsResult.java │ │ │ │ └── UploadFileResult.java │ │ │ │ └── service │ │ │ │ ├── FilePlatformService.java │ │ │ │ ├── FileUploadService.java │ │ │ │ └── OssService.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ └── starter-quartz │ │ ├── pom.xml │ │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── bootx │ │ │ └── platform │ │ │ └── starter │ │ │ └── quartz │ │ │ ├── QuartzJobAutoConfiguration.java │ │ │ ├── code │ │ │ └── QuartzJobCode.java │ │ │ ├── configuration │ │ │ └── QuartzProperties.java │ │ │ ├── controller │ │ │ ├── QuartzJobController.java │ │ │ └── QuartzJobLogController.java │ │ │ ├── convert │ │ │ └── QuartzJobConvert.java │ │ │ ├── dao │ │ │ ├── QuartzJobLogManager.java │ │ │ ├── QuartzJobLogMapper.java │ │ │ ├── QuartzJobManager.java │ │ │ └── QuartzJobMapper.java │ │ │ ├── entity │ │ │ ├── QuartzJob.java │ │ │ └── QuartzJobLog.java │ │ │ ├── handler │ │ │ ├── JobLogAspectHandler.java │ │ │ └── QuartzJobScheduler.java │ │ │ ├── param │ │ │ ├── QuartzJobLogQuery.java │ │ │ └── QuartzJobParam.java │ │ │ ├── result │ │ │ ├── QuartzJobLogResult.java │ │ │ └── QuartzJobResult.java │ │ │ ├── service │ │ │ ├── QuartzJobLogService.java │ │ │ └── QuartzJobService.java │ │ │ └── task │ │ │ └── TestTask.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports └── pom.xml ├── daxpay-open-channel ├── daxpay-open-channel-alipay │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── dromara │ │ │ └── daxpay │ │ │ └── channel │ │ │ └── alipay │ │ │ ├── AlipayChannelApp.java │ │ │ ├── code │ │ │ └── AlipayCode.java │ │ │ ├── controller │ │ │ ├── allocation │ │ │ │ ├── AlipayAllocReceiverBindController.java │ │ │ │ └── AlipayAllocReceiverController.java │ │ │ └── payment │ │ │ │ ├── AlipayCallbackController.java │ │ │ │ ├── AlipayConfigController.java │ │ │ │ ├── AlipayNoticeReceiverController.java │ │ │ │ └── AlipayRedirectUrlController.java │ │ │ ├── convert │ │ │ ├── AlipayAllocReceiverBindConvert.java │ │ │ ├── AlipayAllocReceiverConvert.java │ │ │ └── AlipayConfigConvert.java │ │ │ ├── dao │ │ │ └── allocation │ │ │ │ ├── AlipayAllocReceiverBindManager.java │ │ │ │ └── AlipayAllocReceiverBindMapper.java │ │ │ ├── entity │ │ │ ├── allocation │ │ │ │ ├── AlipayAllocReceiver.java │ │ │ │ └── AlipayAllocReceiverBind.java │ │ │ └── config │ │ │ │ └── AliPayConfig.java │ │ │ ├── param │ │ │ ├── allocation │ │ │ │ ├── AlipayAllocReceiverBindParam.java │ │ │ │ ├── AlipayAllocReceiverBindQuery.java │ │ │ │ └── AlipayAllocReceiverParam.java │ │ │ ├── config │ │ │ │ └── AlipayConfigParam.java │ │ │ └── pay │ │ │ │ └── AlipayParam.java │ │ │ ├── result │ │ │ ├── allocation │ │ │ │ ├── AlipayAllocReceiverBindResult.java │ │ │ │ └── AlipayAllocReceiverResult.java │ │ │ ├── assist │ │ │ │ └── AlipayMccConstResult.java │ │ │ ├── config │ │ │ │ └── AlipayConfigResult.java │ │ │ ├── contract │ │ │ │ └── CreatContractResult.java │ │ │ └── notice │ │ │ │ └── AlipayOrderChangedResult.java │ │ │ ├── sdk │ │ │ └── contract │ │ │ │ ├── CreatContractParam.java │ │ │ │ └── QueryContractParam.java │ │ │ ├── service │ │ │ ├── allocation │ │ │ │ ├── AlipayAllocReceiverBindService.java │ │ │ │ └── AlipayAllocReceiverService.java │ │ │ └── payment │ │ │ │ ├── allocation │ │ │ │ └── AlipayAllocationService.java │ │ │ │ ├── callback │ │ │ │ └── AlipayCallbackService.java │ │ │ │ ├── close │ │ │ │ └── AlipayCloseService.java │ │ │ │ ├── config │ │ │ │ └── AlipayConfigService.java │ │ │ │ ├── extra │ │ │ │ └── AlipayAuthService.java │ │ │ │ ├── notice │ │ │ │ ├── AlipayNoticeReceiverService.java │ │ │ │ └── AlipayTransferNoticeService.java │ │ │ │ ├── pay │ │ │ │ └── AliPayService.java │ │ │ │ ├── redirect │ │ │ │ └── AlipayRedirectUrlService.java │ │ │ │ ├── refund │ │ │ │ └── AlipayRefundService.java │ │ │ │ ├── sync │ │ │ │ ├── AlipayRefundSyncService.java │ │ │ │ ├── AlipaySyncService.java │ │ │ │ └── AlipayTransferSyncService.java │ │ │ │ └── transfer │ │ │ │ └── AlipayTransferService.java │ │ │ └── strategy │ │ │ ├── merchant │ │ │ ├── AliPayStrategy.java │ │ │ ├── AliPaySyncTransferStrategy.java │ │ │ ├── AlipayAllocationStrategy.java │ │ │ ├── AlipayAuthStrategy.java │ │ │ ├── AlipayCloseStrategy.java │ │ │ ├── AlipayGatewayPayStrategy.java │ │ │ ├── AlipayRefundStrategy.java │ │ │ ├── AlipaySyncOrderStrategy.java │ │ │ ├── AlipaySyncRefundStrategy.java │ │ │ └── AlipayTransferStrategy.java │ │ │ └── sub │ │ │ ├── AlipaySubAllocationStrategy.java │ │ │ ├── AlipaySubAuthStrategy.java │ │ │ ├── AlipaySubCloseStrategy.java │ │ │ ├── AlipaySubGatewayPayStrategy.java │ │ │ ├── AlipaySubPayStrategy.java │ │ │ ├── AlipaySubRefundStrategy.java │ │ │ ├── AlipaySubSyncOrderStrategy.java │ │ │ └── AlipaySubSyncRefundStrategy.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── daxpay-open-channel-union │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── dromara │ │ │ └── daxpay │ │ │ └── channel │ │ │ └── union │ │ │ ├── UnionPayChannelApp.java │ │ │ ├── code │ │ │ └── UnionPayCode.java │ │ │ ├── controller │ │ │ ├── UnionPayCallbackController.java │ │ │ ├── UnionPayConfigController.java │ │ │ └── UnionPayRedirectUrlController.java │ │ │ ├── convert │ │ │ └── UnionPayConfigConvert.java │ │ │ ├── entity │ │ │ └── config │ │ │ │ └── UnionPayConfig.java │ │ │ ├── param │ │ │ ├── config │ │ │ │ └── UnionPayConfigParam.java │ │ │ └── pay │ │ │ │ └── UnionPayParam.java │ │ │ ├── result │ │ │ └── UnionPayConfigResult.java │ │ │ └── service │ │ │ └── config │ │ │ └── UnionPayConfigService.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── daxpay-open-channel-wechat │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ ├── com │ │ │ └── github │ │ │ │ └── binarywang │ │ │ │ └── wxpay │ │ │ │ └── config │ │ │ │ └── WxPayConfig.java │ │ └── org │ │ │ └── dromara │ │ │ └── daxpay │ │ │ └── channel │ │ │ └── wechat │ │ │ ├── WechatPayChannelApp.java │ │ │ ├── code │ │ │ └── WechatPayCode.java │ │ │ ├── controller │ │ │ ├── allocation │ │ │ │ ├── WechatAllocReceiverBindController.java │ │ │ │ └── WechatAllocReceiverController.java │ │ │ └── payment │ │ │ │ ├── WechatPayCallbackController.java │ │ │ │ └── WechatPayConfigController.java │ │ │ ├── convert │ │ │ ├── WechatAllocReceiverBindConvert.java │ │ │ ├── WechatAllocReceiverConvert.java │ │ │ └── WechatPayConfigConvert.java │ │ │ ├── dao │ │ │ └── allocation │ │ │ │ ├── WechatAllocReceiverBindManager.java │ │ │ │ └── WechatAllocReceiverBindMapper.java │ │ │ ├── entity │ │ │ ├── allocation │ │ │ │ ├── WechatAllocReceiver.java │ │ │ │ └── WechatAllocReceiverBind.java │ │ │ └── config │ │ │ │ └── WechatPayConfig.java │ │ │ ├── enums │ │ │ ├── WechatAllocReceiverEnum.java │ │ │ ├── WechatAllocStatusEnum.java │ │ │ ├── WechatAuthTypeEnum.java │ │ │ └── WechatRefundStatusEnum.java │ │ │ ├── param │ │ │ ├── allocation │ │ │ │ ├── WechatAllocReceiverBindParam.java │ │ │ │ ├── WechatAllocReceiverBindQuery.java │ │ │ │ └── WechatAllocReceiverParam.java │ │ │ ├── clode │ │ │ │ └── WxPayPartnerOrderReverseV3Request.java │ │ │ ├── config │ │ │ │ └── WechatPayConfigParam.java │ │ │ ├── pay │ │ │ │ ├── WechatPayParam.java │ │ │ │ └── WxPayPartnerCodepayRequest.java │ │ │ └── transfer │ │ │ │ └── TransferCreateV3Request.java │ │ │ ├── result │ │ │ ├── allocation │ │ │ │ ├── WechatAllocReceiverBindResult.java │ │ │ │ └── WechatAllocReceiverResult.java │ │ │ ├── assist │ │ │ │ ├── WechatMccConstResult.java │ │ │ │ └── WxTokenAndOpenIdResult.java │ │ │ ├── config │ │ │ │ └── WechatPayConfigResult.java │ │ │ ├── pay │ │ │ │ └── WxPayCodepayResult.java │ │ │ └── transfer │ │ │ │ └── WxPayTransferBatchesNotifyV3Result.java │ │ │ ├── service │ │ │ ├── allocation │ │ │ │ ├── WechatAllocReceiverBindService.java │ │ │ │ └── WechatAllocReceiverService.java │ │ │ └── payment │ │ │ │ ├── allocation │ │ │ │ ├── WeChatPayAllocationV2Service.java │ │ │ │ ├── WeChatPayAllocationV3Service.java │ │ │ │ ├── WeChatPaySubAllocationV2Service.java │ │ │ │ ├── WeChatPaySubAllocationV3Service.java │ │ │ │ └── receiver │ │ │ │ │ ├── WechatPayAllocReceiverV2Service.java │ │ │ │ │ ├── WechatPayAllocReceiverV3Service.java │ │ │ │ │ ├── WechatPaySubAllocReceiverV2Service.java │ │ │ │ │ └── WechatPaySubAllocReceiverV3Service.java │ │ │ │ ├── callback │ │ │ │ ├── WechatPayCallbackService.java │ │ │ │ ├── WechatRefundCallbackService.java │ │ │ │ └── WechatTransferCallbackService.java │ │ │ │ ├── close │ │ │ │ ├── WechatPayCloseV2Service.java │ │ │ │ ├── WechatPayCloseV3Service.java │ │ │ │ ├── WechatPaySubCloseV2Service.java │ │ │ │ └── WechatPaySubCloseV3Service.java │ │ │ │ ├── config │ │ │ │ └── WechatPayConfigService.java │ │ │ │ ├── pay │ │ │ │ ├── isv │ │ │ │ │ ├── WechatPaySubService.java │ │ │ │ │ ├── WechatPaySubV2Service.java │ │ │ │ │ └── WechatPaySubV3Service.java │ │ │ │ └── merchant │ │ │ │ │ ├── WechatPayService.java │ │ │ │ │ ├── WechatPayV2Service.java │ │ │ │ │ └── WechatPayV3Service.java │ │ │ │ ├── refund │ │ │ │ ├── WechatRefundV2Service.java │ │ │ │ ├── WechatRefundV3Service.java │ │ │ │ ├── WechatSubRefundV2Service.java │ │ │ │ └── WechatSubRefundV3Service.java │ │ │ │ ├── sync │ │ │ │ ├── pay │ │ │ │ │ ├── WechatPaySyncV2Service.java │ │ │ │ │ ├── WechatPaySyncV3Service.java │ │ │ │ │ ├── WechatSubPaySyncV2Service.java │ │ │ │ │ └── WechatSubPaySyncV3Service.java │ │ │ │ ├── refund │ │ │ │ │ ├── WechatRefundSyncV2Service.java │ │ │ │ │ ├── WechatRefundSyncV3Service.java │ │ │ │ │ ├── WechatSubRefundSyncV2Service.java │ │ │ │ │ └── WechatSubRefundSyncV3Service.java │ │ │ │ └── transfer │ │ │ │ │ └── WechatTransferSyncV3Service.java │ │ │ │ └── transfer │ │ │ │ └── WechatTransferV3Service.java │ │ │ ├── strategy │ │ │ ├── merchant │ │ │ │ ├── WechatAllocationStrategy.java │ │ │ │ ├── WechatAuthStrategy.java │ │ │ │ ├── WechatCloseStrategy.java │ │ │ │ ├── WechatGatewayPayStrategy.java │ │ │ │ ├── WechatPayStrategy.java │ │ │ │ ├── WechatRefundStrategy.java │ │ │ │ ├── WechatSyncPayStrategy.java │ │ │ │ ├── WechatSyncRefundStrategy.java │ │ │ │ ├── WechatSyncTransferStrategy.java │ │ │ │ └── WechatTransferStrategy.java │ │ │ └── sub │ │ │ │ ├── WechatSubAllocationStrategy.java │ │ │ │ ├── WechatSubAuthStrategy.java │ │ │ │ ├── WechatSubCloseStrategy.java │ │ │ │ ├── WechatSubGatewayPayStrategy.java │ │ │ │ ├── WechatSubPayStrategy.java │ │ │ │ ├── WechatSubRefundStrategy.java │ │ │ │ ├── WechatSubSyncPayStrategy.java │ │ │ │ └── WechatSubSyncRefundStrategy.java │ │ │ └── util │ │ │ └── WechatPayUtil.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports └── pom.xml ├── daxpay-open-sdk ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── dromara │ │ └── daxpay │ │ └── sdk │ │ ├── code │ │ ├── ChannelEnum.java │ │ ├── DaxPayErrorCode.java │ │ ├── GatewayPayTypeEnum.java │ │ ├── PayAllocStatusEnum.java │ │ ├── PayLimitPayEnum.java │ │ ├── PayMethodEnum.java │ │ ├── PayRefundStatusEnum.java │ │ ├── PayStatusEnum.java │ │ ├── RefundStatusEnum.java │ │ ├── SignTypeEnum.java │ │ ├── TransferPayeeTypeEnum.java │ │ └── TransferStatusEnum.java │ │ ├── net │ │ ├── DaxPayConfig.java │ │ ├── DaxPayKit.java │ │ └── DaxPayRequest.java │ │ ├── param │ │ ├── channel │ │ │ ├── AdaPayParam.java │ │ │ ├── AlipayParam.java │ │ │ ├── UnionPayParam.java │ │ │ └── WechatPayParam.java │ │ └── trade │ │ │ ├── pay │ │ │ ├── AggregateBarPayParam.java │ │ │ ├── GatewayPayParam.java │ │ │ ├── PayCloseParam.java │ │ │ ├── PayParam.java │ │ │ └── QueryPayParam.java │ │ │ ├── refund │ │ │ ├── QueryRefundParam.java │ │ │ └── RefundParam.java │ │ │ └── transfer │ │ │ ├── QueryTransferParam.java │ │ │ └── TransferParam.java │ │ ├── response │ │ ├── DaxNoticeResult.java │ │ └── DaxResult.java │ │ ├── result │ │ ├── notice │ │ │ ├── AllocDetailNoticeResult.java │ │ │ ├── AllocNoticeResult.java │ │ │ ├── PayNoticeResult.java │ │ │ └── RefundNoticeResult.java │ │ └── trade │ │ │ ├── pay │ │ │ ├── GatewayPayUrlResult.java │ │ │ ├── PayOrderResult.java │ │ │ └── PayResult.java │ │ │ ├── refund │ │ │ ├── RefundOrderResult.java │ │ │ └── RefundResult.java │ │ │ └── transfer │ │ │ ├── TransferOrderResult.java │ │ │ └── TransferResult.java │ │ └── util │ │ ├── JsonUtil.java │ │ └── PaySignUtil.java │ └── test │ └── java │ └── org │ └── dromara │ └── daxpay │ └── sdk │ ├── notice │ └── NoticeTest.java │ ├── query │ ├── QueryPayOrderTest.java │ ├── QueryRefundOrderTest.java │ └── QueryTransferOrderTest.java │ ├── trade │ ├── CloseOrderTest.java │ ├── GatewayPayTest.java │ ├── PayOrderTest.java │ ├── RefundOrderTest.java │ └── TransferOrderTest.java │ └── util │ └── ParamSignTest.java ├── daxpay-open-server ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── dromara │ │ └── daxpay │ │ └── server │ │ ├── DaxpayStart.java │ │ └── service │ │ └── ClientCodeServiceImpl.java │ └── resources │ ├── application-dev.yml │ ├── application-test.yml │ ├── application.yml │ ├── banner.txt │ └── logback-spring.xml ├── daxpay-open ├── daxpay-open-controller │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── dromara │ │ │ └── daxpay │ │ │ └── controller │ │ │ ├── DaxpayPayControllerApp.java │ │ │ ├── allocation │ │ │ ├── AllocConfigController.java │ │ │ ├── AllocGroupController.java │ │ │ ├── AllocOrderController.java │ │ │ └── AllocReceiverController.java │ │ │ ├── assist │ │ │ └── TerminalDeviceController.java │ │ │ ├── common │ │ │ ├── ChannelAuthAssistController.java │ │ │ ├── DevelopTradeController.java │ │ │ ├── IndexTradeReportController.java │ │ │ ├── MchAppController.java │ │ │ └── TestController.java │ │ │ ├── config │ │ │ ├── ChannelConfigController.java │ │ │ ├── MerchantNotifyConfigController.java │ │ │ └── PlatformConfigController.java │ │ │ ├── constant │ │ │ ├── ApiConstController.java │ │ │ ├── ChannelConstController.java │ │ │ ├── MerchantNotifyConstController.java │ │ │ └── MethodConstController.java │ │ │ ├── gateway │ │ │ ├── AggregateConfigController.java │ │ │ ├── CashierCodeConfigController.java │ │ │ ├── CashierCodeController.java │ │ │ ├── CashierConfigController.java │ │ │ ├── ChannelAuthController.java │ │ │ ├── GatewayPayConfigController.java │ │ │ ├── GatewayPayController.java │ │ │ ├── TestCallbackController.java │ │ │ ├── UniAllocationController.java │ │ │ ├── UniQueryController.java │ │ │ ├── UniSyncController.java │ │ │ └── UniTradeController.java │ │ │ ├── notice │ │ │ ├── MerchantCallbackController.java │ │ │ └── MerchantNotifyController.java │ │ │ ├── order │ │ │ ├── PayOrderController.java │ │ │ ├── RefundOrderController.java │ │ │ └── TransferOrderController.java │ │ │ └── record │ │ │ ├── CallbackRecordController.java │ │ │ ├── PayCloseRecordController.java │ │ │ ├── TradeFlowRecordController.java │ │ │ └── TradeSyncRecordController.java │ │ └── resources │ │ └── META-INF │ │ └── spring │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports ├── daxpay-open-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── dromara │ │ └── daxpay │ │ └── core │ │ ├── code │ │ ├── DaxPayErrorCode.java │ │ └── MerchantTypeGroup.java │ │ ├── context │ │ ├── CallbackLocal.java │ │ ├── MchAppLocal.java │ │ ├── PaymentClientLocal.java │ │ └── PaymentContext.java │ │ ├── enums │ │ ├── AggregateBarPayTypeEnum.java │ │ ├── AggregatePayTypeEnum.java │ │ ├── AllocDetailResultEnum.java │ │ ├── AllocOrderResultEnum.java │ │ ├── AllocOrderStatusEnum.java │ │ ├── AllocReceiverTypeEnum.java │ │ ├── AllocRelationTypeEnum.java │ │ ├── AllocationResultEnum.java │ │ ├── AllocationStatusEnum.java │ │ ├── CallbackStatusEnum.java │ │ ├── CashierCodeTypeEnum.java │ │ ├── ChannelAuthStatusEnum.java │ │ ├── ChannelAuthTypeEnum.java │ │ ├── ChannelEnum.java │ │ ├── CloseTypeEnum.java │ │ ├── GatewayCallTypeEnum.java │ │ ├── GatewayCashierTypeEnum.java │ │ ├── GatewayPayEnvTypeEnum.java │ │ ├── GatewayPayTypeEnum.java │ │ ├── MchAppStatusEnum.java │ │ ├── MerchantNotifyTypeEnum.java │ │ ├── MerchantStatusEnum.java │ │ ├── MerchantTypeEnum.java │ │ ├── PayAllocStatusEnum.java │ │ ├── PayLimitPayEnum.java │ │ ├── PayMethodEnum.java │ │ ├── PayRefundStatusEnum.java │ │ ├── PayStatusEnum.java │ │ ├── RefundStatusEnum.java │ │ ├── SignTypeEnum.java │ │ ├── TerminalDeviceTypeEnum.java │ │ ├── TradeFlowTypeEnum.java │ │ ├── TradeStatusEnum.java │ │ ├── TradeTypeEnum.java │ │ ├── TransferPayeeTypeEnum.java │ │ └── TransferStatusEnum.java │ │ ├── exception │ │ ├── AmountExceedLimitException.java │ │ ├── ChannelNotEnableException.java │ │ ├── ChannelNotExistException.java │ │ ├── ConfigErrorException.java │ │ ├── ConfigNotEnableException.java │ │ ├── ConfigNotExistException.java │ │ ├── DataErrorException.java │ │ ├── MethodNotEnableException.java │ │ ├── MethodNotExistException.java │ │ ├── OperationFailException.java │ │ ├── OperationProcessingException.java │ │ ├── OperationUnsupportedException.java │ │ ├── PayFailureException.java │ │ ├── StatusNotExistException.java │ │ ├── SystemUnknownErrorException.java │ │ ├── TradeClosedException.java │ │ ├── TradeFailException.java │ │ ├── TradeNotExistException.java │ │ ├── TradeProcessingException.java │ │ ├── TradeStatusErrorException.java │ │ ├── UnsupportedAbilityException.java │ │ └── VerifySignFailedException.java │ │ ├── param │ │ ├── PaymentCommonParam.java │ │ ├── aggregate │ │ │ ├── AggregateBarPayParam.java │ │ │ └── AggregatePayParam.java │ │ ├── allocation │ │ │ ├── order │ │ │ │ ├── AllocFinishParam.java │ │ │ │ ├── AllocSyncParam.java │ │ │ │ ├── AllocationParam.java │ │ │ │ └── QueryAllocOrderParam.java │ │ │ └── receiver │ │ │ │ ├── AllocReceiverAddParam.java │ │ │ │ ├── AllocReceiverQueryParam.java │ │ │ │ └── AllocReceiverRemoveParam.java │ │ ├── assist │ │ │ ├── AuthCodeParam.java │ │ │ ├── GenerateAuthUrlParam.java │ │ │ └── QueryAuthParam.java │ │ ├── gateway │ │ │ ├── GatewayAuthCodeParam.java │ │ │ ├── GatewayAuthUrlParam.java │ │ │ ├── GatewayCashierBarPayParam.java │ │ │ ├── GatewayCashierCodeAuthParam.java │ │ │ ├── GatewayCashierCodeAuthUrlParam.java │ │ │ ├── GatewayCashierCodePayParam.java │ │ │ ├── GatewayCashierPayParam.java │ │ │ ├── GatewayOrderAndConfigParam.java │ │ │ └── GatewayPayParam.java │ │ └── trade │ │ │ ├── pay │ │ │ ├── PayCloseParam.java │ │ │ ├── PayParam.java │ │ │ ├── PaySyncParam.java │ │ │ └── QueryPayParam.java │ │ │ ├── refund │ │ │ ├── QueryRefundParam.java │ │ │ ├── RefundParam.java │ │ │ └── RefundSyncParam.java │ │ │ └── transfer │ │ │ ├── QueryTransferParam.java │ │ │ ├── TransferParam.java │ │ │ └── TransferSyncParam.java │ │ ├── result │ │ ├── DaxNoticeResult.java │ │ ├── DaxResult.java │ │ ├── allocation │ │ │ ├── AllocSyncResult.java │ │ │ ├── AllocationResult.java │ │ │ ├── order │ │ │ │ ├── AllocDetailResult.java │ │ │ │ └── AllocOrderResult.java │ │ │ └── receiver │ │ │ │ └── AllocReceiverResult.java │ │ ├── assist │ │ │ ├── AuthResult.java │ │ │ ├── AuthUrlResult.java │ │ │ └── OpenIdResult.java │ │ └── trade │ │ │ ├── pay │ │ │ ├── PayOrderResult.java │ │ │ ├── PayResult.java │ │ │ └── PaySyncResult.java │ │ │ ├── refund │ │ │ ├── RefundOrderResult.java │ │ │ ├── RefundResult.java │ │ │ └── RefundSyncResult.java │ │ │ └── transfer │ │ │ ├── TransferOrderResult.java │ │ │ ├── TransferResult.java │ │ │ └── TransferSyncResult.java │ │ └── util │ │ ├── DaxRes.java │ │ ├── PaySignUtil.java │ │ ├── PayUtil.java │ │ └── TradeNoGenerateUtil.java ├── daxpay-open-service │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── dromara │ │ │ └── daxpay │ │ │ └── service │ │ │ ├── DaxpayPayServiceApp.java │ │ │ ├── bo │ │ │ ├── allocation │ │ │ │ ├── AllocStartResultBo.java │ │ │ │ └── AllocSyncResultBo.java │ │ │ ├── sync │ │ │ │ ├── PaySyncResultBo.java │ │ │ │ ├── RefundSyncResultBo.java │ │ │ │ └── TransferSyncResultBo.java │ │ │ └── trade │ │ │ │ ├── PayResultBo.java │ │ │ │ ├── RefundResultBo.java │ │ │ │ └── TransferResultBo.java │ │ │ ├── code │ │ │ └── DaxPayCode.java │ │ │ ├── common │ │ │ ├── anno │ │ │ │ └── PaymentVerify.java │ │ │ ├── aop │ │ │ │ └── PaymentVerifyAspect.java │ │ │ ├── cache │ │ │ │ ├── ChannelConfigCacheService.java │ │ │ │ └── MchAppCacheService.java │ │ │ ├── entity │ │ │ │ ├── MchAppBaseEntity.java │ │ │ │ └── MchAppRecordEntity.java │ │ │ ├── filter │ │ │ │ └── PaymentContextLocalFilter.java │ │ │ ├── local │ │ │ │ ├── MchContextLocal.java │ │ │ │ └── PaymentContextLocal.java │ │ │ ├── param │ │ │ │ └── MchQuery.java │ │ │ ├── properties │ │ │ │ └── DaxPayProperties.java │ │ │ ├── result │ │ │ │ └── MchResult.java │ │ │ └── tenant │ │ │ │ └── MchTenantMetaObjectHandler.java │ │ │ ├── convert │ │ │ ├── allocation │ │ │ │ ├── AllocConfigConvert.java │ │ │ │ ├── AllocGroupConvert.java │ │ │ │ ├── AllocGroupReceiverConvert.java │ │ │ │ ├── AllocOrderConvert.java │ │ │ │ └── AllocReceiverConvert.java │ │ │ ├── assist │ │ │ │ └── TerminalDeviceConvert.java │ │ │ ├── config │ │ │ │ ├── ChannelConfigConvert.java │ │ │ │ └── PlatformConfigConvert.java │ │ │ ├── constant │ │ │ │ ├── ApiConstConvert.java │ │ │ │ ├── ChannelConstConvert.java │ │ │ │ ├── MerchantNotifyConstConvert.java │ │ │ │ └── MethodConstConvert.java │ │ │ ├── gateway │ │ │ │ ├── AggregateBarPayConfigConvert.java │ │ │ │ ├── AggregatePayConfigConvert.java │ │ │ │ ├── CashierCodeConfigConvert.java │ │ │ │ ├── CashierCodeItemConfigConvert.java │ │ │ │ ├── CashierGroupConfigConvert.java │ │ │ │ ├── CashierItemConfigConvert.java │ │ │ │ └── GatewayPayConfigConvert.java │ │ │ ├── merchant │ │ │ │ └── MchAppConvert.java │ │ │ ├── notice │ │ │ │ ├── MerchantCallbackConvert.java │ │ │ │ └── MerchantNotifyConvert.java │ │ │ ├── order │ │ │ │ ├── pay │ │ │ │ │ └── PayOrderConvert.java │ │ │ │ ├── refund │ │ │ │ │ └── RefundOrderConvert.java │ │ │ │ └── transfer │ │ │ │ │ └── TransferOrderConvert.java │ │ │ └── record │ │ │ │ ├── PayCloseRecordConvert.java │ │ │ │ ├── TradeCallbackRecordConvert.java │ │ │ │ ├── TradeFlowRecordConvert.java │ │ │ │ └── TradeSyncRecordConvert.java │ │ │ ├── dao │ │ │ ├── allocation │ │ │ │ ├── AllocConfigManager.java │ │ │ │ ├── AllocConfigMapper.java │ │ │ │ ├── order │ │ │ │ │ ├── AllocDetailManager.java │ │ │ │ │ ├── AllocDetailMapper.java │ │ │ │ │ ├── AllocOrderManager.java │ │ │ │ │ └── AllocOrderMapper.java │ │ │ │ └── receiver │ │ │ │ │ ├── AllocGroupManager.java │ │ │ │ │ ├── AllocGroupMapper.java │ │ │ │ │ ├── AllocGroupReceiverManager.java │ │ │ │ │ ├── AllocGroupReceiverMapper.java │ │ │ │ │ ├── AllocReceiverManager.java │ │ │ │ │ └── AllocReceiverMapper.java │ │ │ ├── assist │ │ │ │ ├── TerminalDeviceManager.java │ │ │ │ └── TerminalDeviceMapper.java │ │ │ ├── config │ │ │ │ ├── ChannelConfigManager.java │ │ │ │ ├── ChannelConfigMapper.java │ │ │ │ ├── MerchantNotifyConfigManager.java │ │ │ │ ├── MerchantNotifyConfigMapper.java │ │ │ │ ├── PlatformConfigManager.java │ │ │ │ └── PlatformConfigMapper.java │ │ │ ├── constant │ │ │ │ ├── ApiConstManager.java │ │ │ │ ├── ApiConstMapper.java │ │ │ │ ├── ChannelConstManager.java │ │ │ │ ├── ChannelConstMapper.java │ │ │ │ ├── MerchantNotifyConstManager.java │ │ │ │ ├── MerchantNotifyConstMapper.java │ │ │ │ ├── MethodConstManager.java │ │ │ │ └── MethodConstMapper.java │ │ │ ├── gateway │ │ │ │ ├── AggregateBarPayConfigManager.java │ │ │ │ ├── AggregateBarPayConfigMapper.java │ │ │ │ ├── AggregatePayConfigManager.java │ │ │ │ ├── AggregatePayConfigMapper.java │ │ │ │ ├── CashierCodeConfigManager.java │ │ │ │ ├── CashierCodeConfigMapper.java │ │ │ │ ├── CashierCodeItemConfigManager.java │ │ │ │ ├── CashierCodeItemConfigMapper.java │ │ │ │ ├── CashierGroupConfigManager.java │ │ │ │ ├── CashierGroupConfigMapper.java │ │ │ │ ├── CashierItemConfigManager.java │ │ │ │ ├── CashierItemConfigMapper.java │ │ │ │ ├── GatewayPayConfigManager.java │ │ │ │ └── GatewayPayConfigMapper.java │ │ │ ├── merchant │ │ │ │ ├── MchAppManager.java │ │ │ │ └── MchAppMapper.java │ │ │ ├── notice │ │ │ │ ├── callback │ │ │ │ │ ├── MerchantCallbackRecordManager.java │ │ │ │ │ ├── MerchantCallbackRecordMapper.java │ │ │ │ │ ├── MerchantCallbackTaskManager.java │ │ │ │ │ └── MerchantCallbackTaskMapper.java │ │ │ │ └── notify │ │ │ │ │ ├── MerchantNotifyRecordManager.java │ │ │ │ │ ├── MerchantNotifyRecordMapper.java │ │ │ │ │ ├── MerchantNotifyTaskManager.java │ │ │ │ │ └── MerchantNotifyTaskMapper.java │ │ │ ├── order │ │ │ │ ├── pay │ │ │ │ │ ├── PayOrderManager.java │ │ │ │ │ └── PayOrderMapper.java │ │ │ │ ├── refund │ │ │ │ │ ├── RefundOrderManager.java │ │ │ │ │ └── RefundOrderMapper.java │ │ │ │ └── transfer │ │ │ │ │ ├── TransferOrderManager.java │ │ │ │ │ └── TransferOrderMapper.java │ │ │ ├── record │ │ │ │ ├── callback │ │ │ │ │ ├── TradeCallbackRecordManager.java │ │ │ │ │ └── TradeCallbackRecordMapper.java │ │ │ │ ├── close │ │ │ │ │ ├── PayCloseRecordManager.java │ │ │ │ │ └── PayCloseRecordMapper.java │ │ │ │ ├── flow │ │ │ │ │ ├── TradeFlowRecordManager.java │ │ │ │ │ └── TradeFlowRecordMapper.java │ │ │ │ └── sync │ │ │ │ │ ├── TradeSyncRecordManager.java │ │ │ │ │ └── TradeSyncRecordMapper.java │ │ │ └── report │ │ │ │ ├── IndexMerchantReportMapper.java │ │ │ │ └── IndexTradeReportMapper.java │ │ │ ├── entity │ │ │ ├── allocation │ │ │ │ ├── AllocConfig.java │ │ │ │ ├── order │ │ │ │ │ ├── AllocAndDetail.java │ │ │ │ │ ├── AllocDetail.java │ │ │ │ │ └── AllocOrder.java │ │ │ │ └── receiver │ │ │ │ │ ├── AllocGroup.java │ │ │ │ │ ├── AllocGroupReceiver.java │ │ │ │ │ └── AllocReceiver.java │ │ │ ├── assist │ │ │ │ └── TerminalDevice.java │ │ │ ├── config │ │ │ │ ├── ChannelConfig.java │ │ │ │ ├── MerchantNotifyConfig.java │ │ │ │ └── PlatformConfig.java │ │ │ ├── constant │ │ │ │ ├── ApiConst.java │ │ │ │ ├── ChannelConst.java │ │ │ │ ├── MerchantNotifyConst.java │ │ │ │ └── PayMethodConst.java │ │ │ ├── gateway │ │ │ │ ├── AggregateBarPayConfig.java │ │ │ │ ├── AggregatePayConfig.java │ │ │ │ ├── CashierCodeConfig.java │ │ │ │ ├── CashierCodeItemConfig.java │ │ │ │ ├── CashierGroupConfig.java │ │ │ │ ├── CashierItemConfig.java │ │ │ │ └── GatewayPayConfig.java │ │ │ ├── merchant │ │ │ │ └── MchApp.java │ │ │ ├── notice │ │ │ │ ├── callback │ │ │ │ │ ├── MerchantCallbackRecord.java │ │ │ │ │ └── MerchantCallbackTask.java │ │ │ │ └── notify │ │ │ │ │ ├── MerchantNotifyRecord.java │ │ │ │ │ └── MerchantNotifyTask.java │ │ │ ├── order │ │ │ │ ├── pay │ │ │ │ │ └── PayOrder.java │ │ │ │ ├── refund │ │ │ │ │ └── RefundOrder.java │ │ │ │ └── transfer │ │ │ │ │ └── TransferOrder.java │ │ │ └── record │ │ │ │ ├── callback │ │ │ │ └── TradeCallbackRecord.java │ │ │ │ ├── close │ │ │ │ └── PayCloseRecord.java │ │ │ │ ├── flow │ │ │ │ └── TradeFlowRecord.java │ │ │ │ └── sync │ │ │ │ └── TradeSyncRecord.java │ │ │ ├── enums │ │ │ ├── NoticeSendTypeEnum.java │ │ │ └── NotifyContentTypeEnum.java │ │ │ ├── event │ │ │ ├── AllocationEventService.java │ │ │ ├── MerchantNoticeEventService.java │ │ │ └── TradeOrderEventService.java │ │ │ ├── param │ │ │ ├── allocation │ │ │ │ ├── AllocConfigParam.java │ │ │ │ ├── group │ │ │ │ │ ├── AllocGroupBindParam.java │ │ │ │ │ ├── AllocGroupParam.java │ │ │ │ │ ├── AllocGroupQuery.java │ │ │ │ │ ├── AllocGroupReceiverParam.java │ │ │ │ │ └── AllocGroupUnbindParam.java │ │ │ │ └── receiver │ │ │ │ │ └── AllocReceiverQuery.java │ │ │ ├── config │ │ │ │ ├── NotifySubscribeParam.java │ │ │ │ └── PlatformConfigParam.java │ │ │ ├── constant │ │ │ │ ├── ApiConstQuery.java │ │ │ │ ├── ChannelConstQuery.java │ │ │ │ ├── MerchantNotifyConstQuery.java │ │ │ │ └── MethodConstQuery.java │ │ │ ├── gateway │ │ │ │ ├── AggregateBarPayConfigParam.java │ │ │ │ ├── AggregatePayConfigParam.java │ │ │ │ ├── CashierCodeConfigParam.java │ │ │ │ ├── CashierCodeItemConfigParam.java │ │ │ │ ├── CashierGroupConfigParam.java │ │ │ │ ├── CashierItemConfigParam.java │ │ │ │ └── GatewayPayConfigParam.java │ │ │ ├── merchant │ │ │ │ ├── MchAppParam.java │ │ │ │ └── MchAppQuery.java │ │ │ ├── notice │ │ │ │ ├── callback │ │ │ │ │ └── MerchantCallbackTaskQuery.java │ │ │ │ └── notify │ │ │ │ │ └── MerchantNotifyTaskQuery.java │ │ │ ├── order │ │ │ │ ├── allocation │ │ │ │ │ └── AllocOrderQuery.java │ │ │ │ ├── pay │ │ │ │ │ └── PayOrderQuery.java │ │ │ │ ├── refund │ │ │ │ │ ├── RefundCreateParam.java │ │ │ │ │ └── RefundOrderQuery.java │ │ │ │ └── transfer │ │ │ │ │ └── TransferOrderQuery.java │ │ │ ├── record │ │ │ │ ├── PayCloseRecordQuery.java │ │ │ │ ├── TradeCallbackRecordQuery.java │ │ │ │ ├── TradeFlowRecordQuery.java │ │ │ │ └── TradeSyncRecordQuery.java │ │ │ ├── report │ │ │ │ └── TradeReportQuery.java │ │ │ └── termina │ │ │ │ ├── TerminalDeviceParam.java │ │ │ │ └── TerminalDeviceQuery.java │ │ │ ├── result │ │ │ ├── allocation │ │ │ │ ├── AllocConfigResult.java │ │ │ │ ├── order │ │ │ │ │ ├── AllocDetailVo.java │ │ │ │ │ └── AllocOrderVo.java │ │ │ │ └── receiver │ │ │ │ │ ├── AllocGroupReceiverVo.java │ │ │ │ │ ├── AllocGroupVo.java │ │ │ │ │ └── AllocReceiverVo.java │ │ │ ├── config │ │ │ │ ├── ChannelConfigResult.java │ │ │ │ ├── MerchantNotifyConfigResult.java │ │ │ │ └── PlatformConfigResult.java │ │ │ ├── constant │ │ │ │ ├── ApiConstResult.java │ │ │ │ ├── ChannelConstResult.java │ │ │ │ ├── MerchantNotifyConstResult.java │ │ │ │ └── PayMethodConstResult.java │ │ │ ├── gateway │ │ │ │ ├── AggregateOrderAndConfigResult.java │ │ │ │ ├── GatewayCashierCodeConfigResult.java │ │ │ │ ├── GatewayOrderAndConfigResult.java │ │ │ │ ├── GatewayOrderResult.java │ │ │ │ ├── GatewayPayUrlResult.java │ │ │ │ └── config │ │ │ │ │ ├── AggregateBarPayConfigResult.java │ │ │ │ │ ├── AggregatePayConfigResult.java │ │ │ │ │ ├── CashierCodeConfigResult.java │ │ │ │ │ ├── CashierCodeItemConfigResult.java │ │ │ │ │ ├── CashierGroupConfigResult.java │ │ │ │ │ ├── CashierItemConfigResult.java │ │ │ │ │ └── GatewayPayConfigResult.java │ │ │ ├── merchant │ │ │ │ └── MchAppResult.java │ │ │ ├── notice │ │ │ │ ├── callback │ │ │ │ │ ├── MerchantCallbackRecordResult.java │ │ │ │ │ └── MerchantCallbackTaskResult.java │ │ │ │ └── notify │ │ │ │ │ ├── MerchantNotifyRecordResult.java │ │ │ │ │ └── MerchantNotifyTaskResult.java │ │ │ ├── order │ │ │ │ ├── pay │ │ │ │ │ └── PayOrderVo.java │ │ │ │ ├── refund │ │ │ │ │ └── RefundOrderVo.java │ │ │ │ └── transfer │ │ │ │ │ └── TransferOrderVo.java │ │ │ ├── record │ │ │ │ ├── callback │ │ │ │ │ └── TradeCallbackRecordResult.java │ │ │ │ ├── close │ │ │ │ │ └── PayCloseRecordResult.java │ │ │ │ ├── flow │ │ │ │ │ ├── TradeFlowAmountResult.java │ │ │ │ │ └── TradeFlowRecordResult.java │ │ │ │ └── sync │ │ │ │ │ └── TradeSyncRecordResult.java │ │ │ ├── report │ │ │ │ ├── MerchantReportResult.java │ │ │ │ └── TradeReportResult.java │ │ │ └── termina │ │ │ │ └── TerminalDeviceResult.java │ │ │ ├── service │ │ │ ├── allocation │ │ │ │ ├── AllocConfigService.java │ │ │ │ ├── AllocationService.java │ │ │ │ ├── AllocationSyncService.java │ │ │ │ ├── order │ │ │ │ │ ├── AllocOrderQueryService.java │ │ │ │ │ └── AllocOrderService.java │ │ │ │ └── receiver │ │ │ │ │ ├── AllocGroupService.java │ │ │ │ │ └── AllocReceiverService.java │ │ │ ├── assist │ │ │ │ ├── ChannelAuthService.java │ │ │ │ ├── PaymentAssistService.java │ │ │ │ ├── TerminalDeviceService.java │ │ │ │ └── WechatOpenAuthService.java │ │ │ ├── config │ │ │ │ ├── ChannelConfigService.java │ │ │ │ ├── MerchantNotifyConfigService.java │ │ │ │ └── PlatformConfigService.java │ │ │ ├── constant │ │ │ │ ├── ApiConstService.java │ │ │ │ ├── ChannelConstService.java │ │ │ │ ├── MerchantNotifyConstService.java │ │ │ │ └── MethodConstService.java │ │ │ ├── develop │ │ │ │ └── DevelopTradeService.java │ │ │ ├── gateway │ │ │ │ ├── CashierPayService.java │ │ │ │ ├── GatewayPayAssistService.java │ │ │ │ ├── GatewayPayQueryService.java │ │ │ │ ├── GatewayPayService.java │ │ │ │ └── config │ │ │ │ │ ├── AggregateConfigService.java │ │ │ │ │ ├── CashierCodeConfigService.java │ │ │ │ │ ├── CashierConfigService.java │ │ │ │ │ └── GatewayPayConfigService.java │ │ │ ├── merchant │ │ │ │ └── MchAppService.java │ │ │ ├── notice │ │ │ │ ├── MerchantNoticeAssistService.java │ │ │ │ ├── MerchantNoticeService.java │ │ │ │ ├── callback │ │ │ │ │ ├── MerchantCallbackQueryService.java │ │ │ │ │ ├── MerchantCallbackSendService.java │ │ │ │ │ └── MerchantCallbackTaskService.java │ │ │ │ └── notify │ │ │ │ │ ├── MerchantNotifyQueryService.java │ │ │ │ │ ├── MerchantNotifySendService.java │ │ │ │ │ └── MerchantNotifyTaskService.java │ │ │ ├── order │ │ │ │ ├── pay │ │ │ │ │ ├── PayOrderQueryService.java │ │ │ │ │ └── PayOrderService.java │ │ │ │ ├── refund │ │ │ │ │ ├── RefundOrderQueryService.java │ │ │ │ │ └── RefundOrderService.java │ │ │ │ └── transfer │ │ │ │ │ ├── TransferOrderQueryService.java │ │ │ │ │ └── TransferOrderService.java │ │ │ ├── record │ │ │ │ ├── callback │ │ │ │ │ └── TradeCallbackRecordService.java │ │ │ │ ├── close │ │ │ │ │ └── PayCloseRecordService.java │ │ │ │ ├── flow │ │ │ │ │ └── TradeFlowRecordService.java │ │ │ │ └── sync │ │ │ │ │ └── TradeSyncRecordService.java │ │ │ ├── report │ │ │ │ ├── IndexMerchantReportService.java │ │ │ │ └── IndexTradeReportService.java │ │ │ └── trade │ │ │ │ ├── pay │ │ │ │ ├── PayAssistService.java │ │ │ │ ├── PayCallbackService.java │ │ │ │ ├── PayCloseService.java │ │ │ │ ├── PayService.java │ │ │ │ └── PaySyncService.java │ │ │ │ ├── refund │ │ │ │ ├── RefundAssistService.java │ │ │ │ ├── RefundCallbackService.java │ │ │ │ ├── RefundService.java │ │ │ │ └── RefundSyncService.java │ │ │ │ └── transfer │ │ │ │ ├── TransferAssistService.java │ │ │ │ ├── TransferCallbackService.java │ │ │ │ ├── TransferService.java │ │ │ │ └── TransferSyncService.java │ │ │ ├── strategy │ │ │ ├── AbsAllocationStrategy.java │ │ │ ├── AbsChannelAuthStrategy.java │ │ │ ├── AbsGatewayPayStrategy.java │ │ │ ├── AbsPayCloseStrategy.java │ │ │ ├── AbsPayStrategy.java │ │ │ ├── AbsRefundStrategy.java │ │ │ ├── AbsSyncPayOrderStrategy.java │ │ │ ├── AbsSyncRefundOrderStrategy.java │ │ │ ├── AbsSyncTransferOrderStrategy.java │ │ │ ├── AbsTransferStrategy.java │ │ │ └── PaymentStrategy.java │ │ │ ├── task │ │ │ └── OrderSyncTaskService.java │ │ │ └── util │ │ │ └── PaymentStrategyFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── spring │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── template │ │ └── 对账单模板.xlsx └── pom.xml ├── docker-compose.yml ├── lombok.config ├── pom.xml └── 用户授权使用协议.txt /.gitignore: -------------------------------------------------------------------------------- 1 | .metadata 2 | .classpath 3 | .project 4 | .module_prj 5 | .settings/ 6 | .idea/ 7 | .run/ 8 | .svn/ 9 | *.iml 10 | *.log 11 | bin/ 12 | out/ 13 | target/ 14 | build/ 15 | logs/ 16 | rebel.xml 17 | /daxpay-single-server/src/main/resources/static/web/ 18 | /daxpay-single-server/src/main/resources/static/h5/ 19 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # java21基础镜像 2 | FROM m.daocloud.io/docker.io/eclipse-temurin:21.0.4_7-jdk-alpine 3 | 4 | # 作者信息 5 | MAINTAINER daxpay@daxpay.cn 6 | 7 | # 时区设置 8 | ENV TZ=Asia/Shanghai 9 | RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 10 | 11 | # 启动命令 12 | ENV JAVA_COMM="-Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF-8" 13 | # 启动选项配置 14 | ENV JAVA_OPTS="" 15 | # Agent配置 16 | ENV JAVA_AGENT="" 17 | # 参数配置 18 | ENV JAVA_ARGS="" 19 | # 工作目录 20 | WORKDIR / 21 | 22 | # 端口暴露 23 | EXPOSE 9999 24 | 25 | # 添加执行jar包 26 | ADD daxpay-open-server/target/daxpay-open-server.jar daxpay-server.jar 27 | 28 | # 执行启动命令 29 | CMD java $JAVA_OPTS -jar daxpay-server.jar 30 | -------------------------------------------------------------------------------- /_doc/Task.md: -------------------------------------------------------------------------------- 1 | # 单商户 2 | ## 3.0.0.beta5 功能优化和服务商支付 3 | - [ ] 网关配套移动端开发 4 | - [ ] 同步回调页 5 | - [ ] 增加首页驾驶舱功能 6 | - [ ] 支付时付款码参数提升到PayParam, 简化调用方式 7 | ## 任务池 8 | - [ ] 分账重试 9 | - [ ] 同步接口优化, 返回同步完的数据 10 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-config/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | cn.bootx.platform 8 | bootx-platform-common 9 | 3.0.0.beta5 10 | 11 | 12 | common-config 13 | 项目配置 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-config/src/main/java/cn/bootx/platform/common/config/ConfigAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.config; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | /** 8 | * swagger 自动配置 9 | * 10 | * @author xxm 11 | * @since 2020/4/9 13:33 12 | */ 13 | @Slf4j 14 | @Configuration 15 | @ConfigurationPropertiesScan 16 | public class ConfigAutoConfiguration { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-config/src/main/java/cn/bootx/platform/common/config/enums/DeployMode.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.config.enums; 2 | 3 | /** 4 | * 部署模式 5 | * @author xxm 6 | * @since 2025/1/31 7 | */ 8 | public enum DeployMode { 9 | 10 | /** 11 | * 分模块部署, 如果有多个业务系统, 每套业务系统都是构建为独立的jar进行部署, 不同业务系统天生进行隔离 12 | */ 13 | MODULE, 14 | /** 15 | * 融合部署, 如果有多个业务系统, 但打包成一个jar进行部署的模式, 自行处理业务系统的隔离 16 | */ 17 | FUSION; 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-config/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.common.config.ConfigAutoConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-exception-handler/src/main/java/cn/bootx/platform/common/exceptionhandler/ExceptionHandlerAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.exceptionhandler; 2 | 3 | import org.springframework.boot.autoconfigure.AutoConfiguration; 4 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 5 | import org.springframework.context.annotation.ComponentScan; 6 | 7 | /** 8 | * 异常处理程序 9 | * 10 | * @author xxm 11 | * @since 2022/12/18 12 | */ 13 | @ComponentScan 14 | @ConfigurationPropertiesScan 15 | @AutoConfiguration 16 | public class ExceptionHandlerAutoConfiguration { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-exception-handler/src/main/java/cn/bootx/platform/common/exceptionhandler/handler/ExceptionHandlerProperties.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.exceptionhandler.handler; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | 7 | /** 8 | * 配置 9 | * 10 | * @author xxm 11 | * @since 2021/12/5 12 | */ 13 | @Getter 14 | @Setter 15 | @ConfigurationProperties("bootx.common.exception") 16 | public class ExceptionHandlerProperties { 17 | 18 | /** 是否显示详细异常信息 */ 19 | private boolean showFullMessage; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-exception-handler/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.common.exceptionhandler.ExceptionHandlerAutoConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-header-holder/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.common.headerholder.filter.WebHeaderHolderInterceptor 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-jackson/src/main/java/cn/bootx/platform/common/jackson/jdk/JavaLongTypeModule.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.jackson.jdk; 2 | 3 | import com.fasterxml.jackson.databind.module.SimpleModule; 4 | import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; 5 | 6 | /** 7 | * Long 类型序列化为String 8 | * 9 | * @author xxm 10 | * @since 2020/4/14 13:35 11 | */ 12 | public class JavaLongTypeModule extends SimpleModule { 13 | 14 | public JavaLongTypeModule() { 15 | // 将 Long 转 String 16 | this.addSerializer(Long.TYPE, ToStringSerializer.instance); 17 | this.addSerializer(Long.class, ToStringSerializer.instance); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-jackson/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.common.jackson.configuration.JacksonConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-log/src/main/java/cn/bootx/platform/common/log/LogAutoConfigurationLogAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.log; 2 | 3 | import org.springframework.boot.autoconfigure.AutoConfiguration; 4 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 5 | import org.springframework.context.annotation.ComponentScan; 6 | 7 | /** 8 | * 日志扫描 9 | * 10 | * @author xxm 11 | * @since 2022/6/6 12 | */ 13 | @ComponentScan 14 | @ConfigurationPropertiesScan 15 | @AutoConfiguration 16 | public class LogAutoConfigurationLogAutoConfiguration { 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.common.log.LogAutoConfigurationLogAutoConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/MybatisPlusCommonAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.mybatisplus; 2 | 3 | import org.springframework.boot.autoconfigure.AutoConfiguration; 4 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 5 | import org.springframework.context.annotation.ComponentScan; 6 | 7 | /** 8 | * mybatis自动配置 9 | * 10 | * @author xxm 11 | * @since 2021/7/27 12 | */ 13 | @AutoConfiguration 14 | @ComponentScan 15 | @ConfigurationPropertiesScan 16 | public class MybatisPlusCommonAutoConfiguration { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/base/MpBaseEntity.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.mybatisplus.base; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableLogic; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.experimental.FieldNameConstants; 7 | 8 | /** 9 | * 基础实体类 (逻辑删除) 10 | * 11 | * @author xxm 12 | * @since 2021/7/27 13 | */ 14 | @Getter 15 | @Setter 16 | @FieldNameConstants(innerTypeName = "Base") 17 | public abstract class MpBaseEntity extends MpRealDelEntity{ 18 | 19 | /** 删除标志 */ 20 | @TableLogic 21 | private boolean deleted; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/function/CollectorsFunction.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.mybatisplus.function; 2 | 3 | /** 4 | * stream流处理时进行Collectors时的函数 5 | * 6 | * @author xxm 7 | * @since 2023/3/12 8 | */ 9 | public interface CollectorsFunction { 10 | 11 | /** 12 | * 转换成map时, 相同key的对象保留第一个 13 | */ 14 | static T retainFirst(T o1, T o2) { 15 | return o1; 16 | } 17 | 18 | /** 19 | * 转换成map时, 相同key的对象保留最后一个 20 | */ 21 | static T retainLatest(T o1, T o2) { 22 | return o2; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/function/MetaObjectFill.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.mybatisplus.function; 2 | 3 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; 4 | import org.apache.ibatis.reflection.MetaObject; 5 | 6 | /** 7 | * 元对象填充接口 8 | * @author xxm 9 | * @since 2024/6/28 10 | */ 11 | public interface MetaObjectFill { 12 | 13 | /** 14 | * 插入填充 15 | */ 16 | default void insertFill(MetaObject metaObject, MetaObjectHandler metaObjectHandler) { 17 | } 18 | 19 | /** 20 | * 更新填充 21 | */ 22 | default void updateFill(MetaObject metaObject, MetaObjectHandler metaObjectHandler) { 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/function/ToResult.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.mybatisplus.function; 2 | 3 | /** 4 | * entity基础方法 5 | * 6 | * @author xxm 7 | * @since 2020/11/18 8 | */ 9 | public interface ToResult { 10 | 11 | /** 12 | * 转换 13 | */ 14 | T toResult(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/handler/SnowflakeIdentifierGenerator.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.mybatisplus.handler; 2 | 3 | import cn.hutool.core.util.IdUtil; 4 | import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; 5 | import lombok.RequiredArgsConstructor; 6 | 7 | /** 8 | * 雪花id生成器 9 | * 10 | * @author xxm 11 | * @since 2021/8/18 12 | */ 13 | @RequiredArgsConstructor 14 | public class SnowflakeIdentifierGenerator implements IdentifierGenerator { 15 | 16 | @Override 17 | public Number nextId(Object entity) { 18 | return IdUtil.getSnowflake().nextId(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/query/QueryApplication.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.mybatisplus.query; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.context.annotation.ComponentScan; 6 | 7 | /** 8 | * 高级查询器 9 | * 10 | * @author xxm 11 | * @since 2021/11/17 12 | */ 13 | @ComponentScan 14 | @MapperScan(annotationClass = Mapper.class) 15 | public class QueryApplication { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/query/entity/QueryBetweenParam.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.mybatisplus.query.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * Between 类型参数 9 | * 10 | * @author xxm 11 | * @since 2021/11/18 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | @Schema(title = "Between 类型参数") 16 | public class QueryBetweenParam { 17 | 18 | @Schema(description = "开始参数") 19 | private Object start; 20 | 21 | @Schema(description = "结束参数") 22 | private Object end; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/query/entity/QueryParams.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.mybatisplus.query.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 查询参数 11 | * 12 | * @author xxm 13 | * @since 2021/11/17 14 | */ 15 | @Data 16 | @Accessors(chain = true) 17 | @Schema(title = "查询参数") 18 | public class QueryParams { 19 | 20 | @Schema(description = "参数集合") 21 | private List queryParams; 22 | 23 | @Schema(description = "排序集合") 24 | private List queryOrders; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/query/function/QueryBetween.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.mybatisplus.query.function; 2 | 3 | /** 4 | * 查询生成器范围查询标识接口 5 | * @author xxm 6 | * @since 2024/1/15 7 | */ 8 | public interface QueryBetween { 9 | 10 | /** 11 | * 获取开始值 12 | */ 13 | Object getStart(); 14 | 15 | /** 16 | * 获取结束值 17 | */ 18 | Object getEnd(); 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-mybatis-plus/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.common.mybatisplus.MybatisPlusCommonAutoConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-redis/src/main/java/cn/bootx/platform/common/RedisCommonAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | 5 | /** 6 | * redis配置 7 | * 8 | * @author xxm 9 | * @since 2022/5/7 10 | */ 11 | @ComponentScan 12 | public class RedisCommonAutoConfiguration { 13 | } 14 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.common.RedisCommonAutoConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-spring/src/main/java/cn/bootx/platform/common/spring/SpringConfigApplication.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.spring; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 4 | import org.springframework.context.annotation.ComponentScan; 5 | import org.springframework.retry.annotation.EnableRetry; 6 | import org.springframework.scheduling.annotation.EnableScheduling; 7 | 8 | /** 9 | * spring默认配置 10 | * @author xxm 11 | * @since 2023/3/29 12 | */ 13 | @EnableScheduling 14 | @EnableRetry 15 | @ComponentScan 16 | @ConfigurationPropertiesScan 17 | public class SpringConfigApplication { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-spring/src/main/java/cn/bootx/platform/common/spring/exception/RetryableException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.common.spring.exception; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | /** 6 | * 可重试异常,抛出这个异常进行重试 7 | * 8 | * @author xxm 9 | * @since 2022/7/10 10 | */ 11 | public class RetryableException extends BizException { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-spring/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.common.spring.SpringConfigApplication 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-common/common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.common.swagger.SwaggerAutoConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/annotation/BigField.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 大字段注解 7 | * 配合 {@linkplain cn.hutool.core.map.MapUtil} 中 excludeBigField 方法使用使用 8 | * 9 | * 使用Mp条件构造器器分页查询时样例 10 | * {@snippet : 11 | * wrapper.select(this.getEntityClass (), MpUtil::excludeBigField); 12 | * } 13 | * 14 | * 15 | * @author xxm 16 | * @since 2021/10/24 17 | */ 18 | @Target({ ElementType.PARAMETER, ElementType.FIELD }) 19 | @Retention(RetentionPolicy.RUNTIME) 20 | @Documented 21 | @Inherited 22 | public @interface BigField { 23 | 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/annotation/ClientCode.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 终端类型注解, 如果添加控制器上添加了该类型. 进行访问时将会自动验证终端类型是否匹配, 不添加默认所有终端类型都可以访问 7 | * 终端可以约等于业务系统概念, 但不是完全一对一的关系 8 | * 在控制器类和方法上都可以使用该注解, 同时标注时会以方法上的为准, 并不会取这两者的终端合集, 而是方法上的直接覆盖掉类的注解 9 | * @author xxm 10 | * @since 2025/1/31 11 | */ 12 | @Target({ ElementType.TYPE, ElementType.METHOD }) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Documented 15 | @Inherited 16 | public @interface ClientCode { 17 | 18 | /** 19 | * 终端编码 20 | */ 21 | String[] value(); 22 | } 23 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/annotation/IgnoreAuth.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 忽略鉴权, 可以放在controller控制器类和方法上,同时使用时,以方法上的为准 7 | * @author xxm 8 | * @since 2024/6/25 9 | */ 10 | @Target({ ElementType.METHOD, ElementType.TYPE }) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Documented 13 | @Inherited 14 | public @interface IgnoreAuth { 15 | 16 | /** 17 | * 只要登录就可以访问,忽略权限校验 18 | */ 19 | boolean login() default false; 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/annotation/IgnoreTenant.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.annotation; 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 | * 组件忽略注解 10 | * @author xxm 11 | * @since 2024/6/25 12 | */ 13 | @Target({ElementType.METHOD, ElementType.TYPE}) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface IgnoreTenant { 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/annotation/InternalPath.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 内部请求接口, 只允许超级管理员访问 7 | * @author xxm 8 | * @since 2024/6/25 9 | */ 10 | @Target({ ElementType.METHOD, ElementType.TYPE }) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Documented 13 | @Inherited 14 | public @interface InternalPath { 15 | } 16 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/annotation/OperateLogs.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 操作日志注解组 7 | * 8 | * @author xxm 9 | * @since 2021/12/20 10 | */ 11 | @Target({ ElementType.PARAMETER, ElementType.METHOD }) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Documented 14 | @Inherited 15 | public @interface OperateLogs { 16 | 17 | /** 操作日志注解组 */ 18 | OperateLog[] value(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/annotation/PermCode.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 权限码 7 | * @author xxm 8 | * @since 2024/7/7 9 | */ 10 | @Target({ ElementType.PARAMETER, ElementType.METHOD }) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Documented 13 | @Inherited 14 | public @interface PermCode { 15 | 16 | /** 17 | * 权限码,支持配置多个 18 | */ 19 | String[] value(); 20 | } 21 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/annotation/RequestPath.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 请求路径注解 7 | * @see RequestGroup 8 | *
9 | * 分为三级: 模块-->分组-->路径 10 | *
11 | * 模块: 通常对应一个的功能模块, 如用户管理、认证服务、权限管理等 12 | *
13 | * 分组: 通常对应多个请求组成的一个功能点分组, 如用户管理下的用户管理、用户管理下的角色管理等,多数时候会对对应少数几个或者一个控制器 14 | *
15 | * 路径: 对应具体的一个具体请求方式(GET/POST)的请求路径 16 | * 17 | * @author xxm 18 | * @since 2024/7/4 19 | */ 20 | @Target({ ElementType.METHOD }) 21 | @Retention(RetentionPolicy.RUNTIME) 22 | @Documented 23 | @Inherited 24 | public @interface RequestPath { 25 | 26 | /** 27 | * 请求路径名称 28 | */ 29 | String value(); 30 | } 31 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/code/ServletCode.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.code; 2 | 3 | /** 4 | * Servlet常量 5 | * 6 | * @author xxm 7 | * @since 2022/3/10 8 | */ 9 | public interface ServletCode { 10 | 11 | String METHOD = "Method"; 12 | 13 | String CONTEXT_PATH = "ContextPath"; 14 | 15 | String REQUEST_URI = "RequestURI"; 16 | 17 | String REQUEST_URL = "RequestURL"; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/exception/BizErrorException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.exception; 2 | 3 | /** 4 | * 致命异常 5 | * @author xxm 6 | * @since 2024/7/14 7 | */ 8 | public class BizErrorException extends BizException { 9 | public BizErrorException(int code, String message) { 10 | super(code,message); 11 | } 12 | 13 | public BizErrorException(String message) { 14 | super(message); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/exception/BizException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.exception; 2 | 3 | import cn.bootx.platform.core.code.CommonCode; 4 | import lombok.Getter; 5 | 6 | 7 | /** 8 | * 业务异常基类 9 | * @see BizErrorException 致命异常 error级别警告 10 | * @see BizWarnException 业务异常 warn级别 11 | * @see BizInfoException 业务异常 info级别 12 | */ 13 | @Getter 14 | public class BizException extends RuntimeException { 15 | 16 | private int code = CommonCode.FAIL_CODE; 17 | 18 | public BizException(int code, String message) { 19 | super(message); 20 | this.code = code; 21 | } 22 | 23 | public BizException(String message) { 24 | super(message); 25 | } 26 | 27 | public BizException() { 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/exception/BizInfoException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.exception; 2 | 3 | /** 4 | * 普通异常, 不需要显示异常栈 5 | * @author xxm 6 | * @since 2024/7/14 7 | */ 8 | public class BizInfoException extends BizException{ 9 | public BizInfoException(int code, String message) { 10 | super(code,message); 11 | } 12 | 13 | public BizInfoException(String message) { 14 | super(message); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/exception/BizWarnException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.exception; 2 | 3 | /** 4 | * 警告异常 5 | * @author xxm 6 | * @since 2024/7/14 7 | */ 8 | public class BizWarnException extends BizException{ 9 | 10 | public BizWarnException(int code, String message) { 11 | super(code,message); 12 | } 13 | 14 | public BizWarnException(String message) { 15 | super(message); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/exception/DangerSqlException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.exception; 2 | 3 | 4 | import cn.bootx.platform.core.code.CommonErrorCode; 5 | 6 | /** 7 | * SQL相关异常 8 | * 9 | * @author xxm 10 | * @since 2023/3/9 11 | */ 12 | public class DangerSqlException extends BizException { 13 | 14 | public DangerSqlException(String msg) { 15 | super(CommonErrorCode.DANGER_SQL, msg); 16 | } 17 | 18 | public DangerSqlException() { 19 | super(CommonErrorCode.DANGER_SQL, "危险SQL异常"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/exception/DataNotExistException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.exception; 2 | 3 | 4 | import cn.bootx.platform.core.code.CommonErrorCode; 5 | 6 | /** 7 | * 数据不存在异常 8 | * 9 | * @author xxm 10 | * @since 2022/1/10 11 | */ 12 | public class DataNotExistException extends BizInfoException { 13 | 14 | public DataNotExistException(String msg) { 15 | super(CommonErrorCode.DATA_NOT_EXIST, msg); 16 | } 17 | 18 | public DataNotExistException() { 19 | super(CommonErrorCode.DATA_NOT_EXIST, "数据不存在"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/exception/RepetitiveOperationException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.exception; 2 | 3 | import java.io.Serializable; 4 | 5 | import static cn.bootx.platform.core.code.CommonErrorCode.REPETITIVE_OPERATION_ERROR; 6 | 7 | 8 | /** 9 | * 重复操作异常 10 | * 11 | * @author xxm 12 | * @since 2021/1/2 13 | */ 14 | public class RepetitiveOperationException extends BizInfoException implements Serializable { 15 | 16 | public RepetitiveOperationException() { 17 | super(REPETITIVE_OPERATION_ERROR, "重复操作异常"); 18 | } 19 | 20 | public RepetitiveOperationException(String msg) { 21 | super(REPETITIVE_OPERATION_ERROR, msg); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/exception/UnSupportOperateException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.exception; 2 | 3 | import java.io.Serializable; 4 | 5 | import static cn.bootx.platform.core.code.CommonErrorCode.UN_SUPPORTED_OPERATE; 6 | 7 | /** 8 | * 不支持的操作异常 9 | * 10 | * @author xxm 11 | * @since 2022/7/27 12 | */ 13 | public class UnSupportOperateException extends BizInfoException implements Serializable { 14 | 15 | public UnSupportOperateException(String message) { 16 | super(UN_SUPPORTED_OPERATE, message); 17 | } 18 | 19 | public UnSupportOperateException() { 20 | super(UN_SUPPORTED_OPERATE, "不支持的操作异常"); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/exception/ValidationFailedException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.exception; 2 | 3 | import cn.bootx.platform.core.code.CommonErrorCode; 4 | 5 | /** 6 | * 验证失败异常 7 | */ 8 | public class ValidationFailedException extends BizInfoException { 9 | 10 | public ValidationFailedException(String detail) { 11 | super(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "验证参数错误" + System.lineSeparator() + detail); 12 | } 13 | 14 | public ValidationFailedException() { 15 | super(CommonErrorCode.VALIDATE_PARAMETERS_ERROR,"验证参数错误"); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/rest/dto/KeyValue.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.rest.dto; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.*; 5 | import lombok.experimental.Accessors; 6 | 7 | 8 | /** 9 | * kv键值对象 10 | * 11 | * @author xxm 12 | * @since 2021/5/18 13 | */ 14 | @Getter 15 | @Setter 16 | @NoArgsConstructor 17 | @AllArgsConstructor 18 | @ToString 19 | @Accessors(chain = true) 20 | @Schema(title = "kv键值对象") 21 | public class KeyValue { 22 | 23 | @Schema(description = "键") 24 | private String key; 25 | 26 | @Schema(description = "值") 27 | private String value; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/rest/result/ErrorResult.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.rest.result; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * 错误响应类,携带链路追踪标示 trackId 9 | * 10 | * @author xxm 11 | * @since 2021/9/9 12 | */ 13 | @Getter 14 | @Setter 15 | @Schema(title = "错误响应类,携带链路追踪标示 trackId") 16 | public class ErrorResult extends Result { 17 | 18 | /** 链路追踪标示 */ 19 | @Schema(description = "链路追踪标示") 20 | private String traceId; 21 | 22 | public ErrorResult(int code, String msg, String traceId) { 23 | super(code, msg); 24 | this.traceId = traceId; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/result/BaseResult.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.result; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | /** 10 | * 基础返回类 11 | * @author xxm 12 | * @since 2024/8/12 13 | */ 14 | @Getter 15 | @Setter 16 | public class BaseResult { 17 | 18 | @Schema(description = "主键") 19 | private Long id; 20 | 21 | @Schema(description = "创建时间") 22 | private LocalDateTime createTime; 23 | } 24 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-core/src/main/java/cn/bootx/platform/core/validation/ValidationGroup.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.core.validation; 2 | 3 | /** 4 | * 校验分组 5 | * 6 | * @author xxm 7 | * @since 2021/5/7 8 | */ 9 | public interface ValidationGroup { 10 | 11 | /** 12 | * 参数校验分组:增加 13 | */ 14 | @interface add { 15 | 16 | } 17 | 18 | /** 19 | * 参数校验分组:编辑 20 | */ 21 | @interface edit { 22 | 23 | } 24 | 25 | /** 26 | * 参数校验分组:删除 27 | */ 28 | @interface delete { 29 | 30 | } 31 | 32 | /** 33 | * 参数校验分组:查询 34 | */ 35 | @interface query { 36 | 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/BaseApiApplication.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.context.annotation.ComponentScan; 6 | 7 | /** 8 | * 框架基础功能 9 | * 10 | * @author xxm 11 | * @since 2021/8/4 12 | */ 13 | @ComponentScan 14 | @MapperScan(annotationClass = Mapper.class) 15 | public class BaseApiApplication { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/dao/dict/DictionaryItemMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi.dao.dict; 2 | 3 | import cn.bootx.platform.baseapi.entity.dict.DictionaryItem; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 字典项 9 | * 10 | * @author xxm 11 | * @since 2020/11/13 12 | */ 13 | @Mapper 14 | public interface DictionaryItemMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/dao/dict/DictionaryMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi.dao.dict; 2 | 3 | import cn.bootx.platform.baseapi.entity.dict.Dictionary; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 字典 9 | * 10 | * @author xxm 11 | * @since 2021/8/4 12 | */ 13 | @Mapper 14 | public interface DictionaryMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/dao/parameter/SystemParamMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi.dao.parameter; 2 | 3 | import cn.bootx.platform.baseapi.entity.parameter.SystemParameter; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * @author xxm 9 | * @since 2021/10/25 10 | */ 11 | @Mapper 12 | public interface SystemParamMapper extends MPJBaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/dao/region/AreaManager.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi.dao.region; 2 | 3 | import cn.bootx.platform.baseapi.entity.region.Area; 4 | import cn.bootx.platform.common.mybatisplus.impl.BaseManager; 5 | import lombok.RequiredArgsConstructor; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 区域表 12 | * 13 | * @author xxm 14 | * @since 2022-12-24 15 | */ 16 | @Repository 17 | @RequiredArgsConstructor 18 | public class AreaManager extends BaseManager { 19 | 20 | public List findAllByCityCode(String cityCode) { 21 | return findAllByField(Area::getCityCode, cityCode); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/dao/region/AreaMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi.dao.region; 2 | 3 | import cn.bootx.platform.baseapi.entity.region.Area; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 区域表 9 | * 10 | * @author xxm 11 | * @since 2022-12-24 12 | */ 13 | @Mapper 14 | public interface AreaMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/dao/region/CityManager.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi.dao.region; 2 | 3 | import cn.bootx.platform.baseapi.entity.region.City; 4 | import cn.bootx.platform.common.mybatisplus.impl.BaseManager; 5 | import lombok.RequiredArgsConstructor; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 城市表 12 | * 13 | * @author xxm 14 | * @since 2022-12-24 15 | */ 16 | @Repository 17 | @RequiredArgsConstructor 18 | public class CityManager extends BaseManager { 19 | 20 | public List findAllByProvinceCode(String provinceCode) { 21 | return findAllByField(City::getProvinceCode, provinceCode); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/dao/region/CityMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi.dao.region; 2 | 3 | import cn.bootx.platform.baseapi.entity.region.City; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 城市表 9 | * 10 | * @author xxm 11 | * @since 2022-12-24 12 | */ 13 | @Mapper 14 | public interface CityMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/dao/region/ProvinceManager.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi.dao.region; 2 | 3 | import cn.bootx.platform.baseapi.entity.region.Province; 4 | import cn.bootx.platform.common.mybatisplus.impl.BaseManager; 5 | import lombok.RequiredArgsConstructor; 6 | import org.springframework.stereotype.Repository; 7 | 8 | /** 9 | * 省份表 10 | * 11 | * @author xxm 12 | * @since 2022-12-24 13 | */ 14 | @Repository 15 | @RequiredArgsConstructor 16 | public class ProvinceManager extends BaseManager { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/dao/region/ProvinceMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi.dao.region; 2 | 3 | import cn.bootx.platform.baseapi.entity.region.Province; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 省份表 9 | * 10 | * @author xxm 11 | * @since 2022-12-24 12 | */ 13 | @Mapper 14 | public interface ProvinceMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/dao/region/StreetManager.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi.dao.region; 2 | 3 | import cn.bootx.platform.baseapi.entity.region.Street; 4 | import cn.bootx.platform.common.mybatisplus.impl.BaseManager; 5 | import lombok.RequiredArgsConstructor; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 街道表 12 | * 13 | * @author xxm 14 | * @since 2022-12-24 15 | */ 16 | @Repository 17 | @RequiredArgsConstructor 18 | public class StreetManager extends BaseManager { 19 | 20 | public List findAllByAreaCode(String areaCode) { 21 | return findAllByField(Street::getAreaCode, areaCode); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/java/cn/bootx/platform/baseapi/dao/region/StreetMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.baseapi.dao.region; 2 | 3 | import cn.bootx.platform.baseapi.entity.region.Street; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 街道表 9 | * 10 | * @author xxm 11 | * @since 2022-12-24 12 | */ 13 | @Mapper 14 | public interface StreetMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-baseapi/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.baseapi.BaseApiApplication 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/IamApplication.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.context.annotation.ComponentScan; 6 | 7 | /** 8 | * 身份识别与访问管理 9 | * 10 | * @author xxm 11 | * @since 2021/7/29 12 | */ 13 | @ComponentScan 14 | @MapperScan(annotationClass = Mapper.class) 15 | public class IamApplication { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/code/UserStatusEnum.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.code; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 用户状态 8 | * 字典 user_status 9 | * @author xxm 10 | * @since 2021/9/9 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum UserStatusEnum { 15 | 16 | /** 正常 */ 17 | NORMAL("normal", "正常"), 18 | 19 | /** 锁定 多次登录失败 */ 20 | LOCK("lock", "锁定"), 21 | 22 | /** 封禁 */ 23 | BAN ("ban", "封禁"); 24 | 25 | private final String code; 26 | private final String name; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/convert/client/ClientConvert.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.convert.client; 2 | 3 | import cn.bootx.platform.iam.entity.client.Client; 4 | import cn.bootx.platform.iam.param.client.ClientParam; 5 | import cn.bootx.platform.iam.result.client.ClientResult; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | /** 10 | * 认证应用 11 | * 12 | * @author xxm 13 | * @since 2022-06-27 14 | */ 15 | @Mapper 16 | public interface ClientConvert { 17 | 18 | ClientConvert CONVERT = Mappers.getMapper(ClientConvert.class); 19 | 20 | Client convert(ClientParam in); 21 | 22 | ClientResult convert(Client in); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/convert/permission/PermCodeConvert.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.convert.permission; 2 | 3 | import cn.bootx.platform.iam.entity.permission.PermCode; 4 | import cn.bootx.platform.iam.param.permission.PermCodeParam; 5 | import cn.bootx.platform.iam.result.permission.PermCodeResult; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | /** 10 | * 权限码转换 11 | * @author xxm 12 | * @since 2024/7/3 13 | */ 14 | @Mapper 15 | public interface PermCodeConvert { 16 | PermCodeConvert CONVERT = Mappers.getMapper(PermCodeConvert.class); 17 | 18 | PermCodeResult convert(PermCode in); 19 | 20 | PermCode convert(PermCodeParam in); 21 | } 22 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/convert/permission/PermMenuConvert.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.convert.permission; 2 | 3 | import cn.bootx.platform.iam.entity.permission.PermMenu; 4 | import cn.bootx.platform.iam.param.permission.PermMenuParam; 5 | import cn.bootx.platform.iam.result.permission.PermMenuResult; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | /** 10 | * 权限转换 11 | * 12 | * @author xxm 13 | * @since 2021/8/3 14 | */ 15 | @Mapper 16 | public interface PermMenuConvert { 17 | 18 | PermMenuConvert CONVERT = Mappers.getMapper(PermMenuConvert.class); 19 | 20 | PermMenu convert(PermMenuParam in); 21 | 22 | PermMenuResult convert(PermMenu in); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/convert/permission/PermPathConvert.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.convert.permission; 2 | 3 | import cn.bootx.platform.iam.entity.permission.PermPath; 4 | import cn.bootx.platform.iam.result.permission.PermPathResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 权限转换 10 | * 11 | * @author xxm 12 | * @since 2021/8/3 13 | */ 14 | @Mapper 15 | public interface PermPathConvert { 16 | 17 | PermPathConvert CONVERT = Mappers.getMapper(PermPathConvert.class); 18 | 19 | PermPathResult convert(PermPath in); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/convert/role/RoleConvert.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.convert.role; 2 | 3 | import cn.bootx.platform.iam.entity.role.Role; 4 | import cn.bootx.platform.iam.param.role.RoleParam; 5 | import cn.bootx.platform.iam.result.role.RoleResult; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | @Mapper 10 | public interface RoleConvert { 11 | 12 | RoleConvert CONVERT = Mappers.getMapper(RoleConvert.class); 13 | 14 | RoleResult convert(Role in); 15 | 16 | Role convert(RoleParam in); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/convert/user/UserConvert.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.convert.user; 2 | 3 | import cn.bootx.platform.iam.entity.user.UserInfo; 4 | import cn.bootx.platform.iam.param.user.UserInfoParam; 5 | import cn.bootx.platform.iam.result.user.UserInfoResult; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | @Mapper 10 | public interface UserConvert { 11 | 12 | UserConvert CONVERT = Mappers.getMapper(UserConvert.class); 13 | 14 | UserInfo convert(UserInfoParam in); 15 | 16 | UserInfoResult convert(UserInfo in); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/convert/user/UserExpandConvert.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.convert.user; 2 | 3 | import cn.bootx.platform.iam.entity.user.UserExpandInfo; 4 | import cn.bootx.platform.iam.result.user.UserExpandInfoResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | @Mapper 9 | public interface UserExpandConvert { 10 | 11 | UserExpandConvert CONVERT = Mappers.getMapper(UserExpandConvert.class); 12 | 13 | UserExpandInfoResult convert(UserExpandInfo in); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/client/ClientMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.client; 2 | 3 | import cn.bootx.platform.iam.entity.client.Client; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 认证应用 9 | * 10 | * @author xxm 11 | * @since 2022-06-27 12 | */ 13 | @Mapper 14 | public interface ClientMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/permission/PermCodeMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.permission; 2 | 3 | import cn.bootx.platform.iam.entity.permission.PermCode; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 权限码 9 | * @author xxm 10 | * @since 2024/7/3 11 | */ 12 | @Mapper 13 | public interface PermCodeMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/permission/PermMenuMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.permission; 2 | 3 | import cn.bootx.platform.iam.entity.permission.PermMenu; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 权限配置 9 | * 10 | * @author xxm 11 | * @since 2021/8/3 12 | */ 13 | @Mapper 14 | public interface PermMenuMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/permission/PermPathMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.permission; 2 | 3 | import cn.bootx.platform.iam.entity.permission.PermPath; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 权限 12 | * 13 | * @author xxm 14 | * @since 2020/5/10 23:26 15 | */ 16 | @Mapper 17 | public interface PermPathMapper extends MPJBaseMapper { 18 | 19 | void saveAll(@Param("permPaths") List permPaths); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/role/RoleMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.role; 2 | 3 | import cn.bootx.platform.iam.entity.role.Role; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 角色 9 | * 10 | * @author xxm 11 | * @since 2021/8/3 12 | */ 13 | @Mapper 14 | public interface RoleMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/upms/RoleCodeMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.upms; 2 | 3 | import cn.bootx.platform.iam.entity.upms.RoleCode; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/7/3 11 | */ 12 | @Mapper 13 | public interface RoleCodeMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/upms/RoleMenuMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.upms; 2 | 3 | import cn.bootx.platform.iam.entity.upms.RoleMenu; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 角色权限关系 12 | * 13 | * @author xxm 14 | * @since 2021/8/3 15 | */ 16 | @Mapper 17 | public interface RoleMenuMapper extends MPJBaseMapper { 18 | 19 | void saveAll(@Param("roleMenus") List roleMenus); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/upms/RolePathMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.upms; 2 | 3 | import cn.bootx.platform.iam.entity.upms.RolePath; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 角色权限 12 | * 13 | * @author xxm 14 | * @since 2020/11/14 15 | */ 16 | @Mapper 17 | public interface RolePathMapper extends MPJBaseMapper { 18 | 19 | void saveAll(@Param("rolePaths") List rolePaths); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/upms/UserRoleMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.upms; 2 | 3 | import cn.bootx.platform.iam.entity.upms.UserRole; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 用户角色关系 12 | * 13 | * @author xxm 14 | * @since 2021/8/3 15 | */ 16 | @Mapper 17 | public interface UserRoleMapper extends MPJBaseMapper { 18 | 19 | void saveAll(@Param("userRoles") List userRoles); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/user/UserExpandInfoManager.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.user; 2 | 3 | import cn.bootx.platform.common.mybatisplus.impl.BaseManager; 4 | import cn.bootx.platform.iam.entity.user.UserExpandInfo; 5 | import lombok.RequiredArgsConstructor; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.stereotype.Repository; 8 | 9 | /** 10 | * 用户扩展信息 11 | * 12 | * @author xxm 13 | * @since 2022/1/8 14 | */ 15 | @Slf4j 16 | @Repository 17 | @RequiredArgsConstructor 18 | public class UserExpandInfoManager extends BaseManager { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/user/UserExpandInfoMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.user; 2 | 3 | import cn.bootx.platform.iam.entity.user.UserExpandInfo; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * @author xxm 9 | * @since 2022/1/8 10 | */ 11 | @Mapper 12 | public interface UserExpandInfoMapper extends MPJBaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/dao/user/UserInfoMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.dao.user; 2 | 3 | import cn.bootx.platform.iam.entity.user.UserInfo; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 用户信息 9 | * 10 | * @author xxm 11 | * @since 2021/7/30 12 | */ 13 | @Mapper 14 | public interface UserInfoMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/entity/client/System.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.entity.client; 2 | 3 | import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.experimental.Accessors; 8 | 9 | /** 10 | * 11 | * @author xxm 12 | * @since 2025/1/31 13 | */ 14 | @EqualsAndHashCode(callSuper = true) 15 | @Data 16 | @Accessors(chain = true) 17 | @Schema(title = "") 18 | public class System extends MpBaseEntity { 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/exception/login/UserPasswordInvalidException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.exception.login; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | import static cn.bootx.platform.iam.code.IamErrorCode.USER_PASSWORD_INVALID; 6 | 7 | /** 8 | * 用户密码不正确异常 9 | * 10 | * @author xxm 11 | * @since 2020/5/7 18:16 12 | */ 13 | public class UserPasswordInvalidException extends BizException { 14 | 15 | public UserPasswordInvalidException() { 16 | super(USER_PASSWORD_INVALID, "用户密码不正确"); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/exception/permission/PermissionDBErrorException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.exception.permission; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | import static cn.bootx.platform.iam.code.IamErrorCode.PERMISSION_DB_ERROR; 6 | 7 | /** 8 | * @author xxm 9 | * @since 2020/5/7 18:01 10 | */ 11 | public class PermissionDBErrorException extends BizException { 12 | 13 | public PermissionDBErrorException() { 14 | super(PERMISSION_DB_ERROR, "用户没有权限."); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/exception/role/RoleAlreadyExistedException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.exception.role; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | import static cn.bootx.platform.iam.code.IamErrorCode.ROLE_ALREADY_EXISTED; 6 | 7 | /** 8 | * @author xxm 9 | * @since 2020/4/29 14:37 10 | */ 11 | public class RoleAlreadyExistedException extends BizException { 12 | 13 | public RoleAlreadyExistedException() { 14 | super(ROLE_ALREADY_EXISTED, "角色已经存在."); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/exception/role/RoleAlreadyUsedException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.exception.role; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | import static cn.bootx.platform.iam.code.IamErrorCode.ROLE_ALREADY_USED; 6 | 7 | /** 8 | * @author xxm 9 | * @since 2020/4/29 14:42 10 | */ 11 | public class RoleAlreadyUsedException extends BizException { 12 | 13 | public RoleAlreadyUsedException() { 14 | super(ROLE_ALREADY_USED, "该角色下分配了用户,您无法将其删除."); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/exception/role/RoleHasChildrenException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.exception.role; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | import static cn.bootx.platform.iam.code.IamErrorCode.ROLE_HAS_CHILD; 6 | 7 | /** 8 | * 含有下级角色异常 9 | * @author xxm 10 | * @since 2023/12/5 11 | */ 12 | public class RoleHasChildrenException extends BizException { 13 | 14 | public RoleHasChildrenException() { 15 | super(ROLE_HAS_CHILD, "该角色下分配了用户,您无法将其删除."); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/exception/role/RoleNotExistedException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.exception.role; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | import static cn.bootx.platform.iam.code.IamErrorCode.ROLE_NOT_EXISTED; 6 | 7 | /** 8 | * 角色不存在 9 | * 10 | * @author xxm 11 | * @since 2020/5/7 18:04 12 | */ 13 | public class RoleNotExistedException extends BizException { 14 | 15 | public RoleNotExistedException() { 16 | super(ROLE_NOT_EXISTED, "角色不存在."); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/exception/user/UserInfoNotExistsException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.exception.user; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | import static cn.bootx.platform.iam.code.IamErrorCode.USER_INFO_NOT_EXISTS; 6 | 7 | /** 8 | * 用户信息不存在异常 9 | * 10 | * @author xxm 11 | * @since 2020/5/7 18:29 12 | */ 13 | public class UserInfoNotExistsException extends BizException { 14 | 15 | public UserInfoNotExistsException() { 16 | super(USER_INFO_NOT_EXISTS, "用户信息不存在"); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/exception/user/UserNonePhoneAndEmailException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.exception.user; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | import static cn.bootx.platform.iam.code.IamErrorCode.NONE_PHONE_AND_EMAIL; 6 | 7 | /** 8 | * 用户手机号和邮箱不可都为空的异常 9 | * 10 | * @author xxm 11 | * @since 2020/5/7 18:30 12 | */ 13 | public class UserNonePhoneAndEmailException extends BizException { 14 | 15 | public UserNonePhoneAndEmailException() { 16 | super(NONE_PHONE_AND_EMAIL, "用户的电话和电子邮件必须包含一个"); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/exception/user/UserPhoneAlreadyExistedException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.exception.user; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | import static cn.bootx.platform.iam.code.IamErrorCode.USER_PHONE_ALREADY_EXISTED; 6 | 7 | /** 8 | * 用户手机已存在异常 9 | * 10 | * @author xxm 11 | * @since 2020/5/7 18:25 12 | */ 13 | public class UserPhoneAlreadyExistedException extends BizException { 14 | 15 | public UserPhoneAlreadyExistedException() { 16 | super(USER_PHONE_ALREADY_EXISTED, "用户手机已存在"); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/param/auth/LoginContentParam.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.param.auth; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 前端登录页信息 9 | * @author xxm 10 | * @since 2023/8/17 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "登录页信息") 15 | public class LoginContentParam { 16 | 17 | @Schema(description = "终端Code") 18 | private String clientId; 19 | 20 | @Schema(description = "账号") 21 | private String account; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserRoleBatchParam.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.param.upms; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import jakarta.validation.constraints.NotEmpty; 5 | import lombok.Data; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author xxm 11 | * @since 2020/5/1 18:10 12 | */ 13 | @Data 14 | @Schema(title = "用户角色参数") 15 | public class UserRoleBatchParam { 16 | 17 | @Schema(description = "用户的ID") 18 | @NotEmpty(message = "用户集合不能为空") 19 | private List userIds; 20 | 21 | @Schema(description = "角色的ID集合") 22 | private List roleIds; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserRoleParam.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.param.upms; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import jakarta.validation.constraints.NotNull; 5 | import lombok.Data; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author xxm 11 | * @since 2020/5/1 18:10 12 | */ 13 | @Data 14 | @Schema(title = "用户角色参数") 15 | public class UserRoleParam { 16 | 17 | @Schema(description = "用户的ID") 18 | @NotNull(message = "用户 ID 不能为空") 19 | private Long userId; 20 | 21 | @Schema(description = "角色的ID集合") 22 | private List roleIds; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/param/user/RestartPwdParam.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.param.user; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import jakarta.validation.constraints.NotBlank; 5 | import jakarta.validation.constraints.NotNull; 6 | import lombok.Data; 7 | import lombok.experimental.Accessors; 8 | 9 | /** 10 | * 用户密码重置 11 | * @author xxm 12 | * @since 2024/7/12 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(title = "用户密码重置") 17 | public class RestartPwdParam { 18 | 19 | @Schema(description = "用户主键不可为空") 20 | @NotNull(message = "用户不可为空") 21 | private Long userId; 22 | 23 | @Schema(description = "新密码不可为空") 24 | @NotBlank(message = "新密码不能为空") 25 | private String newPassword; 26 | } 27 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/result/auth/LoginContentResult.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.result.auth; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 登录页上下⽂信息 11 | * @author xxm 12 | * @since 2023/8/17 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(title = "登录页上下⽂信息") 17 | public class LoginContentResult { 18 | 19 | /** 支持登录方式 */ 20 | @Schema(description = "支持登录方式") 21 | private List loginTypes; 22 | 23 | @Schema(description = "是否启用验证码") 24 | private boolean enableCaptcha; 25 | 26 | @Schema(description = "密码是否加密传输") 27 | private boolean passwordEncrypted; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/result/captcha/CaptchaDataResult.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.result.captcha; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 验证码数据 9 | * 10 | * @author xxm 11 | * @since 2021/8/2 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | @Schema(title = "验证码数据") 16 | public class CaptchaDataResult { 17 | 18 | @Schema(description = "验证码标识KEY") 19 | private String captchaKey; 20 | 21 | @Schema(description = "验证码base64数据") 22 | private String captchaData; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/result/upms/RolePermCodeResult.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.result.upms; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 11 | * @author xxm 12 | * @since 2024/7/10 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(title = "权限码") 17 | public class RolePermCodeResult { 18 | 19 | @Schema(description = "权限码id") 20 | private Long id; 21 | 22 | @Schema(description = "权限码") 23 | private String code; 24 | 25 | @Schema(description = "权限名称") 26 | private String name; 27 | 28 | @Schema(description = "子类") 29 | private List children; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/result/user/LoginAfterUserInfoResult.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.result.user; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 用户登录后所需的基础信息信息 9 | * 10 | * @author xxm 11 | * @since 2022/1/8 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | @Schema(title = "用户登录后所需的基础信息信息") 16 | public class LoginAfterUserInfoResult { 17 | 18 | @Schema(description = "用户id") 19 | private Long userId; 20 | 21 | @Schema(description = "名称") 22 | private String name; 23 | 24 | @Schema(description = "账号") 25 | private String account; 26 | 27 | @Schema(description = "头像") 28 | private String avatar; 29 | 30 | } 31 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/java/cn/bootx/platform/iam/service/client/ClientCodeService.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.iam.service.client; 2 | 3 | import cn.bootx.platform.common.headerholder.local.HolderContextHolder; 4 | import cn.bootx.platform.core.code.CommonCode; 5 | 6 | /** 7 | * 获取终端编码 8 | * @author xxm 9 | * @since 2025/1/31 10 | */ 11 | public interface ClientCodeService { 12 | 13 | /** 14 | * 获取终端编码 15 | */ 16 | default String getClientCode(){ 17 | // 从请求头获取当前终端类型 18 | return HolderContextHolder.get(CommonCode.CLIENT); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-service/service-iam/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.iam.IamApplication 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-audit-log/src/main/java/cn/bootx/platform/starter/audit/log/AuditLogAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.audit.log; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.autoconfigure.AutoConfiguration; 6 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 7 | import org.springframework.context.annotation.ComponentScan; 8 | 9 | /** 10 | * 审计模块 11 | * 12 | * @author xxm 13 | * @since 2021/11/8 14 | */ 15 | @ComponentScan 16 | @ConfigurationPropertiesScan 17 | @AutoConfiguration 18 | @MapperScan(annotationClass = Mapper.class) 19 | public class AuditLogAutoConfiguration { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-audit-log/src/main/java/cn/bootx/platform/starter/audit/log/dao/LoginLogDbMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.audit.log.dao; 2 | 3 | import cn.bootx.platform.starter.audit.log.entity.LoginLogDb; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 登录日志 9 | * 10 | * @author xxm 11 | * @since 2021/8/12 12 | */ 13 | @Mapper 14 | public interface LoginLogDbMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-audit-log/src/main/java/cn/bootx/platform/starter/audit/log/dao/OperateLogDbMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.audit.log.dao; 2 | 3 | import cn.bootx.platform.starter.audit.log.entity.OperateLogDb; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | @Mapper 8 | public interface OperateLogDbMapper extends MPJBaseMapper { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-audit-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.starter.audit.log.AuditLogAutoConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/AuthAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth; 2 | 3 | import org.springframework.boot.autoconfigure.AutoConfiguration; 4 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 5 | import org.springframework.context.annotation.ComponentScan; 6 | 7 | /** 8 | * 认证相关 9 | * 10 | * @author xxm 11 | * @since 2022/1/27 12 | */ 13 | @ComponentScan 14 | @ConfigurationPropertiesScan 15 | @AutoConfiguration 16 | public class AuthAutoConfiguration { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/authentication/GetAuthClientService.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.authentication; 2 | 3 | import cn.bootx.platform.starter.auth.entity.AuthClient; 4 | 5 | /** 6 | * 获取认证终端 7 | * 8 | * @author xxm 9 | * @since 2022/6/27 10 | */ 11 | public interface GetAuthClientService { 12 | 13 | /** 14 | * 认证应用 15 | */ 16 | AuthClient getAuthApplication(String authApplicationCode); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/authentication/UserInfoStatusCheck.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.authentication; 2 | 3 | import cn.bootx.platform.starter.auth.entity.AuthInfoResult; 4 | import cn.bootx.platform.starter.auth.entity.LoginAuthContext; 5 | 6 | /** 7 | * 用户状态检查 8 | * @author xxm 9 | * @since 2023/9/20 10 | */ 11 | public interface UserInfoStatusCheck { 12 | 13 | /** 14 | * 15 | * @param authInfoResult 认证返回结果 16 | * @param context 登录认证上下文 17 | */ 18 | void check(AuthInfoResult authInfoResult, LoginAuthContext context); 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/entity/AuthClient.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.entity; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 认证应用 10 | * 11 | * @author xxm 12 | * @since 2022/6/27 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | public class AuthClient { 17 | 18 | /** 终端id */ 19 | private Long id; 20 | 21 | /** 编码 */ 22 | private String code; 23 | 24 | /** 名称 */ 25 | private String name; 26 | 27 | /** 是否可用 */ 28 | private boolean enable; 29 | 30 | /** 关联登录方式Id */ 31 | private List loginTypeIds; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/entity/AuthInfoResult.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.entity; 2 | 3 | import cn.bootx.platform.core.entity.UserDetail; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 认证返回结果 9 | * 10 | * @author xxm 11 | * @since 2021/7/30 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | public class AuthInfoResult { 16 | 17 | /** 用户id */ 18 | private Object id; 19 | 20 | /** 认证终端(例如管理端/小程序/h5等) */ 21 | private String client = ""; 22 | 23 | /** 登录方式(例如web/开放平台/app等) */ 24 | private String loginType = ""; 25 | 26 | /** 用户对象 */ 27 | private UserDetail userDetail; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/entity/AuthLoginType.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.entity; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @author xxm 9 | * @since 2021/8/25 10 | */ 11 | @Data 12 | @Accessors(chain = true) 13 | @Schema(title = "登录方式") 14 | public class AuthLoginType { 15 | 16 | /** 编码 */ 17 | private String code; 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/exception/ApplicationNotEnableException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.exception; 2 | 3 | 4 | import cn.bootx.platform.core.exception.BizException; 5 | 6 | /** 7 | * 应用被停用 8 | * 9 | * @author xxm 10 | * @since 2022/6/27 11 | */ 12 | public class ApplicationNotEnableException extends BizException { 13 | 14 | public ApplicationNotEnableException() { 15 | super("指定应用已被停用"); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/exception/ApplicationNotFoundException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.exception; 2 | 3 | import cn.bootx.platform.core.exception.BizInfoException; 4 | 5 | /** 6 | * 应用不存在 7 | * 8 | * @author xxm 9 | * @since 2022/6/27 10 | */ 11 | public class ApplicationNotFoundException extends BizInfoException { 12 | 13 | public ApplicationNotFoundException() { 14 | super("未找到对应的应用"); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/exception/ClientNotEnableException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.exception; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | /** 6 | * 终端方式被停用 7 | * 8 | * @author xxm 9 | * @since 2021/9/7 10 | */ 11 | public class ClientNotEnableException extends BizException { 12 | 13 | public ClientNotEnableException() { 14 | super("指定终端方式已被停用"); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/exception/ClientNotFoundException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.exception; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | /** 6 | * 终端不存在 7 | * 8 | * @author xxm 9 | * @since 2021/8/25 10 | */ 11 | public class ClientNotFoundException extends BizException { 12 | 13 | public ClientNotFoundException() { 14 | super("未找到对应的终端"); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/exception/LoginFailureException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.exception; 2 | 3 | import cn.bootx.platform.core.exception.BizInfoException; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 登录错误异常 8 | * 9 | * @author xxm 10 | * @since 2021/8/13 11 | */ 12 | @Getter 13 | public class LoginFailureException extends BizInfoException { 14 | 15 | private final String account; 16 | 17 | public LoginFailureException(String message) { 18 | super(message); 19 | this.account = "未知"; 20 | } 21 | 22 | public LoginFailureException(String account, String message) { 23 | super(message); 24 | this.account = account; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/exception/NotLoginException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.exception; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | 5 | import static cn.bootx.platform.core.code.CommonErrorCode.AUTHENTICATION_FAIL; 6 | 7 | /** 8 | * 未登录异常 9 | * 10 | * @author xxm 11 | * @since 2021/12/22 12 | */ 13 | public class NotLoginException extends BizException { 14 | 15 | public NotLoginException(String msg) { 16 | super(AUTHENTICATION_FAIL, msg); 17 | } 18 | 19 | public NotLoginException() { 20 | super(AUTHENTICATION_FAIL, "用户未登录"); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/exception/RouterCheckException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.exception; 2 | 3 | import cn.bootx.platform.core.exception.BizInfoException; 4 | 5 | /** 6 | * 路径检查异常 7 | * 8 | * @author xxm 9 | * @since 2021/12/21 10 | */ 11 | public class RouterCheckException extends BizInfoException { 12 | 13 | public RouterCheckException() { 14 | super("没有对应请求路径的权限"); 15 | } 16 | public RouterCheckException(String message) { 17 | super(message); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/exception/UserNotFoundException.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.exception; 2 | 3 | /** 4 | * 用户未找到异常 5 | * 6 | * @author xxm 7 | * @since 2021/7/30 8 | */ 9 | public class UserNotFoundException extends LoginFailureException { 10 | 11 | public UserNotFoundException(String account) { 12 | super(account, "用户未找到"); 13 | } 14 | 15 | public UserNotFoundException() { 16 | super("用户未找到"); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/handler/LoginFailureHandler.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.handler; 2 | 3 | import cn.bootx.platform.starter.auth.exception.LoginFailureException; 4 | import jakarta.servlet.http.HttpServletRequest; 5 | import jakarta.servlet.http.HttpServletResponse; 6 | 7 | /** 8 | * 登录失败处理器接口 9 | * 10 | * @author xxm 11 | * @since 2021/8/13 12 | */ 13 | public interface LoginFailureHandler { 14 | 15 | void onLoginFailure(HttpServletRequest request, HttpServletResponse response, LoginFailureException e); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/handler/LoginSuccessHandler.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.handler; 2 | 3 | import cn.bootx.platform.starter.auth.entity.AuthInfoResult; 4 | import jakarta.servlet.http.HttpServletRequest; 5 | import jakarta.servlet.http.HttpServletResponse; 6 | 7 | 8 | /** 9 | * 登录成功处理器接口 10 | * 11 | * @author xxm 12 | * @since 2021/8/13 13 | */ 14 | public interface LoginSuccessHandler { 15 | 16 | void onLoginSuccess(HttpServletRequest request, HttpServletResponse response, AuthInfoResult authInfoResult); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/java/cn/bootx/platform/starter/auth/service/RouterCheck.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.auth.service; 2 | 3 | /** 4 | * 路由拦截检查 5 | * 6 | * @author xxm 7 | * @since 2021/12/21 8 | */ 9 | public interface RouterCheck { 10 | 11 | /** 12 | * 排序 13 | */ 14 | default int sortNo() { 15 | return 0; 16 | } 17 | 18 | /** 19 | * 检查是否通过鉴权 20 | */ 21 | boolean check(Object handler); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-auth/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.starter.auth.AuthAutoConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-cache/src/main/java/cn/bootx/platform/starter/cache/CacheAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.cache; 2 | 3 | import org.springframework.boot.autoconfigure.AutoConfiguration; 4 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 5 | import org.springframework.context.annotation.ComponentScan; 6 | 7 | /** 8 | * 缓存配置 9 | * 10 | * @author xxm 11 | * @since 2022/12/18 12 | */ 13 | @ComponentScan 14 | @ConfigurationPropertiesScan 15 | @AutoConfiguration 16 | public class CacheAutoConfiguration { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-cache/src/main/java/cn/bootx/platform/starter/cache/configuration/CachingProperties.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.cache.configuration; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | 7 | import java.util.HashMap; 8 | import java.util.Map; 9 | 10 | /** 11 | * spring cache 配置 12 | * 13 | * @author xxm 14 | * @since 2021/6/11 15 | */ 16 | @Data 17 | @Accessors(chain = true) 18 | @ConfigurationProperties(prefix = "bootx-platform.common.cache") 19 | public class CachingProperties { 20 | 21 | /** 默认超时时间 30分钟 */ 22 | private Integer defaultTtl = 60 * 30; 23 | 24 | /** 自定义过期时间 秒 */ 25 | private Map keysTtl = new HashMap<>(); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.starter.cache.CacheAutoConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-delay-queue/src/main/java/cn/bootx/platform/starter/redis/delay/DelayQueryAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.redis.delay; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 4 | import org.springframework.context.annotation.ComponentScan; 5 | 6 | /** 7 | * 演示队列配置 8 | * @author xxm 9 | * @since 2024/7/31 10 | */ 11 | @ComponentScan 12 | @ConfigurationPropertiesScan 13 | public class DelayQueryAutoConfiguration { 14 | } 15 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-delay-queue/src/main/java/cn/bootx/platform/starter/redis/delay/annotation/DelayEventListener.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.redis.delay.annotation; 2 | 3 | 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | /** 10 | * 延时任务接收方法注解 11 | * 参数需要固定为 DelayJobEvent 12 | * @see DelayJobEvent 13 | * @author xxm 14 | * @since 2024/7/31 15 | */ 16 | @Target(ElementType.METHOD) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | public @interface DelayEventListener { 19 | 20 | /** 21 | * 任务topic名称 22 | */ 23 | String value(); 24 | } 25 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-delay-queue/src/main/java/cn/bootx/platform/starter/redis/delay/constants/JobStatus.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.redis.delay.constants; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 任务状态 8 | * @author daify 9 | * @date 2019-07-26 16:03 10 | **/ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum JobStatus { 14 | /** 15 | * 不可执行状态,等待时钟周期 16 | */ 17 | DELAY("delay"), 18 | /** 19 | * 可执行状态,等待消费 20 | */ 21 | READY("ready"), 22 | /** 23 | * 已被消费者读取,但还未得到消费者的响应 24 | */ 25 | RESERVED("reserved"), 26 | /** 27 | * 死信 28 | */ 29 | DEAD("dead"); 30 | 31 | private final String code; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-delay-queue/src/main/java/cn/bootx/platform/starter/redis/delay/result/BucketResult.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.redis.delay.result; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 延时桶信息 9 | * @author xxm 10 | * @since 2024/9/21 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "延时桶信息") 15 | public class BucketResult { 16 | 17 | @Schema(description = "桶名称") 18 | private String name; 19 | 20 | /** 数量 */ 21 | @Schema(description = "数量") 22 | private Integer count; 23 | } 24 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-delay-queue/src/main/java/cn/bootx/platform/starter/redis/delay/result/TopicResult.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.redis.delay.result; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 主题信息 9 | * @author xxm 10 | * @since 2024/9/21 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "主题信息") 15 | public class TopicResult { 16 | 17 | @Schema(description = "主题名称") 18 | private String name; 19 | 20 | /** 数量 */ 21 | @Schema(description = "数量") 22 | private Integer count; 23 | } 24 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-delay-queue/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.starter.redis.delay.DelayQueryAutoConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-file/src/main/java/cn/bootx/platform/starter/file/FileAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.file; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import org.dromara.x.file.storage.spring.EnableFileStorage; 5 | import org.mybatis.spring.annotation.MapperScan; 6 | import org.springframework.boot.autoconfigure.AutoConfiguration; 7 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 8 | import org.springframework.context.annotation.ComponentScan; 9 | 10 | /** 11 | * 文件管理 12 | * 13 | * @author xxm 14 | * @since 2022/1/12 15 | */ 16 | @ComponentScan 17 | @ConfigurationPropertiesScan 18 | @EnableFileStorage 19 | @AutoConfiguration 20 | @MapperScan(annotationClass = Mapper.class) 21 | public class FileAutoConfiguration { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-file/src/main/java/cn/bootx/platform/starter/file/configuration/OssProperties.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.file.configuration; 2 | 3 | 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | import org.springframework.boot.context.properties.ConfigurationProperties; 7 | 8 | @Data 9 | @Accessors(chain = true) 10 | @ConfigurationProperties(prefix = "bootx-platform.starter.oss") 11 | /*** 12 | * oss配置 13 | */ 14 | public class OssProperties { 15 | 16 | private String filePath; 17 | 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-file/src/main/java/cn/bootx/platform/starter/file/convert/FilePlatformConvert.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.file.convert; 2 | 3 | import cn.bootx.platform.starter.file.entity.FilePlatform; 4 | import cn.bootx.platform.starter.file.result.FilePlatformResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 10 | * @author xxm 11 | * @since 2024/8/12 12 | */ 13 | @Mapper 14 | public interface FilePlatformConvert { 15 | FilePlatformConvert CONVERT = Mappers.getMapper(FilePlatformConvert.class); 16 | 17 | FilePlatformResult toResult(FilePlatform filePlatform); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-file/src/main/java/cn/bootx/platform/starter/file/dao/FilePlatformManager.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.file.dao; 2 | 3 | import cn.bootx.platform.common.mybatisplus.impl.BaseManager; 4 | import cn.bootx.platform.starter.file.entity.FilePlatform; 5 | import lombok.RequiredArgsConstructor; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.stereotype.Repository; 8 | 9 | /** 10 | * 11 | * @author xxm 12 | * @since 2024/8/12 13 | */ 14 | @Slf4j 15 | @Repository 16 | @RequiredArgsConstructor 17 | public class FilePlatformManager extends BaseManager { 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-file/src/main/java/cn/bootx/platform/starter/file/dao/FilePlatformMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.file.dao; 2 | 3 | import cn.bootx.platform.starter.file.entity.FilePlatform; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/8/12 11 | */ 12 | @Mapper 13 | public interface FilePlatformMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UploadFileMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.file.dao; 2 | 3 | import cn.bootx.platform.starter.file.entity.UploadFileInfo; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * @author xxm 9 | * @since 2022/1/12 10 | */ 11 | @Mapper 12 | public interface UploadFileMapper extends MPJBaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-file/src/main/java/cn/bootx/platform/starter/file/param/FilePlatformParam.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.file.param; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import jakarta.validation.constraints.NotBlank; 5 | import jakarta.validation.constraints.NotNull; 6 | import lombok.Data; 7 | import lombok.experimental.Accessors; 8 | 9 | /** 10 | * 存储平台配置参数 11 | * @author xxm 12 | * @since 2024/8/12 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(title = "存储平台配置参数") 17 | public class FilePlatformParam { 18 | 19 | @NotNull(message = "主键不得为空") 20 | @Schema(description = "主键") 21 | private Long id; 22 | 23 | @NotBlank(message = "平台地址不得为空") 24 | @Schema(description = "平台地址") 25 | private String url; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-file/src/main/java/cn/bootx/platform/starter/file/param/FilePlatformQuery.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.file.param; 2 | 3 | import cn.bootx.platform.common.mybatisplus.query.entity.SortParam; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.experimental.Accessors; 8 | 9 | /** 10 | * 存储平台查询参数 11 | * @author xxm 12 | * @since 2024/8/12 13 | */ 14 | @EqualsAndHashCode(callSuper = true) 15 | @Data 16 | @Accessors(chain = true) 17 | @Schema(title = "存储平台查询参数") 18 | public class FilePlatformQuery extends SortParam { 19 | } 20 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-file/src/main/java/cn/bootx/platform/starter/file/param/FileUploadRequestParams.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.file.param; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import jakarta.validation.constraints.Min; 5 | import jakarta.validation.constraints.NotBlank; 6 | import lombok.Data; 7 | 8 | @Schema(title = "文件上传请求参数") 9 | @Data 10 | public class FileUploadRequestParams { 11 | 12 | @Schema(description = "文件名称,请携带扩展名") 13 | @NotBlank(message = "文件名称不可为空") 14 | private String fileName; 15 | 16 | @Schema(description = "媒体类型 MEDIA_TYPE") 17 | @NotBlank(message = "媒体类型不可为") 18 | private String mediaType; 19 | 20 | @Schema(description = "文件大小") 21 | @Min(value = 1, message = "文件大小不可为空") 22 | private Integer fileSize; 23 | } 24 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-file/src/main/java/cn/bootx/platform/starter/file/result/FileUploadParamsResult.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.file.result; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | import java.util.Map; 7 | 8 | @Schema(description = "文件上传参数") 9 | @Data 10 | public class FileUploadParamsResult { 11 | 12 | @Schema(description = "文件上传地址") 13 | private String url; 14 | 15 | @Schema(description = "文件上传请求头,上传时放在请求头里") 16 | private Map headers; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-file/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.starter.file.FileAutoConfiguration 2 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-quartz/src/main/java/cn/bootx/platform/starter/quartz/QuartzJobAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.quartz; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.autoconfigure.AutoConfiguration; 6 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 7 | import org.springframework.context.annotation.ComponentScan; 8 | 9 | /** 10 | * 定时任务 11 | * 12 | * @author xxm 13 | * @since 2021/11/2 14 | */ 15 | @ComponentScan 16 | @ConfigurationPropertiesScan 17 | @AutoConfiguration 18 | @MapperScan(annotationClass = Mapper.class) 19 | public class QuartzJobAutoConfiguration { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-quartz/src/main/java/cn/bootx/platform/starter/quartz/code/QuartzJobCode.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.quartz.code; 2 | 3 | /** 4 | * 定时任务状态 5 | * 6 | * @author xxm 7 | * @since 2021/11/2 8 | */ 9 | public interface QuartzJobCode { 10 | 11 | /** 运行 */ 12 | int RUNNING = 1; 13 | 14 | /** 停止 */ 15 | int STOP = 0; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-quartz/src/main/java/cn/bootx/platform/starter/quartz/dao/QuartzJobLogMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.quartz.dao; 2 | 3 | import cn.bootx.platform.starter.quartz.entity.QuartzJobLog; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 定时任务日志 9 | * 10 | * @author xxm 11 | * @since 2022/5/1 12 | */ 13 | @Mapper 14 | public interface QuartzJobLogMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-quartz/src/main/java/cn/bootx/platform/starter/quartz/dao/QuartzJobMapper.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.quartz.dao; 2 | 3 | import cn.bootx.platform.starter.quartz.entity.QuartzJob; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 定时任务 9 | * 10 | * @author xxm 11 | * @since 2021/11/2 12 | */ 13 | @Mapper 14 | public interface QuartzJobMapper extends MPJBaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-quartz/src/main/java/cn/bootx/platform/starter/quartz/param/QuartzJobLogQuery.java: -------------------------------------------------------------------------------- 1 | package cn.bootx.platform.starter.quartz.param; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * @author xxm 9 | * @since 2022/5/2 10 | */ 11 | @Data 12 | @Accessors(chain = true) 13 | @Schema(title = "定时任务日志查询") 14 | public class QuartzJobLogQuery { 15 | 16 | @Schema(description = "处理器全限定名") 17 | private String className; 18 | 19 | @Schema(description = "是否执行成功") 20 | private Boolean success; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /bootx-platform/bootx-platform-starter/starter-quartz/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | cn.bootx.platform.starter.quartz.QuartzJobAutoConfiguration 2 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-alipay/src/main/java/org/dromara/daxpay/channel/alipay/AlipayChannelApp.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.alipay; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 6 | import org.springframework.context.annotation.ComponentScan; 7 | 8 | /** 9 | * 支付宝支付实现 10 | * @author xxm 11 | * @since 2024/6/25 12 | */ 13 | @ConfigurationPropertiesScan 14 | @MapperScan(annotationClass = Mapper.class) 15 | @ComponentScan 16 | public class AlipayChannelApp { 17 | } 18 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-alipay/src/main/java/org/dromara/daxpay/channel/alipay/dao/allocation/AlipayAllocReceiverBindMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.alipay.dao.allocation; 2 | 3 | import org.dromara.daxpay.channel.alipay.entity.allocation.AlipayAllocReceiverBind; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2025/1/27 11 | */ 12 | @Mapper 13 | public interface AlipayAllocReceiverBindMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-alipay/src/main/java/org/dromara/daxpay/channel/alipay/sdk/contract/QueryContractParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.alipay.sdk.contract; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 查询签约申请单状态参数 9 | * @author xxm 10 | * @since 2024/11/16 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | public class QueryContractParam { 15 | /** 操作事务编号 */ 16 | @JsonProperty("batch_no") 17 | private String batchNo; 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-alipay/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.dromara.daxpay.channel.alipay.AlipayChannelApp 2 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-union/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | org.dromara.daxpay 8 | daxpay-open-channel 9 | 3.0.0.beta5 10 | 11 | 12 | daxpay-open-channel-union 13 | 云闪付支付通道实现 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-union/src/main/java/org/dromara/daxpay/channel/union/UnionPayChannelApp.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.union; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 6 | import org.springframework.context.annotation.ComponentScan; 7 | 8 | /** 9 | * 云闪付支付实现 10 | * @author xxm 11 | * @since 2024/7/16 12 | */ 13 | @ConfigurationPropertiesScan 14 | @MapperScan(annotationClass = Mapper.class) 15 | @ComponentScan 16 | public class UnionPayChannelApp { 17 | } 18 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-union/src/main/java/org/dromara/daxpay/channel/union/code/UnionPayCode.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.union.code; 2 | 3 | /** 4 | * 云闪付常量编码 5 | * @author xxm 6 | * @since 2024/9/6 7 | */ 8 | public interface UnionPayCode { 9 | 10 | /** 11 | * 签名类型 12 | */ 13 | interface SignType{ 14 | String RSA2 = "RSA2"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-union/src/main/java/org/dromara/daxpay/channel/union/param/pay/UnionPayParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.union.param.pay; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | /** 7 | * 云闪付支付参数 8 | * @author xxm 9 | * @since 2024/3/6 10 | */ 11 | @Data 12 | @Schema(title = "云闪付支付参数") 13 | public class UnionPayParam { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-union/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.dromara.daxpay.channel.union.UnionPayChannelApp 2 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/WechatPayChannelApp.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.wechat; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 6 | import org.springframework.context.annotation.ComponentScan; 7 | 8 | /** 9 | * 微信官方商户支付实现 10 | * @author xxm 11 | * @since 2024/7/16 12 | */ 13 | @ConfigurationPropertiesScan 14 | @MapperScan(annotationClass = Mapper.class) 15 | @ComponentScan 16 | public class WechatPayChannelApp { 17 | } 18 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/dao/allocation/WechatAllocReceiverBindMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.wechat.dao.allocation; 2 | 3 | import org.dromara.daxpay.channel.wechat.entity.allocation.WechatAllocReceiverBind; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2025/1/27 11 | */ 12 | @Mapper 13 | public interface WechatAllocReceiverBindMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/enums/WechatAllocReceiverEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.wechat.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 微信分账接收者类型 8 | * @author xxm 9 | * @since 2024/12/17 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum WechatAllocReceiverEnum { 14 | 15 | MERCHANT_ID("MERCHANT_ID", "商户号"), 16 | PERSONAL_OPENID("PERSONAL_OPENID", "openId"), 17 | ; 18 | 19 | private final String code; 20 | private final String name; 21 | } 22 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/enums/WechatAuthTypeEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.wechat.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 微信OpenId认证方式 8 | * @author xxm 9 | * @since 2025/4/24 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum WechatAuthTypeEnum { 14 | SP("sp","服务商用户标识"), 15 | SUB("sub","子商户应用用户标识"), 16 | ; 17 | private final String code; 18 | private final String name; 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/param/pay/WechatPayParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.wechat.param.pay; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 微信支付参数 9 | * @author xxm 10 | * @since 2021/6/21 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "微信支付参数") 15 | public class WechatPayParam { 16 | 17 | /** 18 | * 服务商模式下分为 1、用户服务标识 sp 2、用户子标识 sub 19 | */ 20 | @Schema(description = "openid类型") 21 | private String openIdType; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/param/transfer/TransferCreateV3Request.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.wechat.param.transfer; 2 | 3 | import com.github.binarywang.wxpay.bean.merchanttransfer.TransferCreateRequest; 4 | import com.google.gson.annotations.SerializedName; 5 | import lombok.*; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * 微信转账到零钱操作, 添加回调参数 10 | * @author xxm 11 | * @since 2024/7/29 12 | */ 13 | @EqualsAndHashCode(callSuper = true) 14 | @Data 15 | @Accessors(chain = true) 16 | public class TransferCreateV3Request extends TransferCreateRequest { 17 | 18 | /** 通知地址 说明:通知地址 */ 19 | @SerializedName("notify_url") 20 | private String notifyUrl; 21 | } 22 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/result/assist/WxTokenAndOpenIdResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.channel.wechat.result.assist; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 微信AccessToken和OpenId 9 | * @author xxm 10 | * @since 2024/2/10 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "微信AccessToken和OpenId") 15 | public class WxTokenAndOpenIdResult { 16 | 17 | @Schema(description = "微信AccessToken") 18 | private String accessToken; 19 | 20 | @Schema(description = "微信用户唯一标识") 21 | private String openId; 22 | } 23 | -------------------------------------------------------------------------------- /daxpay-open-channel/daxpay-open-channel-wechat/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.dromara.daxpay.channel.wechat.WechatPayChannelApp 2 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/code/GatewayPayTypeEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.code; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 网关支付类型 8 | * 字典 gateway_pay_type 9 | * @author xxm 10 | * @since 2024/11/26 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum GatewayPayTypeEnum { 15 | 16 | /** H5收银台支付 */ 17 | H5("h5"), 18 | /** PC收银台支付 */ 19 | PC("pc"), 20 | /** 小程序收银台支付 */ 21 | MINI_APP("mini_app"), 22 | /** 网关聚合支付 */ 23 | AGGREGATE("aggregate"), 24 | ; 25 | 26 | private final String code; 27 | } 28 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/code/PayAllocStatusEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.code; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 支付订单分账状态 8 | * @author xxm 9 | * @since 2024/4/16 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum PayAllocStatusEnum { 14 | /** 待分账 */ 15 | WAITING("waiting"), 16 | /** 已分账 */ 17 | ALLOCATION("allocation"), 18 | ; 19 | 20 | private final String code; 21 | } 22 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/code/PayLimitPayEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.code; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 限制支付类型枚举 8 | * @author xxm 9 | * @since 2025/3/10 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum PayLimitPayEnum { 14 | 15 | /** 信用卡支付 */ 16 | NO_CREDIT("no_credit"), 17 | ; 18 | 19 | private final String code; 20 | } 21 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/code/PayRefundStatusEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.code; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 支付订单的退款状态 8 | * @author xxm 9 | * @since 2024/6/7 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum PayRefundStatusEnum { 14 | /** 未退款 */ 15 | NO_REFUND("no_refund"), 16 | /** 退款中 */ 17 | REFUNDING("refunding"), 18 | /** 部分退款 */ 19 | PARTIAL_REFUND("partial_refund"), 20 | /** 全部退款 */ 21 | REFUNDED("refunded"), 22 | ; 23 | private final String code; 24 | } 25 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/code/RefundStatusEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.code; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 退款状态枚举 8 | * @author xxm 9 | * @since 2023/12/18 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum RefundStatusEnum { 14 | 15 | /** 退款中 */ 16 | PROGRESS("progress"), 17 | /** 成功 */ 18 | SUCCESS("success"), 19 | /** 关闭 */ 20 | CLOSE("close"), 21 | /** 失败 */ 22 | FAIL("fail"); 23 | 24 | /** 编码 */ 25 | private final String code; 26 | } 27 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/code/TransferStatusEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.code; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 转账状态 8 | * @author xxm 9 | * @since 2024/6/11 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum TransferStatusEnum { 14 | 15 | TRANSFERRING("transferring", "转账中"), 16 | SUCCESS("success", "转账成功"), 17 | FAIL("fail", "转账失败"), 18 | ; 19 | 20 | private final String code; 21 | private final String name; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/param/channel/AdaPayParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.param.channel; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | /** 7 | * 汇付支付参数 8 | * @author xxm 9 | * @since 2025/3/4 10 | */ 11 | @Data 12 | @Accessors(chain = true) 13 | public class AdaPayParam { 14 | 15 | /** 买家的支付宝用户 id */ 16 | private String buyerId; 17 | 18 | /** 买家支付宝账号 */ 19 | private String buyerLogonId; 20 | 21 | /** openid */ 22 | private String openId; 23 | } 24 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/param/channel/AlipayParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.param.channel; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | /** 8 | * 支付宝支付参数 9 | * @author xxm 10 | * @since 2021/2/27 11 | */ 12 | @Getter 13 | @Setter 14 | public class AlipayParam { 15 | 16 | /** 17 | * 【描述】小程序支付中,商户实际经营主体的小程序应用的appid,也即最终唤起收银台支付所在的小程序的应用id 18 | * 【注意事项】商户需要先在产品管理中心绑定该小程序appid,否则下单会失败 19 | */ 20 | @Schema(description = "商户实际经营主体的小程序应用的appid") 21 | private String opAppId; 22 | 23 | /** 24 | * 新商户建议使用buyer_open_id替代该字段。对于新商户,buyer_id字段未来计划逐步回收,存量商户可继续使用 25 | */ 26 | @Schema(description = "买家支付宝用户ID") 27 | private String buyerId; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/param/channel/UnionPayParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.param.channel; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | /** 7 | * 云闪付参数 8 | * @author xxm 9 | * @since 2024/3/13 10 | */ 11 | @Getter 12 | @Setter 13 | public class UnionPayParam { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/param/channel/WechatPayParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.param.channel; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * 微信支付参数 10 | * @author xxm 11 | * @since 2021/6/21 12 | */ 13 | @Getter 14 | @Setter 15 | @Accessors(chain = true) 16 | public class WechatPayParam { 17 | 18 | /** 19 | * 服务商模式下分为 用户服务标识 sp 用户子标识 sub 20 | */ 21 | @Schema(description = "openid类型") 22 | private String openIdType; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/response/DaxNoticeResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.response; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * 消息通知通用响应对象 10 | * @author xxm 11 | * @since 2025/4/10 12 | */ 13 | @EqualsAndHashCode(callSuper = true) 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(title = "消息通知通用响应对象") 17 | public class DaxNoticeResult extends DaxResult{ 18 | 19 | /** 通知类型 */ 20 | @Schema(description = "通知类型") 21 | private String noticeType; 22 | 23 | /** 应用ID */ 24 | @Schema(description = "应用ID") 25 | private String appId; 26 | } 27 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/result/trade/pay/GatewayPayUrlResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.result.trade.pay; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 网关支付响应参数 9 | * @author xxm 10 | * @since 2024/11/26 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "网关支付响应参数") 15 | public class GatewayPayUrlResult { 16 | 17 | @Schema(description = "收银台链接") 18 | private String url; 19 | 20 | @Schema(description = "收银台发起信息") 21 | private String payBody; 22 | } 23 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/result/trade/pay/PayResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.result.trade.pay; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 发起支付后响应对象 7 | * @author xxm 8 | * @since 2024/2/2 9 | */ 10 | @Data 11 | public class PayResult { 12 | 13 | /** 商户订单号 */ 14 | private String bizOrderNo; 15 | 16 | /** 订单号 */ 17 | private String orderNo; 18 | 19 | /** 支付状态 */ 20 | private String status; 21 | 22 | /** 支付参数体(通常用于发起支付的参数) */ 23 | private String payBody; 24 | } 25 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/result/trade/refund/RefundResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.result.trade.refund; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 退款响应参数 7 | * @author xxm 8 | * @since 2023/12/18 9 | */ 10 | @Data 11 | public class RefundResult { 12 | 13 | /** 退款号 */ 14 | private String refundNo; 15 | 16 | /** 商户退款号 */ 17 | private String bizRefundNo; 18 | 19 | /** 退款状态 */ 20 | private String status; 21 | 22 | /** 错误提示 */ 23 | private String errorMsg; 24 | } 25 | -------------------------------------------------------------------------------- /daxpay-open-sdk/src/main/java/org/dromara/daxpay/sdk/result/trade/transfer/TransferResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.sdk.result.trade.transfer; 2 | 3 | import org.dromara.daxpay.sdk.code.TransferStatusEnum; 4 | import lombok.Data; 5 | 6 | /** 7 | * 转账结果 8 | * @author xxm 9 | * @since 2024/6/19 10 | */ 11 | @Data 12 | public class TransferResult { 13 | 14 | /** 商户转账号 */ 15 | private String bizTransferNo; 16 | 17 | /** 转账号 */ 18 | private String transferNo; 19 | 20 | /** 21 | * 状态 22 | * @see TransferStatusEnum 23 | */ 24 | private String status; 25 | 26 | 27 | /** 28 | * 提示信息 29 | */ 30 | private String errorMsg; 31 | } 32 | -------------------------------------------------------------------------------- /daxpay-open-server/src/main/java/org/dromara/daxpay/server/service/ClientCodeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.server.service; 2 | 3 | import cn.bootx.platform.iam.service.client.ClientCodeService; 4 | import lombok.RequiredArgsConstructor; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.dromara.daxpay.service.code.DaxPayCode; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * 终端获取类 11 | * @author xxm 12 | * @since 2025/1/31 13 | */ 14 | @Slf4j 15 | @Service 16 | @RequiredArgsConstructor 17 | public class ClientCodeServiceImpl implements ClientCodeService { 18 | 19 | @Override 20 | public String getClientCode() { 21 | return DaxPayCode.Client.ADMIN; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /daxpay-open-server/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ${AnsiColor.CYAN} 2 | 3 | ______ ______ 4 | | _ \ | ___ \ 5 | | | | |__ ___ __ | |_/ /_ _ _ _ 6 | | | | / _` \ \/ / | __/ _` | | | | 7 | | |/ / (_| |> < | | | (_| | |_| | 8 | |___/ \__,_/_/\_\ \_| \__,_|\__, | 9 | __/ | 10 | |___/ 11 | ${AnsiColor.MAGENTA} 12 | 13 | Service: DaxPay 开源版 14 | Spring Boot Version: ${spring-boot.version} 15 | ${AnsiColor.BLACK} 16 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-controller/src/main/java/org/dromara/daxpay/controller/DaxpayPayControllerApp.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.controller; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | 5 | /** 6 | * 支付业务控制器 7 | * @author xxm 8 | * @since 2024/10/29 9 | */ 10 | @ComponentScan 11 | public class DaxpayPayControllerApp { 12 | } 13 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-controller/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.dromara.daxpay.controller.DaxpayPayControllerApp 2 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/code/MerchantTypeGroup.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.code; 2 | 3 | /** 4 | * 商户类型. 用于分组校验 5 | * @author xxm 6 | * @since 2024/11/4 7 | */ 8 | public interface MerchantTypeGroup { 9 | 10 | /** 普通商户 */ 11 | interface common{} 12 | /** 特约商户 */ 13 | interface partner{} 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/context/PaymentClientLocal.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.context; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | /** 7 | * 支付请求相关信息 8 | * @author xxm 9 | * @since 2023/12/25 10 | */ 11 | @Data 12 | @Accessors(chain = true) 13 | public class PaymentClientLocal { 14 | 15 | /** 客户端ip */ 16 | private String clientIp; 17 | 18 | /** 请求IP */ 19 | private String requestIp; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/context/PaymentContext.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.context; 2 | 3 | import lombok.Getter; 4 | import lombok.experimental.Accessors; 5 | 6 | /** 7 | * 支付上下文 8 | * @author xxm 9 | * @since 2023/12/22 10 | */ 11 | @Getter 12 | @Accessors(chain = true) 13 | public class PaymentContext { 14 | 15 | /** 16 | * 统一支付相关接口调用时,会进行初始化 17 | * 接收到回调时,会进行初始化 18 | * 接收到消息通知时是, 会进行初始化 19 | */ 20 | private final MchAppLocal mchAppInfo = new MchAppLocal(); 21 | 22 | /** 请求终端信息 */ 23 | private final PaymentClientLocal clientInfo = new PaymentClientLocal(); 24 | 25 | /** 回调相关信息 */ 26 | private final CallbackLocal callbackInfo = new CallbackLocal(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/AllocDetailResultEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 分账明细处理结果 8 | * 字典: alloc_detail_result 9 | * @author xxm 10 | * @since 2024/4/16 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum AllocDetailResultEnum { 15 | 16 | PENDING("pending", "待分账"), 17 | SUCCESS("success", "分账成功"), 18 | FAIL("fail", "分账失败"), 19 | /** 金额为0时不进行分账 */ 20 | IGNORE("ignore", "忽略分账"), 21 | ; 22 | 23 | private final String code; 24 | private final String name; 25 | } 26 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/AllocOrderResultEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 分账订单处理结果 8 | * @author xxm 9 | * @since 2024/4/16 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum AllocOrderResultEnum { 14 | 15 | ALL_PENDING("all_pending", "处理中"), 16 | ALL_SUCCESS("all_success", "全部成功"), 17 | PART_SUCCESS("part_success", "部分成功"), 18 | ALL_FAILED("all_failed", "全部失败"), 19 | ; 20 | 21 | private final String code; 22 | private final String name; 23 | } 24 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/AllocOrderStatusEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 分账状态枚举 8 | * @author xxm 9 | * @since 2024/4/7 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum AllocOrderStatusEnum { 14 | 15 | ALLOC_PROCESSING("alloc_processing", "分账处理中"), 16 | ALLOC_END("alloc_end", "分账完成"), 17 | ALLOC_FAILED("alloc_failed", "分账失败"), 18 | FINISH("finish", "完结"), 19 | FINISH_FAILED("finish_failed", "完结失败"), 20 | ; 21 | 22 | final String code; 23 | final String name; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/AllocationResultEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 分账订单处理结果 8 | * 字典: allocation_result 9 | * @author xxm 10 | * @since 2024/4/16 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum AllocationResultEnum { 15 | 16 | ALL_PENDING("all_pending", "处理中"), 17 | ALL_SUCCESS("all_success", "全部成功"), 18 | PART_SUCCESS("part_success", "部分成功"), 19 | ALL_FAILED("all_failed", "全部失败"), 20 | ; 21 | 22 | private final String code; 23 | private final String name; 24 | } 25 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/AllocationStatusEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 分账状态枚举 8 | * 字典 allocation_status 9 | * @author xxm 10 | * @since 2024/4/7 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum AllocationStatusEnum { 15 | 16 | PROCESSING("processing", "分账处理中"), 17 | ALLOC_END("alloc_end", "分账处理完成"), 18 | ALLOC_FAILED("alloc_failed", "分账失败"), 19 | FINISH("finish", "分账完结"), 20 | FINISH_FAILED("finish_failed", "完结失败"), 21 | IGNORE("ignore", "忽略"), 22 | ; 23 | 24 | final String code; 25 | final String name; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/CallbackStatusEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 支付回调处理状态 8 | * 字典: callback_status 9 | * @author xxm 10 | * @since 2023/12/20 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum CallbackStatusEnum { 15 | /** 成功 */ 16 | SUCCESS("success"), 17 | /** 失败 */ 18 | FAIL("fail"), 19 | /** 忽略 */ 20 | IGNORE("ignore"), 21 | /** 异常 */ 22 | EXCEPTION("exception"), 23 | /** 未找到 */ 24 | NOT_FOUND("not_found"); 25 | 26 | private final String code; 27 | } 28 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/ChannelAuthStatusEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 通道认证状态 8 | * @author xxm 9 | * @since 2024/9/24 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum ChannelAuthStatusEnum { 14 | 15 | /** 获取中 */ 16 | WAITING("waiting"), 17 | /** 获取成功 */ 18 | SUCCESS("success"), 19 | /** 数据不存在 */ 20 | NOT_EXIST("not_exist"); 21 | 22 | private final String code; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/CloseTypeEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 支付订单关闭类型 8 | * 字典值 close_type 9 | * @author xxm 10 | * @since 2024/6/3 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum CloseTypeEnum { 15 | 16 | /** 关闭 */ 17 | CLOSE("close", PayStatusEnum.CLOSE), 18 | /** 撤销 */ 19 | CANCEL("cancel", PayStatusEnum.CANCEL), 20 | ; 21 | 22 | private final String code; 23 | private final PayStatusEnum payStatus; 24 | } 25 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/GatewayCashierTypeEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 收银台类型 8 | * 字典: gateway_cashier_type 9 | * @author xxm 10 | * @since 2025/3/27 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum GatewayCashierTypeEnum { 15 | H5("h5", "H5收银台"), 16 | PC("pc", "PC收银台"), 17 | MINI_APP("mini_app", "小程序收银台"), 18 | ; 19 | 20 | private final String code; 21 | private final String name; 22 | } 23 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/GatewayPayEnvTypeEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 网关支付时所处的环境, 如H5浏览器, 微信浏览器, 支付宝浏览器等 8 | * @author xxm 9 | * @since 2025/3/29 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum GatewayPayEnvTypeEnum { 14 | H5("h5", "H5浏览器"), 15 | PC("pc", "PC浏览器"), 16 | WECHAT("wechat", "微信环境"), 17 | ALIPAY("alipay", "支付宝环境"), 18 | UNION_PAY("union_pay", "云闪付环境"), 19 | ; 20 | 21 | private final String code; 22 | private final String name; 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/MerchantNotifyTypeEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 商户消息通知类型, 业务系统使用什么样的方式接收通知消息 8 | * 字典: merchant_notify_type 9 | * @author xxm 10 | * @since 2024/6/5 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum MerchantNotifyTypeEnum { 15 | /** http */ 16 | HTTP("http"), 17 | /** websocket */ 18 | WEBSOCKET("websocket"), 19 | /** mq */ 20 | MQ("mq"), 21 | /** 不启用 */ 22 | NONE("none"); 23 | 24 | private final String code; 25 | } 26 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/MerchantStatusEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 商户状态枚举 8 | * 字典 merchant_status 9 | * @author xxm 10 | * @since 2024/6/24 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum MerchantStatusEnum { 15 | /** 16 | * 禁用 17 | */ 18 | DISABLED("disabled", "禁用"), 19 | /** 20 | * 启用 21 | */ 22 | ENABLE("enable", "启用"); 23 | 24 | private final String code; 25 | private final String name; 26 | } 27 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/PayAllocStatusEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 支付订单的分账状态 8 | * 字典表:pay_alloc_status 9 | * @author xxm 10 | * @since 2024/4/16 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum PayAllocStatusEnum { 15 | WAITING("waiting", "待分账"), 16 | ALLOCATION("allocation", "已分账"), 17 | ; 18 | 19 | private final String code; 20 | private final String name; 21 | } 22 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/PayLimitPayEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 限制支付类型枚举 8 | * @author xxm 9 | * @since 2025/3/10 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum PayLimitPayEnum { 14 | 15 | NO_CREDIT("no_credit", "信用卡支付"), 16 | ; 17 | 18 | private final String code; 19 | private final String name; 20 | } 21 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/SignTypeEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 支付签名类型 8 | * 字典 sign_type 9 | * @author xxm 10 | * @since 2023/12/24 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum SignTypeEnum { 15 | 16 | HMAC_SHA256("hmac_sha256", "HMAC_SHA256"), 17 | MD5("md5", "MD5"), 18 | SM3("sm3", "SM3"),; 19 | 20 | /** 支付方式 */ 21 | private final String code; 22 | private final String name; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/TradeFlowTypeEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 交易流水记录类型 8 | * 字典: trade_flow_type 9 | * @author xxm 10 | * @since 2024/2/20 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum TradeFlowTypeEnum { 15 | 16 | /** 支付 */ 17 | PAY("pay", "支付"), 18 | /** 退款 */ 19 | REFUND("refund", "退款"), 20 | /** 转账 */ 21 | TRANSFER("transfer", "转账"), 22 | ; 23 | 24 | private final String code; 25 | private final String name; 26 | } 27 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/enums/TransferStatusEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 转账状态 8 | * 字典: transfer_status 9 | * @author xxm 10 | * @since 2024/6/11 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum TransferStatusEnum { 15 | 16 | /** 转账中 */ 17 | PROGRESS("progress"), 18 | /** 转账成功 */ 19 | SUCCESS("success"), 20 | /** 转账关闭 */ 21 | CLOSE("close"), 22 | /** 转账失败 */ 23 | FAIL("fail"), 24 | ; 25 | 26 | private final String code; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/AmountExceedLimitException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 金额超过限额 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class AmountExceedLimitException extends PayFailureException{ 11 | 12 | public AmountExceedLimitException(String message) { 13 | super(DaxPayErrorCode.AMOUNT_EXCEED_LIMIT,message); 14 | } 15 | 16 | public AmountExceedLimitException() { 17 | super(DaxPayErrorCode.AMOUNT_EXCEED_LIMIT,"金额超过限额"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/ChannelNotEnableException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 支付通道未启用 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class ChannelNotEnableException extends PayFailureException{ 11 | 12 | public ChannelNotEnableException(String message) { 13 | super(DaxPayErrorCode.CHANNEL_NOT_ENABLE,message); 14 | } 15 | 16 | public ChannelNotEnableException() { 17 | super(DaxPayErrorCode.CHANNEL_NOT_ENABLE,"支付通道未启用"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/ChannelNotExistException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 不存在的支付通道 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class ChannelNotExistException extends PayFailureException{ 11 | 12 | public ChannelNotExistException(String message) { 13 | super(DaxPayErrorCode.CHANNEL_NOT_EXIST,message); 14 | } 15 | 16 | public ChannelNotExistException() { 17 | super(DaxPayErrorCode.CHANNEL_NOT_EXIST,"不存在的支付通道"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/ConfigErrorException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 配置错误 7 | * @author xxm 8 | * @since 2024/6/18 9 | */ 10 | public class ConfigErrorException extends PayFailureException{ 11 | 12 | public ConfigErrorException(String message) { 13 | super(DaxPayErrorCode.CONFIG_ERROR,message); 14 | } 15 | 16 | public ConfigErrorException() { 17 | super(DaxPayErrorCode.CONFIG_ERROR,"配置错误"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/ConfigNotEnableException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 配置未启用 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class ConfigNotEnableException extends PayFailureException{ 11 | 12 | public ConfigNotEnableException(String message) { 13 | super(DaxPayErrorCode.CONFIG_NOT_ENABLE,message); 14 | } 15 | 16 | public ConfigNotEnableException() { 17 | super(DaxPayErrorCode.CONFIG_NOT_ENABLE,"配置未启用"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/ConfigNotExistException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 配置不存在 7 | * @author xxm 8 | * @since 2024/6/27 9 | */ 10 | public class ConfigNotExistException extends PayFailureException{ 11 | 12 | public ConfigNotExistException(String message) { 13 | super(DaxPayErrorCode.CONFIG_NOT_EXIST,message); 14 | } 15 | 16 | public ConfigNotExistException() { 17 | super(DaxPayErrorCode.CONFIG_NOT_EXIST,"配置不存在"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/DataErrorException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 数据错误 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class DataErrorException extends PayFailureException{ 11 | 12 | public DataErrorException(String message) { 13 | super(DaxPayErrorCode.DATA_ERROR,message); 14 | } 15 | 16 | public DataErrorException() { 17 | super(DaxPayErrorCode.DATA_ERROR,"数据错误"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/MethodNotEnableException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 支付方式未启用 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class MethodNotEnableException extends PayFailureException{ 11 | 12 | public MethodNotEnableException(String message) { 13 | super(DaxPayErrorCode.METHOD_NOT_ENABLE,message); 14 | } 15 | 16 | public MethodNotEnableException() { 17 | super(DaxPayErrorCode.METHOD_NOT_ENABLE,"支付方式未启用"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/MethodNotExistException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 不存在的支付方式 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class MethodNotExistException extends PayFailureException{ 11 | 12 | public MethodNotExistException(String message) { 13 | super(DaxPayErrorCode.METHOD_NOT_EXIST,message); 14 | } 15 | 16 | public MethodNotExistException() { 17 | super(DaxPayErrorCode.METHOD_NOT_EXIST,"不存在的支付方式"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/OperationFailException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 操作失败 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class OperationFailException extends PayFailureException{ 11 | 12 | public OperationFailException(String message) { 13 | super(DaxPayErrorCode.OPERATION_FAIL,message); 14 | } 15 | 16 | public OperationFailException() { 17 | super(DaxPayErrorCode.OPERATION_FAIL,"操作失败"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/OperationProcessingException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 操作处理中, 请勿重复操作 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class OperationProcessingException extends PayFailureException{ 11 | 12 | public OperationProcessingException(String message) { 13 | super(DaxPayErrorCode.OPERATION_PROCESSING,message); 14 | } 15 | 16 | public OperationProcessingException() { 17 | super(DaxPayErrorCode.OPERATION_PROCESSING,"操作处理中, 请勿重复操作"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/OperationUnsupportedException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 不支持的操作 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class OperationUnsupportedException extends PayFailureException{ 11 | 12 | public OperationUnsupportedException(String message) { 13 | super(DaxPayErrorCode.OPERATION_UNSUPPORTED,message); 14 | } 15 | 16 | public OperationUnsupportedException() { 17 | super(DaxPayErrorCode.OPERATION_UNSUPPORTED,"不支持的操作"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/PayFailureException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import cn.bootx.platform.core.exception.BizException; 4 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 5 | 6 | /** 7 | * 支付错误 8 | * 9 | * @author xxm 10 | * @since 2020/12/8 11 | */ 12 | public class PayFailureException extends BizException { 13 | 14 | 15 | public PayFailureException(int code, String message) { 16 | super(code, message); 17 | } 18 | 19 | public PayFailureException(String message) { 20 | super(DaxPayErrorCode.UNCLASSIFIED_ERROR, message); 21 | } 22 | 23 | public PayFailureException() { 24 | super(DaxPayErrorCode.UNCLASSIFIED_ERROR, "支付失败"); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/StatusNotExistException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 不存在的状态 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class StatusNotExistException extends PayFailureException{ 11 | 12 | public StatusNotExistException(String message) { 13 | super(DaxPayErrorCode.STATUS_NOT_EXIST,message); 14 | } 15 | 16 | public StatusNotExistException() { 17 | super(DaxPayErrorCode.STATUS_NOT_EXIST,"不存在的状态"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/SystemUnknownErrorException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 未知异常,系统无法处理 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class SystemUnknownErrorException extends PayFailureException{ 11 | 12 | public SystemUnknownErrorException(String message) { 13 | super(DaxPayErrorCode.SYSTEM_UNKNOWN_ERROR,message); 14 | } 15 | 16 | public SystemUnknownErrorException() { 17 | super(DaxPayErrorCode.SYSTEM_UNKNOWN_ERROR,"未知异常,系统无法处理"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/TradeClosedException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 交易已关闭 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class TradeClosedException extends PayFailureException{ 11 | 12 | public TradeClosedException(String message) { 13 | super(DaxPayErrorCode.TRADE_CLOSED,message); 14 | } 15 | 16 | public TradeClosedException() { 17 | super(DaxPayErrorCode.TRADE_CLOSED,"交易已关闭"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/TradeFailException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 交易失败 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class TradeFailException extends PayFailureException{ 11 | 12 | public TradeFailException(String message) { 13 | super(DaxPayErrorCode.TRADE_FAIL,message); 14 | } 15 | 16 | public TradeFailException() { 17 | super(DaxPayErrorCode.TRADE_FAIL,"交易失败"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/TradeNotExistException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 交易不存在 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class TradeNotExistException extends PayFailureException{ 11 | 12 | public TradeNotExistException(String message) { 13 | super(DaxPayErrorCode.TRADE_NOT_EXIST,message); 14 | } 15 | 16 | public TradeNotExistException() { 17 | super(DaxPayErrorCode.TRADE_NOT_EXIST,"交易不存在"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/TradeProcessingException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 交易处理中, 请勿重复操作 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class TradeProcessingException extends PayFailureException{ 11 | 12 | public TradeProcessingException(String message) { 13 | super(DaxPayErrorCode.TRADE_PROCESSING,message); 14 | } 15 | 16 | public TradeProcessingException() { 17 | super(DaxPayErrorCode.TRADE_PROCESSING,"交易处理中,请勿重复操作"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/TradeStatusErrorException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 交易状态错误 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class TradeStatusErrorException extends PayFailureException{ 11 | 12 | public TradeStatusErrorException(String message) { 13 | super(DaxPayErrorCode.TRADE_STATUS_ERROR,message); 14 | } 15 | 16 | public TradeStatusErrorException() { 17 | super(DaxPayErrorCode.TRADE_STATUS_ERROR,"交易状态错误"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/UnsupportedAbilityException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 不支持该能力 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class UnsupportedAbilityException extends PayFailureException{ 11 | 12 | public UnsupportedAbilityException(String message) { 13 | super(DaxPayErrorCode.UNSUPPORTED_ABILITY,message); 14 | } 15 | 16 | public UnsupportedAbilityException() { 17 | super(DaxPayErrorCode.UNSUPPORTED_ABILITY,"不支持该能力"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/exception/VerifySignFailedException.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.exception; 2 | 3 | import org.dromara.daxpay.core.code.DaxPayErrorCode; 4 | 5 | /** 6 | * 验签失败 7 | * @author xxm 8 | * @since 2024/6/17 9 | */ 10 | public class VerifySignFailedException extends PayFailureException{ 11 | 12 | public VerifySignFailedException(String message) { 13 | super(DaxPayErrorCode.VERIFY_SIGN_FAILED,message); 14 | } 15 | 16 | public VerifySignFailedException() { 17 | super(DaxPayErrorCode.VERIFY_SIGN_FAILED,"验签失败"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/param/allocation/order/AllocFinishParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.param.allocation.order; 2 | 3 | import org.dromara.daxpay.core.param.PaymentCommonParam; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | /** 9 | * 分账完结参数 10 | * @author xxm 11 | * @since 2024/4/7 12 | */ 13 | @EqualsAndHashCode(callSuper = true) 14 | @Data 15 | @Schema(title = "分账请求参数") 16 | public class AllocFinishParam extends PaymentCommonParam { 17 | 18 | @Schema(description = "商户分账单号") 19 | private String bizAllocNo; 20 | 21 | @Schema(description = "分账单号") 22 | private String allocNo; 23 | } 24 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/param/allocation/order/QueryAllocOrderParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.param.allocation.order; 2 | 3 | import org.dromara.daxpay.core.param.PaymentCommonParam; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | /** 9 | * 分账订单查询参数 10 | * @author xxm 11 | * @since 2024/4/7 12 | */ 13 | @EqualsAndHashCode(callSuper = true) 14 | @Data 15 | @Schema(title = "支付订单查询参数") 16 | public class QueryAllocOrderParam extends PaymentCommonParam { 17 | 18 | @Schema(description = "分账单号") 19 | private String allocNo; 20 | 21 | @Schema(description = "商户分账单号") 22 | private String bizAllocNo; 23 | } 24 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/param/allocation/receiver/AllocReceiverRemoveParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.param.allocation.receiver; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import jakarta.validation.constraints.NotBlank; 5 | import jakarta.validation.constraints.Size; 6 | import lombok.Data; 7 | import lombok.experimental.Accessors; 8 | 9 | /** 10 | * 分账接收者删除参数 11 | * @author xxm 12 | * @since 2024/5/20 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(title = "分账接收者删除参数") 17 | public class AllocReceiverRemoveParam { 18 | 19 | @Schema(description = "接收者编号") 20 | @NotBlank(message = "接收者编号必填") 21 | @Size(max = 32, message = "接收者编号不可超过32位") 22 | private String receiverNo; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/param/assist/QueryAuthParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.param.assist; 2 | 3 | import org.dromara.daxpay.core.param.PaymentCommonParam; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.experimental.Accessors; 8 | 9 | /** 10 | * 查询OpenId参数 11 | * @author xxm 12 | * @since 2024/9/19 13 | */ 14 | @EqualsAndHashCode(callSuper = true) 15 | @Data 16 | @Accessors(chain = true) 17 | @Schema(title = "查询OpenId参数") 18 | public class QueryAuthParam extends PaymentCommonParam { 19 | 20 | @Schema(description = "标识码") 21 | private String queryCode; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/param/gateway/GatewayCashierBarPayParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.param.gateway; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 收银台聚合付款码支付 9 | * @author xxm 10 | * @since 2025/4/2 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "收银台聚合付款码支付") 15 | public class GatewayCashierBarPayParam { 16 | 17 | @Schema(description = "要支付的订单号") 18 | private String orderNo; 19 | 20 | @Schema(description = "付款码") 21 | private String authCode; 22 | } 23 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/param/gateway/GatewayCashierPayParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.param.gateway; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 网关支付参数 9 | * @author xxm 10 | * @since 2024/11/26 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "网关收银台支付参数") 15 | public class GatewayCashierPayParam { 16 | 17 | @Schema(description = "要支付的订单号") 18 | private String orderNo; 19 | 20 | @Schema(description = "支付配置项ID") 21 | private Long itemId; 22 | 23 | @Schema(description = "唯一标识") 24 | private String openId; 25 | 26 | @Schema(description = "付款码") 27 | private String authCode; 28 | } 29 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/result/assist/AuthUrlResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.result.assist; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 获取OpenId授权链接和查询标识返回类 9 | * @author xxm 10 | * @since 2024/6/15 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "授权链接和查询标识返回类") 15 | public class AuthUrlResult { 16 | 17 | /** 授权访问链接 */ 18 | @Schema(description = "授权访问链接") 19 | private String authUrl; 20 | 21 | /** 查询标识码, 用于查询是否获取到了OpenId */ 22 | @Schema(description = "查询标识码") 23 | private String queryCode; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/result/assist/OpenIdResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.result.assist; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 微信OpenId查询结果 9 | * @author xxm 10 | * @since 2024/6/15 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "微信OpenId查询结果") 15 | public class OpenIdResult { 16 | 17 | @Schema(description = "OpenId") 18 | private String openId; 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/result/trade/pay/PaySyncResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.result.trade.pay; 2 | 3 | import org.dromara.daxpay.core.enums.PayStatusEnum; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | 9 | /** 10 | * 支付同步结果 11 | * @author xxm 12 | * @since 2023/12/27 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(title = "支付同步结果") 17 | public class PaySyncResult { 18 | 19 | /** 20 | * 退款订单同步后的状态状态 21 | * @see PayStatusEnum 22 | */ 23 | @Schema(description = "同步状态") 24 | private String orderStatus; 25 | 26 | /** 27 | * 是否触发了调整 28 | */ 29 | @Schema(description = "是否触发了调整") 30 | private boolean adjust; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/result/trade/refund/RefundSyncResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.result.trade.refund; 2 | 3 | import org.dromara.daxpay.core.enums.RefundStatusEnum; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | 9 | /** 10 | * 退款同步结果 11 | * @author xxm 12 | * @since 2023/12/27 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(title = "退款同步结果") 17 | public class RefundSyncResult{ 18 | 19 | /** 20 | * 退款订单同步后的状态状态 21 | * @see RefundStatusEnum 22 | */ 23 | @Schema(description = "同步状态") 24 | private String orderStatus; 25 | 26 | /** 27 | * 是否触发了调整 28 | */ 29 | @Schema(description = "是否触发了调整") 30 | private boolean adjust; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/result/trade/transfer/TransferSyncResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.result.trade.transfer; 2 | 3 | import org.dromara.daxpay.core.enums.TransferStatusEnum; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * 转账同步结果 10 | * @author xxm 11 | * @since 2024/6/17 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | @Schema(title = "转账同步结果") 16 | public class TransferSyncResult { 17 | 18 | /** 19 | * 转账状态 20 | * @see TransferStatusEnum 21 | */ 22 | @Schema(description = "转账状态") 23 | private String orderStatus; 24 | 25 | /** 26 | * 是否触发了调整 27 | */ 28 | @Schema(description = "是否触发了调整") 29 | private boolean adjust; 30 | } 31 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/util/DaxRes.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.core.util; 2 | 3 | import org.dromara.daxpay.core.result.DaxResult; 4 | import lombok.experimental.UtilityClass; 5 | 6 | import static cn.bootx.platform.core.code.CommonCode.SUCCESS_CODE; 7 | import static cn.bootx.platform.core.code.CommonCode.SUCCESS_MSG; 8 | 9 | /** 10 | * 支付相应参数构造工具类 11 | * @author xxm 12 | * @since 2023/12/17 13 | */ 14 | @UtilityClass 15 | public class DaxRes { 16 | 17 | public DaxResult ok(T data) { 18 | return new DaxResult<>(SUCCESS_CODE, data, SUCCESS_MSG); 19 | } 20 | 21 | public static DaxResult ok() { 22 | return new DaxResult<>(SUCCESS_CODE, SUCCESS_MSG); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/DaxpayPayServiceApp.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.context.properties.ConfigurationPropertiesScan; 6 | import org.springframework.context.annotation.ComponentScan; 7 | 8 | /** 9 | * 支付业务实现层 10 | * @author xxm 11 | * @since 2024/5/23 12 | */ 13 | @ConfigurationPropertiesScan 14 | @MapperScan(annotationClass = Mapper.class) 15 | @ComponentScan 16 | public class DaxpayPayServiceApp { 17 | } 18 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/bo/allocation/AllocSyncResultBo.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.bo.allocation; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | /** 7 | * 分账同步结果 8 | * @author xxm 9 | * @since 2024/5/23 10 | */ 11 | @Data 12 | @Accessors(chain = true) 13 | public class AllocSyncResultBo { 14 | /** 同步时网关返回的对象, 序列化为json字符串 */ 15 | private String syncInfo; 16 | } 17 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/bo/trade/PayResultBo.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.bo.trade; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | import java.time.LocalDateTime; 7 | 8 | /** 9 | * 支付结果业务类 10 | * @author xxm 11 | * @since 2024/7/23 12 | */ 13 | @Data 14 | @Accessors(chain = true) 15 | public class PayResultBo { 16 | 17 | /** 18 | * 第三方支付网关生成的订单号, 用与将记录关联起来 19 | * 1. 如付款码支付直接成功时会出现 20 | * 2. 部分通道创建订单是会直接返回 21 | */ 22 | private String outOrderNo; 23 | 24 | /** 是否支付完成 */ 25 | private boolean complete; 26 | 27 | /** 完成时间 */ 28 | private LocalDateTime finishTime; 29 | 30 | /** 支付参数体(通常用于发起支付的参数) */ 31 | private String payBody; 32 | } 33 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/bo/trade/RefundResultBo.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.bo.trade; 2 | 3 | import org.dromara.daxpay.core.enums.RefundStatusEnum; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | /** 10 | * 退款结果业务类 11 | * @author xxm 12 | * @since 2024/7/23 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | public class RefundResultBo { 17 | /** 18 | * 第三方支付网关生成的退款订单号, 用与将记录关联起来 19 | */ 20 | private String outRefundNo; 21 | 22 | /** 23 | * 退款状态 24 | */ 25 | private RefundStatusEnum status; 26 | 27 | /** 退款完成时间 */ 28 | private LocalDateTime finishTime; 29 | } 30 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/bo/trade/TransferResultBo.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.bo.trade; 2 | 3 | import org.dromara.daxpay.core.enums.TransferStatusEnum; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | /** 10 | * 转账结果业务类 11 | * @author xxm 12 | * @since 2024/7/23 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | public class TransferResultBo { 17 | /** 通道转账订单号 */ 18 | private String outTransferNo; 19 | 20 | /** 状态 */ 21 | private TransferStatusEnum status = TransferStatusEnum.PROGRESS; 22 | 23 | /** 完成时间 */ 24 | private LocalDateTime finishTime; 25 | } 26 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/common/anno/PaymentVerify.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.common.anno; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 支付校验校验标识
7 | * 入参出参要求: 8 | *

9 | * 1. 方法至少有一个参数,并且需要签名的参数放在第一位, 并为PaymentCommonParam的子类
10 | * 2. 返回对象必须为 DaxResult 格式 11 | *

12 | * 13 | * 注解实现的功能(按先后顺序):
14 | * 1. 参数校验 15 | * 2. 商户和应用信息初始化 16 | * 3. 终端信息初始化 17 | * 4. 参数签名校验 18 | * 5. 参数请求时间校验 19 | * 20 | * 21 | * @author xxm 22 | * @since 2023/12/22 23 | */ 24 | @Target({ ElementType.METHOD, ElementType.TYPE }) 25 | @Retention(RetentionPolicy.RUNTIME) 26 | @Documented 27 | @Inherited 28 | public @interface PaymentVerify { 29 | } 30 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/allocation/AllocConfigConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.allocation; 2 | 3 | import org.dromara.daxpay.service.entity.allocation.AllocConfig; 4 | import org.dromara.daxpay.service.param.allocation.AllocConfigParam; 5 | import org.dromara.daxpay.service.result.allocation.AllocConfigResult; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | /** 10 | * 分账配置 11 | * @author xxm 12 | * @since 2024/12/9 13 | */ 14 | @Mapper 15 | public interface AllocConfigConvert { 16 | 17 | AllocConfigConvert CONVERT = Mappers.getMapper(AllocConfigConvert.class); 18 | 19 | AllocConfigResult toResult(AllocConfig in); 20 | 21 | AllocConfig toEntity(AllocConfigParam in); 22 | } 23 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/allocation/AllocGroupConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.allocation; 2 | 3 | import org.dromara.daxpay.service.entity.allocation.receiver.AllocGroup; 4 | import org.dromara.daxpay.service.param.allocation.group.AllocGroupParam; 5 | import org.dromara.daxpay.service.result.allocation.receiver.AllocGroupVo; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | /** 10 | * 11 | * @author xxm 12 | * @since 2024/4/1 13 | */ 14 | @Mapper 15 | public interface AllocGroupConvert { 16 | AllocGroupConvert CONVERT = Mappers.getMapper(AllocGroupConvert.class); 17 | 18 | AllocGroupVo toVo(AllocGroup in); 19 | 20 | AllocGroup toEntity(AllocGroupParam in); 21 | } 22 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/assist/TerminalDeviceConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.assist; 2 | 3 | import org.dromara.daxpay.service.entity.assist.TerminalDevice; 4 | import org.dromara.daxpay.service.param.termina.TerminalDeviceParam; 5 | import org.dromara.daxpay.service.result.termina.TerminalDeviceResult; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | /** 10 | * 支付终端设备转换 11 | * @author xxm 12 | * @since 2025/3/8 13 | */ 14 | @Mapper 15 | public interface TerminalDeviceConvert { 16 | TerminalDeviceConvert CONVERT = Mappers.getMapper(TerminalDeviceConvert.class); 17 | 18 | TerminalDeviceResult toResult(TerminalDevice entity); 19 | 20 | TerminalDevice toEntity(TerminalDeviceParam param); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/config/ChannelConfigConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.config; 2 | 3 | import org.dromara.daxpay.service.entity.config.ChannelConfig; 4 | import org.dromara.daxpay.service.result.config.ChannelConfigResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 通道配置 10 | * @author xxm 11 | * @since 2024/6/25 12 | */ 13 | @Mapper 14 | public interface ChannelConfigConvert { 15 | ChannelConfigConvert INSTANCE = Mappers.getMapper(ChannelConfigConvert.class); 16 | 17 | ChannelConfigResult toResult(ChannelConfig in); 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/config/PlatformConfigConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.config; 2 | 3 | import org.dromara.daxpay.service.entity.config.PlatformConfig; 4 | import org.dromara.daxpay.service.result.config.PlatformConfigResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 10 | * @author xxm 11 | * @since 2024/9/19 12 | */ 13 | @Mapper 14 | public interface PlatformConfigConvert { 15 | PlatformConfigConvert CONVERT = Mappers.getMapper(PlatformConfigConvert.class); 16 | 17 | PlatformConfigResult toResult(PlatformConfig entity); 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/constant/ApiConstConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.constant; 2 | 3 | import org.dromara.daxpay.service.entity.constant.ApiConst; 4 | import org.dromara.daxpay.service.result.constant.ApiConstResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 10 | * @author xxm 11 | * @since 2024/7/14 12 | */ 13 | @Mapper 14 | public interface ApiConstConvert { 15 | ApiConstConvert CONVERT = Mappers.getMapper(ApiConstConvert.class); 16 | 17 | ApiConstResult toResult(ApiConst source); 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/constant/ChannelConstConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.constant; 2 | 3 | import org.dromara.daxpay.service.entity.constant.ChannelConst; 4 | import org.dromara.daxpay.service.result.constant.ChannelConstResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 10 | * @author xxm 11 | * @since 2024/7/14 12 | */ 13 | @Mapper 14 | public interface ChannelConstConvert { 15 | ChannelConstConvert CONVERT = Mappers.getMapper(ChannelConstConvert.class); 16 | 17 | ChannelConstResult toResult(ChannelConst source); 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/constant/MerchantNotifyConstConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.constant; 2 | 3 | import org.dromara.daxpay.service.entity.constant.MerchantNotifyConst; 4 | import org.dromara.daxpay.service.result.constant.MerchantNotifyConstResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 10 | * @author xxm 11 | * @since 2024/8/5 12 | */ 13 | @Mapper 14 | public interface MerchantNotifyConstConvert { 15 | MerchantNotifyConstConvert CONVERT = Mappers.getMapper(MerchantNotifyConstConvert.class); 16 | 17 | MerchantNotifyConstResult toResult(MerchantNotifyConst model); 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/constant/MethodConstConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.constant; 2 | 3 | import org.dromara.daxpay.service.entity.constant.PayMethodConst; 4 | import org.dromara.daxpay.service.result.constant.PayMethodConstResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 10 | * @author xxm 11 | * @since 2024/7/14 12 | */ 13 | @Mapper 14 | public interface MethodConstConvert { 15 | MethodConstConvert CONVERT = Mappers.getMapper(MethodConstConvert.class); 16 | 17 | PayMethodConstResult toResult(PayMethodConst source); 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/merchant/MchAppConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.merchant; 2 | 3 | import org.dromara.daxpay.service.entity.merchant.MchApp; 4 | import org.dromara.daxpay.service.param.merchant.MchAppParam; 5 | import org.dromara.daxpay.service.result.merchant.MchAppResult; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | /** 10 | * 11 | * @author xxm 12 | * @since 2024/6/24 13 | */ 14 | @Mapper 15 | public interface MchAppConvert { 16 | MchAppConvert CONVERT = Mappers.getMapper(MchAppConvert.class); 17 | 18 | MchAppResult toResult(MchApp entity); 19 | 20 | MchApp toEntity(MchAppParam param); 21 | } 22 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/order/pay/PayOrderConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.order.pay; 2 | 3 | import org.dromara.daxpay.core.result.trade.pay.PayOrderResult; 4 | import org.dromara.daxpay.service.entity.order.pay.PayOrder; 5 | import org.dromara.daxpay.service.result.order.pay.PayOrderVo; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | /** 10 | * 支付订单 11 | * @author xxm 12 | * @since 2024/6/27 13 | */ 14 | @Mapper 15 | public interface PayOrderConvert { 16 | PayOrderConvert CONVERT = Mappers.getMapper(PayOrderConvert.class); 17 | 18 | PayOrderVo toVo(PayOrder payOrder); 19 | 20 | PayOrderResult toResult(PayOrder payOrder); 21 | } 22 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/order/refund/RefundOrderConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.order.refund; 2 | 3 | import org.dromara.daxpay.core.result.trade.refund.RefundOrderResult; 4 | import org.dromara.daxpay.service.entity.order.refund.RefundOrder; 5 | import org.dromara.daxpay.service.result.order.refund.RefundOrderVo; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | /** 10 | * @author xxm 11 | * @since 2022/3/2 12 | */ 13 | @Mapper 14 | public interface RefundOrderConvert { 15 | 16 | RefundOrderConvert CONVERT = Mappers.getMapper(RefundOrderConvert.class); 17 | 18 | RefundOrderVo toVo(RefundOrder in); 19 | 20 | RefundOrderResult toResult(RefundOrder in); 21 | } 22 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/order/transfer/TransferOrderConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.order.transfer; 2 | 3 | import org.dromara.daxpay.core.result.trade.transfer.TransferOrderResult; 4 | import org.dromara.daxpay.service.entity.order.transfer.TransferOrder; 5 | import org.dromara.daxpay.service.result.order.transfer.TransferOrderVo; 6 | import org.mapstruct.Mapper; 7 | import org.mapstruct.factory.Mappers; 8 | 9 | /** 10 | * 11 | * @author xxm 12 | * @since 2024/7/20 13 | */ 14 | @Mapper 15 | public interface TransferOrderConvert { 16 | TransferOrderConvert CONVERT = Mappers.getMapper(TransferOrderConvert.class); 17 | 18 | TransferOrderVo toVo(TransferOrder in); 19 | 20 | TransferOrderResult toResult(TransferOrder in); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/record/PayCloseRecordConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.record; 2 | 3 | import org.dromara.daxpay.service.entity.record.close.PayCloseRecord; 4 | import org.dromara.daxpay.service.result.record.close.PayCloseRecordResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 10 | * @author xxm 11 | * @since 2024/1/4 12 | */ 13 | @Mapper 14 | public interface PayCloseRecordConvert { 15 | PayCloseRecordConvert CONVERT = Mappers.getMapper(PayCloseRecordConvert.class); 16 | 17 | /** 18 | * 转换 19 | */ 20 | PayCloseRecordResult convert(PayCloseRecord in); 21 | } 22 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/record/TradeCallbackRecordConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.record; 2 | 3 | import org.dromara.daxpay.service.entity.record.callback.TradeCallbackRecord; 4 | import org.dromara.daxpay.service.result.record.callback.TradeCallbackRecordResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 回调记录 10 | * @author xxm 11 | * @since 2024/7/22 12 | */ 13 | @Mapper 14 | public interface TradeCallbackRecordConvert { 15 | TradeCallbackRecordConvert CONVERT = Mappers.getMapper(TradeCallbackRecordConvert.class); 16 | 17 | TradeCallbackRecordResult convert(TradeCallbackRecord record); 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/record/TradeFlowRecordConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.record; 2 | 3 | import org.dromara.daxpay.service.entity.record.flow.TradeFlowRecord; 4 | import org.dromara.daxpay.service.result.record.flow.TradeFlowRecordResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 10 | * @author xxm 11 | * @since 2024/4/21 12 | */ 13 | @Mapper 14 | public interface TradeFlowRecordConvert { 15 | TradeFlowRecordConvert CONVERT = Mappers.getMapper(TradeFlowRecordConvert.class); 16 | 17 | TradeFlowRecordResult convert(TradeFlowRecord entity); 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/convert/record/TradeSyncRecordConvert.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.convert.record; 2 | 3 | import org.dromara.daxpay.service.entity.record.sync.TradeSyncRecord; 4 | import org.dromara.daxpay.service.result.record.sync.TradeSyncRecordResult; 5 | import org.mapstruct.Mapper; 6 | import org.mapstruct.factory.Mappers; 7 | 8 | /** 9 | * 支付同步记录同步 10 | * @author xxm 11 | * @since 2023/7/14 12 | */ 13 | @Mapper 14 | public interface TradeSyncRecordConvert { 15 | TradeSyncRecordConvert CONVERT = Mappers.getMapper(TradeSyncRecordConvert.class); 16 | 17 | TradeSyncRecordResult convert(TradeSyncRecord in); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/allocation/AllocConfigMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.allocation; 2 | 3 | import org.dromara.daxpay.service.entity.allocation.AllocConfig; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/10/6 11 | */ 12 | @Mapper 13 | public interface AllocConfigMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/allocation/order/AllocDetailMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.allocation.order; 2 | 3 | import org.dromara.daxpay.service.entity.allocation.order.AllocDetail; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/11/14 11 | */ 12 | @Mapper 13 | public interface AllocDetailMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/allocation/order/AllocOrderMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.allocation.order; 2 | 3 | import org.dromara.daxpay.service.entity.allocation.order.AllocOrder; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/11/14 11 | */ 12 | @Mapper 13 | public interface AllocOrderMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/allocation/receiver/AllocGroupMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.allocation.receiver; 2 | 3 | import org.dromara.daxpay.service.entity.allocation.receiver.AllocGroup; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/10/6 11 | */ 12 | @Mapper 13 | public interface AllocGroupMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/allocation/receiver/AllocGroupReceiverMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.allocation.receiver; 2 | 3 | import org.dromara.daxpay.service.entity.allocation.receiver.AllocGroupReceiver; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/10/6 11 | */ 12 | @Mapper 13 | public interface AllocGroupReceiverMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/allocation/receiver/AllocReceiverMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.allocation.receiver; 2 | 3 | import org.dromara.daxpay.service.entity.allocation.receiver.AllocReceiver; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/10/6 11 | */ 12 | @Mapper 13 | public interface AllocReceiverMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/assist/TerminalDeviceMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.assist; 2 | 3 | import org.dromara.daxpay.service.entity.assist.TerminalDevice; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 支付终端设备管理 9 | * @author xxm 10 | * @since 2025/3/7 11 | */ 12 | @Mapper 13 | public interface TerminalDeviceMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/config/ChannelConfigMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.config; 2 | 3 | import org.dromara.daxpay.service.entity.config.ChannelConfig; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 通道支付配置 9 | * @author xxm 10 | * @since 2024/6/25 11 | */ 12 | @Mapper 13 | public interface ChannelConfigMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/config/MerchantNotifyConfigMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.config; 2 | 3 | import org.dromara.daxpay.service.entity.config.MerchantNotifyConfig; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 商户应用消息通知配置 9 | * @author xxm 10 | * @since 2024/8/2 11 | */ 12 | @Mapper 13 | public interface MerchantNotifyConfigMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/config/PlatformConfigManager.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.config; 2 | 3 | import cn.bootx.platform.common.mybatisplus.impl.BaseManager; 4 | import org.dromara.daxpay.service.entity.config.PlatformConfig; 5 | import lombok.RequiredArgsConstructor; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.stereotype.Repository; 8 | 9 | /** 10 | * 11 | * @author xxm 12 | * @since 2024/7/17 13 | */ 14 | @Slf4j 15 | @Repository 16 | @RequiredArgsConstructor 17 | public class PlatformConfigManager extends BaseManager { 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/config/PlatformConfigMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.config; 2 | 3 | import org.dromara.daxpay.service.entity.config.PlatformConfig; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/7/17 11 | */ 12 | @Mapper 13 | public interface PlatformConfigMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/constant/ApiConstMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.constant; 2 | 3 | import org.dromara.daxpay.service.entity.constant.ApiConst; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/7/14 11 | */ 12 | @Mapper 13 | public interface ApiConstMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/constant/ChannelConstMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.constant; 2 | 3 | import org.dromara.daxpay.service.entity.constant.ChannelConst; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/6/25 11 | */ 12 | @Mapper 13 | public interface ChannelConstMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/constant/MerchantNotifyConstMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.constant; 2 | 3 | import org.dromara.daxpay.service.entity.constant.MerchantNotifyConst; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/7/30 11 | */ 12 | @Mapper 13 | public interface MerchantNotifyConstMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/constant/MethodConstMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.constant; 2 | 3 | import org.dromara.daxpay.service.entity.constant.PayMethodConst; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 支付方式 9 | * @author xxm 10 | * @since 2024/6/26 11 | */ 12 | @Mapper 13 | public interface MethodConstMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/gateway/AggregateBarPayConfigMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.gateway; 2 | 3 | import org.dromara.daxpay.service.entity.gateway.AggregateBarPayConfig; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 网关聚合付款码支付配置 9 | * @author xxm 10 | * @since 2025/3/24 11 | */ 12 | @Mapper 13 | public interface AggregateBarPayConfigMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/gateway/AggregatePayConfigMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.gateway; 2 | 3 | import org.dromara.daxpay.service.entity.gateway.AggregatePayConfig; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 网关聚合支付配置 9 | * @author xxm 10 | * @since 2025/3/19 11 | */ 12 | @Mapper 13 | public interface AggregatePayConfigMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/gateway/CashierCodeConfigMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.gateway; 2 | 3 | import org.dromara.daxpay.service.entity.gateway.CashierCodeConfig; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 收银台码牌配置 9 | * @author xxm 10 | * @since 2024/11/20 11 | */ 12 | @Mapper 13 | public interface CashierCodeConfigMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/gateway/CashierCodeItemConfigMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.gateway; 2 | 3 | import org.dromara.daxpay.service.entity.gateway.CashierCodeItemConfig; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 渠道码类型配置表 Mapper 接口 9 | * @author xxm 10 | * @since 2024/11/20 11 | */ 12 | @Mapper 13 | public interface CashierCodeItemConfigMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/gateway/CashierGroupConfigMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.gateway; 2 | 3 | import org.dromara.daxpay.service.entity.gateway.CashierGroupConfig; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 网关收银台分组配置 9 | * @author xxm 10 | * @since 2025/3/19 11 | */ 12 | @Mapper 13 | public interface CashierGroupConfigMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/gateway/CashierItemConfigMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.gateway; 2 | 3 | import org.dromara.daxpay.service.entity.gateway.CashierItemConfig; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 网关收银台配置项 9 | * @author xxm 10 | * @since 2025/3/19 11 | */ 12 | @Mapper 13 | public interface CashierItemConfigMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/gateway/GatewayPayConfigMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.gateway; 2 | 3 | import org.dromara.daxpay.service.entity.gateway.GatewayPayConfig; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | *网关支付配置 9 | * @author xxm 10 | * @since 2025/3/19 11 | */ 12 | @Mapper 13 | public interface GatewayPayConfigMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/merchant/MchAppMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.merchant; 2 | 3 | import org.dromara.daxpay.service.entity.merchant.MchApp; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 商户应用 9 | * @author xxm 10 | * @since 2024/5/27 11 | */ 12 | @Mapper 13 | public interface MchAppMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/notice/callback/MerchantCallbackRecordMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.notice.callback; 2 | 3 | import org.dromara.daxpay.service.entity.notice.callback.MerchantCallbackRecord; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/7/30 11 | */ 12 | @Mapper 13 | public interface MerchantCallbackRecordMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/notice/callback/MerchantCallbackTaskMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.notice.callback; 2 | 3 | import org.dromara.daxpay.service.entity.notice.callback.MerchantCallbackTask; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/7/30 11 | */ 12 | @Mapper 13 | public interface MerchantCallbackTaskMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/notice/notify/MerchantNotifyRecordMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.notice.notify; 2 | 3 | import org.dromara.daxpay.service.entity.notice.notify.MerchantNotifyRecord; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/7/30 11 | */ 12 | @Mapper 13 | public interface MerchantNotifyRecordMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/notice/notify/MerchantNotifyTaskMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.notice.notify; 2 | 3 | import org.dromara.daxpay.service.entity.notice.notify.MerchantNotifyTask; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/7/30 11 | */ 12 | @Mapper 13 | public interface MerchantNotifyTaskMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/record/callback/TradeCallbackRecordMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.record.callback; 2 | 3 | import org.dromara.daxpay.service.entity.record.callback.TradeCallbackRecord; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/7/22 11 | */ 12 | @Mapper 13 | public interface TradeCallbackRecordMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/record/close/PayCloseRecordMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.record.close; 2 | 3 | import org.dromara.daxpay.service.entity.record.close.PayCloseRecord; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * @author xxm 10 | * @since 2024/1/4 11 | */ 12 | @Mapper 13 | public interface PayCloseRecordMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/record/sync/TradeSyncRecordMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.record.sync; 2 | 3 | import org.dromara.daxpay.service.entity.record.sync.TradeSyncRecord; 4 | import com.github.yulichang.base.MPJBaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 支付同步记录 9 | * @author xxm 10 | * @since 2023/7/14 11 | */ 12 | @Mapper 13 | public interface TradeSyncRecordMapper extends MPJBaseMapper { 14 | } 15 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/dao/report/IndexMerchantReportMapper.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.dao.report; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | 5 | /** 6 | * 首页商户信息报表 7 | * @author xxm 8 | * @since 2024/11/17 9 | */ 10 | @Mapper 11 | public interface IndexMerchantReportMapper { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/entity/allocation/order/AllocAndDetail.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.entity.allocation.order; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 分账订单和分账明细 7 | * @author xxm 8 | * @since 2024/11/14 9 | */ 10 | public record AllocAndDetail(AllocOrder transaction, List details) {} 11 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/entity/config/MerchantNotifyConfig.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.entity.config; 2 | 3 | import org.dromara.daxpay.service.common.entity.MchAppBaseEntity; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.experimental.Accessors; 8 | 9 | /** 10 | * 商户应用消息通知配置 11 | * @author xxm 12 | * @since 2024/7/30 13 | */ 14 | @EqualsAndHashCode(callSuper = true) 15 | @Data 16 | @Accessors(chain = true) 17 | @TableName("pay_merchant_notify_config") 18 | public class MerchantNotifyConfig extends MchAppBaseEntity { 19 | 20 | /** 消息通知类型编码 */ 21 | private String code; 22 | 23 | /** 是否订阅 */ 24 | private boolean subscribe; 25 | } 26 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/enums/NoticeSendTypeEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 消息发送类型 8 | * 字典: notice_send_type 9 | * @author xxm 10 | * @since 2024/2/25 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum NoticeSendTypeEnum { 15 | 16 | /** 自动发送 */ 17 | AUTO("auto", "自动发送"), 18 | /** 手动发送 */ 19 | MANUAL("manual", "手动发送"); 20 | 21 | private final String type; 22 | private final String name; 23 | } 24 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/enums/NotifyContentTypeEnum.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 客户通知内容类型 8 | * 字典: notify_content_type 9 | * @author xxm 10 | * @since 2024/7/30 11 | */ 12 | @Getter 13 | @AllArgsConstructor 14 | public enum NotifyContentTypeEnum { 15 | 16 | /** 支付订单变动通知 */ 17 | PAY("pay", "支付订单变动通知"), 18 | 19 | /** 退款订单变动通知 */ 20 | REFUND("refund", "退款订单变动通知"), 21 | 22 | /** 支付订单变动通知 */ 23 | TRANSFER("transfer", "转账订单变动通知"), 24 | 25 | /** 分账订单变动通知 */ 26 | ALLOCATION("allocation", "分账订单变动通知"), 27 | ; 28 | private final String code; 29 | private final String name; 30 | } 31 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/param/config/NotifySubscribeParam.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.param.config; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 商户消息订阅参数 9 | * @author xxm 10 | * @since 2024/8/2 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "商户消息订阅参数") 15 | public class NotifySubscribeParam { 16 | 17 | /** 应用ID */ 18 | @Schema(description = "应用ID") 19 | private String appId; 20 | /** 消息类型 */ 21 | @Schema(description = "消息类型") 22 | private String notifyType; 23 | /** 是否订阅 */ 24 | @Schema(description = "是否订阅") 25 | private boolean subscribe; 26 | } 27 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/param/constant/MerchantNotifyConstQuery.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.param.constant; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 商户订阅消息类型 9 | * @author xxm 10 | * @since 2024/8/5 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "商户订阅消息类型") 15 | public class MerchantNotifyConstQuery { 16 | /** 编码 */ 17 | @Schema(description = "编码") 18 | private String code; 19 | 20 | /** 名称 */ 21 | @Schema(description = "名称") 22 | private String name; 23 | } 24 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/param/constant/MethodConstQuery.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.param.constant; 2 | 3 | import cn.bootx.platform.core.annotation.QueryParam; 4 | import io.swagger.v3.oas.annotations.media.Schema; 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | /** 9 | * 支付方式 10 | * @author xxm 11 | * @since 2024/7/14 12 | */ 13 | @QueryParam(type = QueryParam.CompareTypeEnum.LIKE) 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(title = "支付方式") 17 | public class MethodConstQuery { 18 | /** 编码 */ 19 | @Schema(description = "编码") 20 | private String code; 21 | 22 | /** 名称 */ 23 | @Schema(description = "名称") 24 | private String name; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/param/report/TradeReportQuery.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.param.report; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.time.LocalDate; 8 | 9 | /** 10 | * 交易报表查询参数 11 | * @author xxm 12 | * @since 2024/11/17 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(title = "交易报表查询参数") 17 | public class TradeReportQuery { 18 | 19 | /** 开始日期 */ 20 | @Schema(description = "开始日期") 21 | private LocalDate startDate; 22 | 23 | /** 结束日期 */ 24 | @Schema(description = "结束日期") 25 | private LocalDate endDate; 26 | } 27 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/result/gateway/GatewayPayUrlResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.result.gateway; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 网关支付响应参数 9 | * @author xxm 10 | * @since 2024/11/26 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "网关支付响应参数") 15 | public class GatewayPayUrlResult { 16 | 17 | @Schema(description = "收银台链接") 18 | private String url; 19 | 20 | @Schema(description = "收银台发起信息") 21 | private String payBody; 22 | } 23 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/result/record/flow/TradeFlowAmountResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.result.record.flow; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.math.BigDecimal; 8 | 9 | /** 10 | * 各类型流水汇总金额 11 | * @author xxm 12 | * @since 2024/8/19 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | @Schema(title = "各类型流水汇总金额") 17 | public class TradeFlowAmountResult { 18 | @Schema(description = "收入金额") 19 | private BigDecimal incomeAmount; 20 | @Schema(description = "退款金额") 21 | private BigDecimal refundAmount; 22 | @Schema(description = "转账金额") 23 | private BigDecimal transferAmount; 24 | } 25 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/result/report/MerchantReportResult.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.result.report; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | /** 8 | * 首页商户数量统计信息 9 | * @author xxm 10 | * @since 2024/11/17 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | @Schema(title = "首页商户数量统计信息") 15 | public class MerchantReportResult { 16 | 17 | @Schema(description = "普通商户数量") 18 | private Integer normalCount; 19 | 20 | @Schema(description = "特约商户数量") 21 | private Integer partnerCount; 22 | 23 | @Schema(description = "普通商户应用数量") 24 | private Integer normalAppCount; 25 | 26 | @Schema(description = "特约商户应用数量") 27 | private Integer partnerAppCount; 28 | } 29 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/service/report/IndexMerchantReportService.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.service.report; 2 | 3 | import lombok.RequiredArgsConstructor; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.stereotype.Service; 6 | 7 | /** 8 | * 首页商户报表服务 9 | * @author xxm 10 | * @since 2024/11/17 11 | */ 12 | @Slf4j 13 | @Service 14 | @RequiredArgsConstructor 15 | public class IndexMerchantReportService { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/strategy/AbsGatewayPayStrategy.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.strategy; 2 | 3 | import org.dromara.daxpay.core.param.gateway.GatewayCashierPayParam; 4 | import org.dromara.daxpay.core.param.trade.pay.PayParam; 5 | 6 | /** 7 | * 抽象网关支付策略 8 | * @author xxm 9 | * @since 2024/12/2 10 | */ 11 | public abstract class AbsGatewayPayStrategy implements PaymentStrategy{ 12 | 13 | /** 14 | * 支付参数处理 15 | */ 16 | public void handlePayParam(GatewayCashierPayParam cashierPayParam, PayParam payParam) { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/strategy/AbsSyncPayOrderStrategy.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.strategy; 2 | 3 | import org.dromara.daxpay.service.bo.sync.PaySyncResultBo; 4 | import org.dromara.daxpay.service.entity.order.pay.PayOrder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | /** 9 | * 支付同步抽象类 10 | * @author xxm 11 | * @since 2023/7/14 12 | */ 13 | @Getter 14 | @Setter 15 | public abstract class AbsSyncPayOrderStrategy implements PaymentStrategy{ 16 | 17 | /** 支付订单 */ 18 | private PayOrder order = null; 19 | 20 | 21 | /** 22 | * 异步支付单与支付网关进行状态比对后的结果 23 | */ 24 | public abstract PaySyncResultBo doSync(); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/strategy/AbsSyncRefundOrderStrategy.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.strategy; 2 | 3 | import org.dromara.daxpay.service.bo.sync.RefundSyncResultBo; 4 | import org.dromara.daxpay.service.entity.order.refund.RefundOrder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | /** 9 | * 支付退款订单同步策略 10 | * @author xxm 11 | * @since 2024/1/25 12 | */ 13 | @Getter 14 | @Setter 15 | public abstract class AbsSyncRefundOrderStrategy implements PaymentStrategy{ 16 | 17 | private RefundOrder refundOrder; 18 | 19 | /** 20 | * 同步前处理, 主要是预防请求过于迅速, 支付网关没有处理完退款请求, 导致返回的状态不正确 21 | */ 22 | public void doBeforeHandler(){} 23 | /** 24 | * 异步支付单与支付网关进行状态比对后的结果 25 | */ 26 | public abstract RefundSyncResultBo doSync(); 27 | } 28 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/strategy/PaymentStrategy.java: -------------------------------------------------------------------------------- 1 | package org.dromara.daxpay.service.strategy; 2 | 3 | 4 | import org.dromara.daxpay.core.enums.ChannelEnum; 5 | 6 | /** 7 | * 支付相关策略标识接口 8 | * @author xxm 9 | * @since 2023/12/27 10 | */ 11 | public interface PaymentStrategy { 12 | 13 | /** 14 | * 策略标识, 可以自行进行扩展 15 | * @see ChannelEnum 16 | */ 17 | String getChannel(); 18 | } 19 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | org.dromara.daxpay.service.DaxpayPayServiceApp 2 | -------------------------------------------------------------------------------- /daxpay-open/daxpay-open-service/src/main/resources/template/对账单模板.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dromara/dax-pay/62b5c515932d6f267ee1aa402a94bfd754213304/daxpay-open/daxpay-open-service/src/main/resources/template/对账单模板.xlsx -------------------------------------------------------------------------------- /lombok.config: -------------------------------------------------------------------------------- 1 | # 将字段上的注解拷贝到对应构造参数上, 如果要新增别的注解, 需要在下方重新进行定义, 2 | lombok.copyableAnnotations += org.springframework.context.annotation.Lazy 3 | lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier 4 | # 默认开启实体类的链式API 会导致一些反射相关类库出问题, 如 easyExcel 5 | #lombok.accessors.chain = true 6 | --------------------------------------------------------------------------------