├── .gitignore ├── LICENSE ├── README.en.md ├── README.md ├── build.gradle ├── gps-api ├── build.gradle └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── gps │ │ │ └── api │ │ │ ├── ApiRedisUtils.java │ │ │ ├── GpsApiApplication.java │ │ │ ├── cmd │ │ │ └── CommandSender.java │ │ │ ├── common │ │ │ ├── PermissionCheckService.java │ │ │ ├── StringToDateConverter.java │ │ │ ├── annotation │ │ │ │ ├── DataFilter.java │ │ │ │ ├── Permission.java │ │ │ │ └── SysLog.java │ │ │ ├── aspect │ │ │ │ ├── ApiRedisAspect.java │ │ │ │ ├── DataFilterAspect.java │ │ │ │ ├── PermissionAop.java │ │ │ │ └── SysLogAspect.java │ │ │ ├── dbasp │ │ │ │ ├── DataAuthorityInterceptor.java │ │ │ │ └── ResultInterceptor.java │ │ │ ├── exception │ │ │ │ └── RRExceptionHandler.java │ │ │ ├── utils │ │ │ │ ├── ConfigConstant.java │ │ │ │ ├── DateUtils.java │ │ │ │ ├── HttpContextUtils.java │ │ │ │ ├── IPUtils.java │ │ │ │ ├── JwtUtils.java │ │ │ │ ├── RedisKeys.java │ │ │ │ ├── ShiroUtils.java │ │ │ │ └── SpringContextUtils.java │ │ │ ├── validator │ │ │ │ ├── Assert.java │ │ │ │ ├── ValidatorUtils.java │ │ │ │ └── group │ │ │ │ │ ├── AddGroup.java │ │ │ │ │ ├── AliyunGroup.java │ │ │ │ │ ├── Group.java │ │ │ │ │ ├── QcloudGroup.java │ │ │ │ │ ├── QiniuGroup.java │ │ │ │ │ └── UpdateGroup.java │ │ │ └── xss │ │ │ │ ├── HTMLFilter.java │ │ │ │ ├── SQLFilter.java │ │ │ │ ├── XssFilter.java │ │ │ │ └── XssHttpServletRequestWrapper.java │ │ │ ├── config │ │ │ ├── ApiRedisConfig.java │ │ │ ├── CorsConfig.java │ │ │ ├── FilterConfig.java │ │ │ ├── KafkaConsumerConfig.java │ │ │ ├── KafkaProducerConfig.java │ │ │ ├── KaptchaConfig.java │ │ │ ├── MybatisPlusConfig.java │ │ │ ├── ShiroConfig.java │ │ │ ├── SwaggerConfig.java │ │ │ ├── WebConfig.java │ │ │ └── WebSocketConfig.java │ │ │ ├── modules │ │ │ ├── job │ │ │ │ ├── config │ │ │ │ │ └── ScheduleConfig.java │ │ │ │ ├── controller │ │ │ │ │ ├── ScheduleJobController.java │ │ │ │ │ └── ScheduleJobLogController.java │ │ │ │ ├── dao │ │ │ │ │ ├── ScheduleJobDao.java │ │ │ │ │ └── ScheduleJobLogDao.java │ │ │ │ ├── entity │ │ │ │ │ ├── ScheduleJobEntity.java │ │ │ │ │ └── ScheduleJobLogEntity.java │ │ │ │ ├── service │ │ │ │ │ ├── ScheduleJobLogService.java │ │ │ │ │ ├── ScheduleJobService.java │ │ │ │ │ └── impl │ │ │ │ │ │ ├── ScheduleJobLogServiceImpl.java │ │ │ │ │ │ └── ScheduleJobServiceImpl.java │ │ │ │ ├── task │ │ │ │ │ ├── CheckTask.java │ │ │ │ │ └── ITask.java │ │ │ │ └── utils │ │ │ │ │ ├── ScheduleJob.java │ │ │ │ │ └── ScheduleUtils.java │ │ │ ├── oss │ │ │ │ ├── cloud │ │ │ │ │ ├── AliyunCloudStorageService.java │ │ │ │ │ ├── CloudStorageConfig.java │ │ │ │ │ ├── CloudStorageService.java │ │ │ │ │ ├── OSSFactory.java │ │ │ │ │ ├── QcloudCloudStorageService.java │ │ │ │ │ └── QiniuCloudStorageService.java │ │ │ │ ├── controller │ │ │ │ │ └── SysOssController.java │ │ │ │ ├── dao │ │ │ │ │ └── SysOssDao.java │ │ │ │ ├── entity │ │ │ │ │ └── SysOssEntity.java │ │ │ │ └── service │ │ │ │ │ ├── SysOssService.java │ │ │ │ │ └── impl │ │ │ │ │ └── SysOssServiceImpl.java │ │ │ └── sys │ │ │ │ ├── controller │ │ │ │ ├── AbstractController.java │ │ │ │ ├── AlarmController.java │ │ │ │ ├── CommandController.java │ │ │ │ ├── DevMgrController.java │ │ │ │ ├── DeviceController.java │ │ │ │ ├── DeviceRecController.java │ │ │ │ ├── GeofenceController.java │ │ │ │ ├── GpsController.java │ │ │ │ ├── GroupController.java │ │ │ │ ├── IndexController.java │ │ │ │ ├── Jt809UserController.java │ │ │ │ ├── ProductController.java │ │ │ │ ├── SysConfigController.java │ │ │ │ ├── SysDeptController.java │ │ │ │ ├── SysLogController.java │ │ │ │ ├── SysLoginController.java │ │ │ │ ├── SysMenuController.java │ │ │ │ ├── SysRoleController.java │ │ │ │ └── SysUserController.java │ │ │ │ ├── dao │ │ │ │ ├── SysCaptchaDao.java │ │ │ │ ├── SysConfigDao.java │ │ │ │ ├── SysDeptDao.java │ │ │ │ ├── SysLogDao.java │ │ │ │ ├── SysMenuDao.java │ │ │ │ ├── SysRoleDao.java │ │ │ │ ├── SysRoleDeptDao.java │ │ │ │ ├── SysRoleMenuDao.java │ │ │ │ ├── SysUserDao.java │ │ │ │ ├── SysUserRoleDao.java │ │ │ │ └── SysUserTokenDao.java │ │ │ │ ├── entity │ │ │ │ ├── SysCaptchaEntity.java │ │ │ │ ├── SysConfigEntity.java │ │ │ │ ├── SysDeptEntity.java │ │ │ │ ├── SysLogEntity.java │ │ │ │ ├── SysMenuEntity.java │ │ │ │ ├── SysRoleDeptEntity.java │ │ │ │ ├── SysRoleEntity.java │ │ │ │ ├── SysRoleMenuEntity.java │ │ │ │ ├── SysUserEntity.java │ │ │ │ ├── SysUserRoleEntity.java │ │ │ │ └── SysUserTokenEntity.java │ │ │ │ ├── form │ │ │ │ ├── PasswordForm.java │ │ │ │ └── SysLoginForm.java │ │ │ │ ├── oauth2 │ │ │ │ ├── GpsPrincipal.java │ │ │ │ ├── OAuth2Filter.java │ │ │ │ ├── OAuth2Realm.java │ │ │ │ ├── OAuth2Token.java │ │ │ │ └── TokenGenerator.java │ │ │ │ ├── redis │ │ │ │ ├── SysConfigRedis.java │ │ │ │ └── SysUserTokenRedis.java │ │ │ │ └── service │ │ │ │ ├── ShiroService.java │ │ │ │ ├── SysCaptchaService.java │ │ │ │ ├── SysConfigService.java │ │ │ │ ├── SysDeptService.java │ │ │ │ ├── SysLogService.java │ │ │ │ ├── SysMenuService.java │ │ │ │ ├── SysRoleDeptService.java │ │ │ │ ├── SysRoleMenuService.java │ │ │ │ ├── SysRoleService.java │ │ │ │ ├── SysUserRoleService.java │ │ │ │ ├── SysUserService.java │ │ │ │ ├── SysUserTokenService.java │ │ │ │ └── impl │ │ │ │ ├── ShiroServiceImpl.java │ │ │ │ ├── SysCaptchaServiceImpl.java │ │ │ │ ├── SysConfigServiceImpl.java │ │ │ │ ├── SysDeptServiceImpl.java │ │ │ │ ├── SysLogServiceImpl.java │ │ │ │ ├── SysMenuServiceImpl.java │ │ │ │ ├── SysRoleDeptServiceImpl.java │ │ │ │ ├── SysRoleMenuServiceImpl.java │ │ │ │ ├── SysRoleServiceImpl.java │ │ │ │ ├── SysUserRoleServiceImpl.java │ │ │ │ ├── SysUserServiceImpl.java │ │ │ │ └── SysUserTokenServiceImpl.java │ │ │ ├── rbac │ │ │ ├── AccessType.java │ │ │ ├── CorePlatformService.java │ │ │ ├── DataAccess.java │ │ │ ├── DataAccessFactory.java │ │ │ ├── DataAccessResullt.java │ │ │ ├── da │ │ │ │ ├── AllGroupAccess.java │ │ │ │ ├── DefaultDataAccessFactory.java │ │ │ │ ├── GroupDataAccess.java │ │ │ │ ├── GroupOnlyDataAccess.java │ │ │ │ ├── NonDataAccess.java │ │ │ │ ├── OwnerDataAccess.java │ │ │ │ ├── ParentCorpDataAccess.java │ │ │ │ ├── SameCompanyAllDataAccess.java │ │ │ │ ├── SameDeparmentAllDataAccess.java │ │ │ │ └── SameOrgDataAccess.java │ │ │ ├── datascope │ │ │ │ ├── DataScope.java │ │ │ │ ├── DataScopeInterceptor.java │ │ │ │ ├── ExpressionVisitorImpl.java │ │ │ │ ├── FromItemVisitorImpl.java │ │ │ │ ├── SelectItemVisitorImpl.java │ │ │ │ ├── SelectVisitorImpl.java │ │ │ │ └── cond │ │ │ │ │ ├── TableCondition.java │ │ │ │ │ └── UserConditionUtils.java │ │ │ └── tree │ │ │ │ ├── OrgItem.java │ │ │ │ └── TreeItem.java │ │ │ └── ws │ │ │ ├── GetHttpSessionConfigurator.java │ │ │ ├── MyWebSocketManager.java │ │ │ ├── WebSocketEndpoint.java │ │ │ ├── WebSocketPush.java │ │ │ ├── WsListener.java │ │ │ └── evtlisten │ │ │ └── WebSocketCloseEventListener.java │ └── resources │ │ ├── application-dev.yml │ │ ├── application-prod.yml │ │ ├── application-test.yml │ │ ├── application.yml │ │ ├── banner.txt │ │ ├── logback-spring.xml │ │ └── mapper │ │ ├── job │ │ ├── ScheduleJobDao.xml │ │ └── ScheduleJobLogDao.xml │ │ ├── oss │ │ └── SysOssDao.xml │ │ └── sys │ │ ├── SysConfigDao.xml │ │ ├── SysDeptDao.xml │ │ ├── SysLogDao.xml │ │ ├── SysMenuDao.xml │ │ ├── SysRoleDao.xml │ │ ├── SysRoleDeptDao.xml │ │ ├── SysRoleMenuDao.xml │ │ ├── SysUserDao.xml │ │ ├── SysUserRoleDao.xml │ │ └── SysUserTokenDao.xml │ └── test │ └── java │ └── com │ └── gps │ └── api │ ├── JwtTest.java │ └── RedisTest.java ├── gps-common ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── gps │ └── common │ ├── Constants.java │ ├── MessageType.java │ ├── cache │ └── CacheKeys.java │ ├── future │ └── SyncFuture.java │ ├── geofence │ ├── GeofenceCircle.java │ ├── GeofenceGeometry.java │ ├── GeofencePolygon.java │ └── GeofencePolyline.java │ ├── helper │ ├── ApiUtils.java │ ├── BitUtil.java │ ├── ByteUtil.java │ ├── BytesUtil.java │ ├── Checksum.java │ ├── DESUtils.java │ ├── DateBuilder.java │ ├── DistanceCalculator.java │ ├── HumpUtil.java │ ├── ImeiUtil.java │ ├── MotionEventUtil.java │ ├── OverspeedEventUtil.java │ ├── Tools.java │ └── UnitsConverter.java │ ├── model │ ├── Attribute.java │ ├── BaseModel.java │ ├── CellTower.java │ ├── Command.java │ ├── CommandResult.java │ ├── CommandType.java │ ├── Device.java │ ├── DeviceState.java │ ├── Driver.java │ ├── Event.java │ ├── ExtendedModel.java │ ├── Geofence.java │ ├── Message.java │ ├── Network.java │ ├── Position.java │ ├── RecordData.java │ ├── ScheduledModel.java │ └── WifiAccessPoint.java │ └── reports │ ├── ReportUtils.java │ ├── Summary.java │ └── model │ ├── BaseReport.java │ ├── DeviceReport.java │ ├── StopReport.java │ ├── SummaryReport.java │ ├── TripReport.java │ └── TripsConfig.java ├── gps-db ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── gps │ │ └── db │ │ ├── GpsRedisUtils.java │ │ ├── aspect │ │ └── GpsRedisAspect.java │ │ ├── config │ │ ├── DruidConfiguration.java │ │ ├── GpsRedisConfig.java │ │ └── Redis2Config.java │ │ ├── dao │ │ ├── AlarmDao.java │ │ ├── AlarmTypeDao.java │ │ ├── CommandDao.java │ │ ├── CommandLogsDao.java │ │ ├── CommandTypeDao.java │ │ ├── CommandTypeMDao.java │ │ ├── DeviceDao.java │ │ ├── DeviceGeofenceDao.java │ │ ├── DeviceRecDao.java │ │ ├── DeviceStatusDao.java │ │ ├── EventsDao.java │ │ ├── GeofenceDao.java │ │ ├── GroupsDao.java │ │ ├── Jt809DevPlatDao.java │ │ ├── Jt809UserDao.java │ │ ├── PositionsDao.java │ │ ├── ProductDao.java │ │ ├── RiskPointDao.java │ │ ├── UserDeviceDao.java │ │ └── UserGroupDao.java │ │ ├── datascope │ │ ├── PermissionAop.java │ │ └── PermissionUtils.java │ │ ├── db │ │ ├── BlobDataTypeHandler.java │ │ ├── ListDateTypeHandler.java │ │ └── MapDateTypeHandler.java │ │ ├── dbutils │ │ ├── CommonConstants.java │ │ ├── Constant.java │ │ ├── MyPage.java │ │ ├── MyQuery.java │ │ └── xss │ │ │ ├── HTMLFilter.java │ │ │ └── SQLFilter.java │ │ ├── entity │ │ ├── AlarmEntity.java │ │ ├── AlarmTypeEntity.java │ │ ├── CommandEntity.java │ │ ├── CommandLogsEntity.java │ │ ├── CommandTypeEntity.java │ │ ├── CommandTypeMEntity.java │ │ ├── DeviceEntity.java │ │ ├── DeviceGeofenceEntity.java │ │ ├── DeviceRecEntity.java │ │ ├── DeviceStatusEntity.java │ │ ├── EventsEntity.java │ │ ├── GeofenceEntity.java │ │ ├── GroupsEntity.java │ │ ├── Jt809DevPlatEntity.java │ │ ├── Jt809UserEntity.java │ │ ├── PositionsEntity.java │ │ ├── ProductEntity.java │ │ ├── RiskPointEntity.java │ │ ├── UserDeviceEntity.java │ │ └── UserGroupEntity.java │ │ ├── entityvo │ │ ├── DeviceGeofenceBindParam.java │ │ ├── DeviceVo.java │ │ ├── GeofenceListVo.java │ │ ├── PageVo.java │ │ └── SearchVo.java │ │ ├── enums │ │ ├── AuditWorkOrderStatus.java │ │ ├── CheckDeviceAvailableSource.java │ │ ├── ControlType.java │ │ ├── DeviceFlowBehavior.java │ │ ├── DeviceStatusEnum.java │ │ ├── DeviceType.java │ │ └── Repository.java │ │ ├── exception │ │ ├── RRException.java │ │ └── RRExceptionHandler.java │ │ ├── service │ │ ├── AlarmService.java │ │ ├── AlarmTypeService.java │ │ ├── BaseIService.java │ │ ├── CommandLogsService.java │ │ ├── CommandService.java │ │ ├── CommandTypeMService.java │ │ ├── CommandTypeService.java │ │ ├── DeviceGeofenceService.java │ │ ├── DeviceRecService.java │ │ ├── DeviceService.java │ │ ├── DeviceStatusService.java │ │ ├── EventsService.java │ │ ├── GeofenceService.java │ │ ├── GroupsService.java │ │ ├── Jt809DevPlatService.java │ │ ├── Jt809UserService.java │ │ ├── PositionsService.java │ │ ├── ProductService.java │ │ ├── RiskPointService.java │ │ ├── UserDeviceService.java │ │ ├── UserGroupService.java │ │ └── impl │ │ │ ├── AlarmServiceImpl.java │ │ │ ├── AlarmTypeServiceImpl.java │ │ │ ├── BaseServiceImpl.java │ │ │ ├── CommandLogsServiceImpl.java │ │ │ ├── CommandServiceImpl.java │ │ │ ├── CommandTypeMServiceImpl.java │ │ │ ├── CommandTypeServiceImpl.java │ │ │ ├── DeviceGeofenceServiceImpl.java │ │ │ ├── DeviceRecServiceImpl.java │ │ │ ├── DeviceServiceImpl.java │ │ │ ├── DeviceStatusServiceImpl.java │ │ │ ├── EventsServiceImpl.java │ │ │ ├── GeofenceServiceImpl.java │ │ │ ├── GroupsServiceImpl.java │ │ │ ├── Jt809DevPlatServiceImpl.java │ │ │ ├── Jt809UserServiceImpl.java │ │ │ ├── PositionsServiceImpl.java │ │ │ ├── ProductServiceImpl.java │ │ │ ├── RiskPointServiceImpl.java │ │ │ ├── UserDeviceServiceImpl.java │ │ │ └── UserGroupServiceImpl.java │ │ └── utils │ │ ├── AttrUtil.java │ │ ├── GeofenceUtil.java │ │ ├── JsonUtils.java │ │ ├── MapUtils.java │ │ ├── PositionUtil.java │ │ ├── R.java │ │ ├── SnowFlake.java │ │ ├── SnowFlakeFactory.java │ │ └── UIDGenerator.java │ └── resources │ └── mapper │ ├── AlarmDao.xml │ ├── AlarmTypeDao.xml │ ├── CommandDao.xml │ ├── CommandLogsDao.xml │ ├── CommandTypeDao.xml │ ├── CommandTypeMDao.xml │ ├── DeviceDao.xml │ ├── DeviceGeofenceDao.xml │ ├── DeviceRecDao.xml │ ├── DeviceStatusDao.xml │ ├── EventsDao.xml │ ├── GeofenceDao.xml │ ├── GroupsDao.xml │ ├── Jt809DevPlatDao.xml │ ├── Jt809UserDao.xml │ ├── PositionsDao.xml │ ├── ProductDao.xml │ ├── RiskPointDao.xml │ ├── UserDeviceDao.xml │ └── UserGroupDao.xml ├── gps-engine ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── gps │ │ └── engine │ │ ├── EventSender.java │ │ ├── GpsEngineApplication.java │ │ ├── TrackerServer.java │ │ ├── config │ │ ├── KafkaConsumerConfig.java │ │ └── MybatisPlusConfig.java │ │ └── listener │ │ └── EngineMessageListener.java │ └── resources │ ├── application-dev.yml │ ├── application-prod.yml │ ├── application-test.yml │ └── application.yml ├── gps-gate ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── gps │ │ └── gate │ │ ├── AppApplicationListener.java │ │ ├── BaseHttpProtocolDecoder.java │ │ ├── BasePipelineFactory.java │ │ ├── BaseProtocol.java │ │ ├── BaseProtocolDecoder.java │ │ ├── BaseProtocolEncoder.java │ │ ├── EventLoopGroupFactory.java │ │ ├── ExtendedObjectDecoder.java │ │ ├── GpsGateApplication.java │ │ ├── NetworkMessage.java │ │ ├── PipelineBuilder.java │ │ ├── Protocol.java │ │ ├── TCPServer.java │ │ ├── TrackerServer.java │ │ ├── WrapperContext.java │ │ ├── WrapperInboundHandler.java │ │ ├── WrapperOutboundHandler.java │ │ ├── config │ │ └── KafkaProducerConfig.java │ │ ├── handler │ │ └── MainDataHandler.java │ │ └── protocol │ │ ├── TestProtocol.java │ │ └── TestProtocolDecoder.java │ └── resources │ ├── application-dev.yml │ ├── application-prod.yml │ ├── application-test.yml │ └── application.yml ├── gps-gbt32960 └── build.gradle ├── gps-generator ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── gps │ │ └── generator │ │ ├── GpsGeneratorApplication.java │ │ ├── config │ │ └── DbConfig.java │ │ ├── controller │ │ └── SysGeneratorController.java │ │ ├── dao │ │ ├── GeneratorDao.java │ │ ├── MySQLGeneratorDao.java │ │ ├── OracleGeneratorDao.java │ │ ├── PostgreSQLGeneratorDao.java │ │ └── SQLServerGeneratorDao.java │ │ ├── entity │ │ ├── ColumnEntity.java │ │ └── TableEntity.java │ │ ├── service │ │ └── SysGeneratorService.java │ │ └── utils │ │ ├── Constant.java │ │ ├── DateUtils.java │ │ ├── GenUtils.java │ │ ├── PageUtils.java │ │ ├── Query.java │ │ ├── R.java │ │ ├── RRException.java │ │ └── RRExceptionHandler.java │ └── resources │ ├── application.yml │ ├── generator.properties │ ├── mapper │ ├── MySQLGeneratorDao.xml │ ├── OracleGeneratorDao.xml │ ├── PostgreSQLGeneratorDao.xml │ └── SQLServerGeneratorDao.xml │ └── template │ ├── Controller.java.vm │ ├── Dao.java.vm │ ├── Dao.xml.vm │ ├── Entity.java.vm │ ├── Form.vue.vm │ ├── List.vue.vm │ ├── Service.java.vm │ ├── ServiceImpl.java.vm │ ├── index.js.vm │ ├── menu.sql.vm │ └── other.text.vm ├── gps-jt809 └── build.gradle ├── gps-websocket ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── gps │ └── websocket │ ├── BaseWebSocketEndpoint.java │ ├── TodoAtRemoved.java │ ├── WebSocket.java │ ├── WebSocketCloseEvent.java │ ├── WebSocketConnectEvent.java │ ├── WebSocketManager.java │ ├── config │ ├── GetHttpSessionConfigurator.java │ ├── WebSocketHeartBeatChecker.java │ └── WebSocketSchedulingConfig.java │ ├── memory │ ├── EnableMemWebSocketManager.java │ ├── MemWebSocketManager.java │ └── MemoryWebSocketConfig.java │ ├── redis │ ├── DefaultRedisReceiver.java │ ├── EnableRedisWebSocketManager.java │ ├── RedisReceiver.java │ ├── RedisWebSocketConfig.java │ ├── RedisWebSocketManager.java │ └── action │ │ ├── Action.java │ │ ├── ActionConfig.java │ │ ├── BroadCastAction.java │ │ ├── NoActionAction.java │ │ ├── RemoveAction.java │ │ └── SendMessageAction.java │ └── utils │ ├── SpringContextHolder.java │ └── WebSocketUtil.java ├── gps.sql ├── hbase ├── build.gradle └── build │ └── tmp │ └── jar │ └── MANIFEST.MF └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | .classpath 2 | .project 3 | .settings 4 | .idea 5 | *.iml 6 | .DS_Store 7 | .checkstyle 8 | .gradle 9 | /gradle 10 | gradlew 11 | gradlew.bat 12 | out 13 | build 14 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/GpsApiApplication.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api; 3 | 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | 8 | @SpringBootApplication(scanBasePackages = { 9 | "com.gps.api", 10 | "com.gps.db", 11 | "com.gps.websocket", 12 | "com.muheda.notice" 13 | }) 14 | @MapperScan({"com.gps.api.modules.*.dao", "com.gps.db.dao"}) 15 | public class GpsApiApplication { 16 | 17 | public static void main(String[] args) { 18 | SpringApplication.run(GpsApiApplication.class, args); 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/annotation/DataFilter.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.common.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 数据过滤 7 | * 8 | * @author chenshun 9 | * @email sunlightcs@gmail.com 10 | * @date 2017/9/17 14:20 11 | */ 12 | @Target(ElementType.METHOD) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Documented 15 | public @interface DataFilter { 16 | /** 表的别名 */ 17 | String tableAlias() default ""; 18 | 19 | /** true:没有本部门数据权限,也能查询本人数据 */ 20 | boolean user() default true; 21 | } 22 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/annotation/Permission.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.common.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 权限注解 用于检查权限 规定访问权限 7 | * 8 | * @example @Permission({role1,role2}) 9 | * @example @Permission 10 | */ 11 | @Inherited 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Target({ElementType.METHOD}) 14 | public @interface Permission { 15 | 16 | /** 17 | *

角色英文名称

18 | *

使用注解时加上这个值表示限制只有某个角色的才可以访问对应的资源

19 | *

常用在某些资源限制只有超级管理员角色才可访问

20 | */ 21 | String[] value() default {}; 22 | } 23 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/annotation/SysLog.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.common.annotation; 3 | 4 | import java.lang.annotation.Documented; 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * 系统日志注解 12 | */ 13 | @Target(ElementType.METHOD) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | @Documented 16 | public @interface SysLog { 17 | 18 | String value() default ""; 19 | } 20 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/aspect/ApiRedisAspect.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.common.aspect; 3 | 4 | import com.gps.db.exception.RRException; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.aspectj.lang.ProceedingJoinPoint; 7 | import org.aspectj.lang.annotation.Around; 8 | import org.aspectj.lang.annotation.Aspect; 9 | import org.slf4j.Logger; 10 | import org.slf4j.LoggerFactory; 11 | import org.springframework.beans.factory.annotation.Value; 12 | import org.springframework.context.annotation.Configuration; 13 | 14 | /** 15 | * Redis切面处理类 16 | */ 17 | @Slf4j 18 | @Aspect 19 | @Configuration 20 | public class ApiRedisAspect { 21 | //是否开启redis缓存 true开启 false关闭 22 | @Value("${spring.redis.open: false}") 23 | private boolean open; 24 | 25 | @Around("execution(* com.gps.api.ApiRedisUtils.*(..))") 26 | public Object around(ProceedingJoinPoint point) throws Throwable { 27 | Object result = null; 28 | if (open) { 29 | try { 30 | result = point.proceed(); 31 | } catch (Exception e) { 32 | log.error("redis error", e); 33 | throw new RRException("ApiRedis服务异常"); 34 | } 35 | } 36 | return result; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/utils/ConfigConstant.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.common.utils; 10 | 11 | /** 12 | * 系统参数相关Key 13 | */ 14 | public class ConfigConstant { 15 | /** 16 | * 云存储配置KEY 17 | */ 18 | public final static String CLOUD_STORAGE_CONFIG_KEY = "CLOUD_STORAGE_CONFIG_KEY"; 19 | } 20 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/utils/HttpContextUtils.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.common.utils; 10 | 11 | import org.springframework.web.context.request.RequestContextHolder; 12 | import org.springframework.web.context.request.ServletRequestAttributes; 13 | 14 | import javax.servlet.http.HttpServletRequest; 15 | 16 | public class HttpContextUtils { 17 | 18 | public static HttpServletRequest getHttpServletRequest() { 19 | return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); 20 | } 21 | 22 | public static String getDomain(){ 23 | HttpServletRequest request = getHttpServletRequest(); 24 | StringBuffer url = request.getRequestURL(); 25 | return url.delete(url.length() - request.getRequestURI().length(), url.length()).toString(); 26 | } 27 | 28 | public static String getOrigin(){ 29 | HttpServletRequest request = getHttpServletRequest(); 30 | return request.getHeader("Origin"); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/utils/RedisKeys.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.common.utils; 10 | 11 | /** 12 | * Redis所有Keys 13 | */ 14 | public class RedisKeys { 15 | 16 | public static String getSysConfigKey(String key){ 17 | return "sys:config:" + key; 18 | } 19 | 20 | public static String getSysUserTokenKey(String key){ 21 | return "sys:usertoken:" + key; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/validator/Assert.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.common.validator; 10 | 11 | import com.gps.db.exception.RRException; 12 | import org.apache.commons.lang.StringUtils; 13 | 14 | /** 15 | * 数据校验 16 | */ 17 | public abstract class Assert { 18 | 19 | public static void isBlank(String str, String message) { 20 | if (StringUtils.isBlank(str)) { 21 | throw new RRException(message); 22 | } 23 | } 24 | 25 | public static void isNull(Object object, String message) { 26 | if (object == null) { 27 | throw new RRException(message); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/validator/group/AddGroup.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.common.validator.group; 3 | 4 | /** 5 | * 新增数据 Group 6 | */ 7 | public interface AddGroup { 8 | } 9 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/validator/group/AliyunGroup.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.common.validator.group; 3 | 4 | /** 5 | * 阿里云 6 | */ 7 | public interface AliyunGroup { 8 | } 9 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/validator/group/Group.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.common.validator.group; 3 | 4 | import javax.validation.GroupSequence; 5 | 6 | /** 7 | * 定义校验顺序,如果AddGroup组失败,则UpdateGroup组不会再校验 8 | */ 9 | @GroupSequence({AddGroup.class, UpdateGroup.class}) 10 | public interface Group { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/validator/group/QcloudGroup.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.common.validator.group; 3 | 4 | /** 5 | * 腾讯云 6 | */ 7 | public interface QcloudGroup { 8 | } 9 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/validator/group/QiniuGroup.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.common.validator.group; 3 | 4 | /** 5 | * 七牛 6 | */ 7 | public interface QiniuGroup { 8 | } 9 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/validator/group/UpdateGroup.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.common.validator.group; 3 | 4 | /** 5 | * 更新数据 Group 6 | */ 7 | public interface UpdateGroup { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/xss/SQLFilter.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.common.xss; 3 | 4 | import com.gps.db.exception.RRException; 5 | import org.apache.commons.lang.StringUtils; 6 | 7 | /** 8 | * SQL过滤 9 | */ 10 | public class SQLFilter { 11 | 12 | /** 13 | * SQL注入过滤 14 | * @param str 待验证的字符串 15 | */ 16 | public static String sqlInject(String str){ 17 | if(StringUtils.isBlank(str)){ 18 | return null; 19 | } 20 | //去掉'|"|;|\字符 21 | str = StringUtils.replace(str, "'", ""); 22 | str = StringUtils.replace(str, "\"", ""); 23 | str = StringUtils.replace(str, ";", ""); 24 | str = StringUtils.replace(str, "\\", ""); 25 | 26 | //转换成小写 27 | str = str.toLowerCase(); 28 | 29 | //非法字符 30 | String[] keywords = {"master", "truncate", "insert", "select", "delete", "update", "declare", "alter", "drop"}; 31 | 32 | //判断是否包含非法字符 33 | for(String keyword : keywords){ 34 | if(str.indexOf(keyword) != -1){ 35 | throw new RRException("包含非法字符"); 36 | } 37 | } 38 | 39 | return str; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/common/xss/XssFilter.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.common.xss; 3 | 4 | import javax.servlet.*; 5 | import javax.servlet.http.HttpServletRequest; 6 | import java.io.IOException; 7 | 8 | /** 9 | * XSS过滤 10 | */ 11 | public class XssFilter implements Filter { 12 | 13 | @Override 14 | public void init(FilterConfig config) throws ServletException { 15 | } 16 | 17 | public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 18 | throws IOException, ServletException { 19 | XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper( 20 | (HttpServletRequest) request); 21 | chain.doFilter(xssRequest, response); 22 | } 23 | 24 | @Override 25 | public void destroy() { 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/config/CorsConfig.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.config; 10 | 11 | import org.springframework.context.annotation.Configuration; 12 | import org.springframework.web.servlet.config.annotation.CorsRegistry; 13 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 14 | 15 | @Configuration 16 | public class CorsConfig implements WebMvcConfigurer { 17 | 18 | @Override 19 | public void addCorsMappings(CorsRegistry registry) { 20 | registry.addMapping("/**") 21 | .allowedOrigins("*") 22 | .allowCredentials(true) 23 | .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") 24 | .maxAge(3600); 25 | } 26 | } -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/config/KaptchaConfig.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.config; 3 | 4 | import com.google.code.kaptcha.impl.DefaultKaptcha; 5 | import com.google.code.kaptcha.util.Config; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | 9 | import java.util.Properties; 10 | 11 | 12 | /** 13 | * 生成验证码配置 14 | */ 15 | @Configuration 16 | public class KaptchaConfig { 17 | 18 | @Bean 19 | public DefaultKaptcha producer() { 20 | Properties properties = new Properties(); 21 | properties.put("kaptcha.border", "no"); 22 | properties.put("kaptcha.textproducer.font.color", "black"); 23 | properties.put("kaptcha.textproducer.char.space", "5"); 24 | properties.put("kaptcha.textproducer.font.names", "Arial,Courier,cmr10,宋体,楷体,微软雅黑"); 25 | Config config = new Config(properties); 26 | DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); 27 | defaultKaptcha.setConfig(config); 28 | return defaultKaptcha; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/job/dao/ScheduleJobDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.job.dao; 10 | 11 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 12 | import com.gps.api.modules.job.entity.ScheduleJobEntity; 13 | import org.apache.ibatis.annotations.Mapper; 14 | 15 | import java.util.Map; 16 | 17 | /** 18 | * 定时任务 19 | */ 20 | @Mapper 21 | public interface ScheduleJobDao extends BaseMapper { 22 | 23 | /** 24 | * 批量更新状态 25 | */ 26 | int updateBatch(Map map); 27 | } 28 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/job/dao/ScheduleJobLogDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.job.dao; 10 | 11 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 12 | import com.gps.api.modules.job.entity.ScheduleJobLogEntity; 13 | import org.apache.ibatis.annotations.Mapper; 14 | 15 | /** 16 | * 定时任务日志 17 | */ 18 | @Mapper 19 | public interface ScheduleJobLogDao extends BaseMapper { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/job/service/ScheduleJobLogService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.job.service; 10 | 11 | import com.baomidou.mybatisplus.extension.service.IService; 12 | import com.gps.db.dbutils.MyPage; 13 | import com.gps.api.modules.job.entity.ScheduleJobLogEntity; 14 | 15 | import java.util.Map; 16 | 17 | /** 18 | * 定时任务日志 19 | */ 20 | public interface ScheduleJobLogService extends IService { 21 | 22 | MyPage queryPage(Map params); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/job/service/ScheduleJobService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.job.service; 10 | 11 | import com.baomidou.mybatisplus.extension.service.IService; 12 | import com.gps.db.dbutils.MyPage; 13 | import com.gps.api.modules.job.entity.ScheduleJobEntity; 14 | 15 | import java.util.Map; 16 | 17 | /** 18 | * 定时任务 19 | */ 20 | public interface ScheduleJobService extends IService { 21 | 22 | MyPage queryPage(Map params); 23 | 24 | /** 25 | * 保存定时任务 26 | */ 27 | void saveJob(ScheduleJobEntity scheduleJob); 28 | 29 | /** 30 | * 更新定时任务 31 | */ 32 | void update(ScheduleJobEntity scheduleJob); 33 | 34 | /** 35 | * 批量删除定时任务 36 | */ 37 | void deleteBatch(Long[] jobIds); 38 | 39 | /** 40 | * 批量更新定时任务状态 41 | */ 42 | int updateBatch(Long[] jobIds, int status); 43 | 44 | /** 45 | * 立即执行 46 | */ 47 | void run(Long[] jobIds); 48 | 49 | /** 50 | * 暂停运行 51 | */ 52 | void pause(Long[] jobIds); 53 | 54 | /** 55 | * 恢复运行 56 | */ 57 | void resume(Long[] jobIds); 58 | } 59 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/job/task/CheckTask.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.modules.job.task; 3 | 4 | import com.gps.api.modules.sys.service.SysUserTokenService; 5 | import com.gps.db.service.DeviceStatusService; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Component; 9 | 10 | /** 11 | * 测试定时任务(演示Demo,可删除) 12 | * 13 | * testTask为spring bean的名称 14 | */ 15 | @Component("checkTask") 16 | @Slf4j 17 | public class CheckTask implements ITask { 18 | @Autowired 19 | private DeviceStatusService deviceStatusService; 20 | @Autowired 21 | private SysUserTokenService sysUserTokenService; 22 | 23 | @Override 24 | public void run(String params){ 25 | log.debug("TestTask定时任务正在执行,参数为:{}", params); 26 | deviceStatusService.checkOfflineDevice(); 27 | sysUserTokenService.checkExpiredToken(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/job/task/ITask.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.api.modules.job.task; 3 | 4 | /** 5 | * 定时任务接口,所有定时任务都要实现该接口 6 | */ 7 | public interface ITask { 8 | 9 | /** 10 | * 执行定时任务接口 11 | * 12 | * @param params 参数,多参数使用JSON数据 13 | */ 14 | void run(String params); 15 | } -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/oss/dao/SysOssDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.oss.dao; 10 | 11 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 12 | import com.gps.api.modules.oss.entity.SysOssEntity; 13 | import org.apache.ibatis.annotations.Mapper; 14 | 15 | /** 16 | * 文件上传 17 | */ 18 | @Mapper 19 | public interface SysOssDao extends BaseMapper { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/oss/entity/SysOssEntity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.oss.entity; 10 | 11 | import com.baomidou.mybatisplus.annotation.TableId; 12 | import com.baomidou.mybatisplus.annotation.TableName; 13 | import lombok.Data; 14 | 15 | import java.io.Serializable; 16 | import java.util.Date; 17 | 18 | 19 | /** 20 | * 文件上传 21 | * 22 | */ 23 | @Data 24 | @TableName("sys_oss") 25 | public class SysOssEntity implements Serializable { 26 | private static final long serialVersionUID = 1L; 27 | 28 | @TableId 29 | private Long id; 30 | //URL地址 31 | private String url; 32 | //创建时间 33 | private Date createDate; 34 | 35 | } 36 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/oss/service/SysOssService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.oss.service; 10 | 11 | import com.baomidou.mybatisplus.extension.service.IService; 12 | import com.gps.db.dbutils.MyPage; 13 | import com.gps.api.modules.oss.entity.SysOssEntity; 14 | 15 | import java.util.Map; 16 | 17 | /** 18 | * 文件上传 19 | * 20 | * @author Mark sunlightcs@gmail.com 21 | */ 22 | public interface SysOssService extends IService { 23 | 24 | MyPage queryPage(Map params); 25 | } 26 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/oss/service/impl/SysOssServiceImpl.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.oss.service.impl; 10 | 11 | import com.baomidou.mybatisplus.core.metadata.IPage; 12 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 13 | import com.gps.db.dbutils.MyQuery; 14 | import com.gps.db.dbutils.MyPage; 15 | import com.gps.api.modules.oss.dao.SysOssDao; 16 | import com.gps.api.modules.oss.entity.SysOssEntity; 17 | import com.gps.api.modules.oss.service.SysOssService; 18 | import org.springframework.stereotype.Service; 19 | 20 | import java.util.Map; 21 | 22 | 23 | @Service("sysOssService") 24 | public class SysOssServiceImpl extends ServiceImpl implements SysOssService { 25 | 26 | @Override 27 | public MyPage queryPage(Map params) { 28 | IPage page = this.page( 29 | MyQuery.getPage(params) 30 | ); 31 | 32 | return MyPage.create(page); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/controller/AbstractController.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.controller; 10 | 11 | import com.gps.db.entity.DeviceEntity; 12 | import com.gps.api.common.utils.ShiroUtils; 13 | import com.gps.api.modules.sys.entity.SysUserEntity; 14 | import com.gps.api.modules.sys.oauth2.GpsPrincipal; 15 | 16 | /** 17 | * Controller公共组件 18 | */ 19 | public abstract class AbstractController { 20 | 21 | protected GpsPrincipal getGpsPrincipal() { 22 | return ShiroUtils.getGpsPrincipal(); 23 | } 24 | 25 | protected SysUserEntity getUser() { 26 | return ShiroUtils.getUserEntity(); 27 | } 28 | 29 | protected DeviceEntity getDevice() { 30 | return ShiroUtils.getDeviceEntity(); 31 | } 32 | 33 | protected Long getUserId() { 34 | return ShiroUtils.getUserId(); 35 | } 36 | 37 | protected Long getDeptId() { 38 | return ShiroUtils.getDeptId(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/controller/IndexController.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.modules.sys.controller; 2 | 3 | import io.swagger.annotations.Api; 4 | import org.springframework.stereotype.Controller; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | 8 | @Api(tags = "主页") 9 | @Controller 10 | @RequestMapping("/") 11 | public class IndexController { 12 | 13 | @GetMapping(value = "/") 14 | public String index() { 15 | return "redirect:/swagger-ui.html"; 16 | } 17 | @GetMapping(value = "/index") 18 | public String index1() { 19 | return "redirect:/doc.html"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/dao/SysCaptchaDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.dao; 10 | 11 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 12 | import com.gps.api.modules.sys.entity.SysCaptchaEntity; 13 | import org.apache.ibatis.annotations.Mapper; 14 | 15 | /** 16 | * 验证码 17 | */ 18 | @Mapper 19 | public interface SysCaptchaDao extends BaseMapper { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/dao/SysConfigDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.dao; 10 | 11 | 12 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 13 | import com.gps.api.modules.sys.entity.SysConfigEntity; 14 | import org.apache.ibatis.annotations.Mapper; 15 | import org.apache.ibatis.annotations.Param; 16 | 17 | /** 18 | * 系统配置信息 19 | * 20 | * @author Mark sunlightcs@gmail.com 21 | */ 22 | @Mapper 23 | public interface SysConfigDao extends BaseMapper { 24 | 25 | /** 26 | * 根据key,查询value 27 | */ 28 | SysConfigEntity queryByKey(String paramKey); 29 | 30 | /** 31 | * 根据key,更新value 32 | */ 33 | int updateValueByKey(@Param("paramKey") String paramKey, @Param("paramValue") String paramValue); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/dao/SysDeptDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.gps.api.modules.sys.entity.SysDeptEntity; 5 | import com.gps.db.datascope.PermissionAop; 6 | import org.apache.ibatis.annotations.Mapper; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 部门管理 12 | * 13 | * @author chenshun 14 | * @email sunlightcs@gmail.com 15 | * @date 2017-06-20 15:23:47 16 | */ 17 | @Mapper 18 | public interface SysDeptDao extends BaseMapper { 19 | 20 | /** 21 | * 查询子部门ID列表 22 | * @param parentId 上级部门ID 23 | */ 24 | List queryDetpIdList(Long parentId); 25 | 26 | @PermissionAop(tableAlias = "d") 27 | List listByUser(); 28 | } 29 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/dao/SysLogDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.dao; 10 | 11 | 12 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 13 | import com.gps.api.modules.sys.entity.SysLogEntity; 14 | import org.apache.ibatis.annotations.Mapper; 15 | 16 | /** 17 | * 系统日志 18 | */ 19 | @Mapper 20 | public interface SysLogDao extends BaseMapper { 21 | 22 | } 23 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/dao/SysMenuDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.dao; 10 | 11 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 12 | import com.gps.api.modules.sys.entity.SysMenuEntity; 13 | import org.apache.ibatis.annotations.Mapper; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * 菜单管理 19 | */ 20 | @Mapper 21 | public interface SysMenuDao extends BaseMapper { 22 | 23 | /** 24 | * 根据父菜单,查询子菜单 25 | * @param parentId 父菜单ID 26 | */ 27 | List queryListParentId(Long parentId); 28 | 29 | /** 30 | * 获取不包含按钮的菜单列表 31 | */ 32 | List queryNotButtonList(); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/dao/SysRoleDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.dao; 10 | 11 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 12 | import com.gps.api.modules.sys.entity.SysRoleEntity; 13 | import org.apache.ibatis.annotations.Mapper; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * 角色管理 19 | */ 20 | @Mapper 21 | public interface SysRoleDao extends BaseMapper { 22 | 23 | /** 24 | * 查询用户创建的角色ID列表 25 | */ 26 | List queryRoleIdList(Long createUserId); 27 | } 28 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/dao/SysRoleDeptDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.gps.api.modules.sys.entity.SysRoleDeptEntity; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 角色与部门对应关系 11 | */ 12 | @Mapper 13 | public interface SysRoleDeptDao extends BaseMapper { 14 | 15 | /** 16 | * 根据角色ID,获取部门ID列表 17 | */ 18 | List queryDeptIdList(Long roleId); 19 | int deleteBatch(Long[] roleIds); 20 | } 21 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/dao/SysRoleMenuDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.dao; 10 | 11 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 12 | import com.gps.api.modules.sys.entity.SysRoleMenuEntity; 13 | import org.apache.ibatis.annotations.Mapper; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * 角色与菜单对应关系 19 | */ 20 | @Mapper 21 | public interface SysRoleMenuDao extends BaseMapper { 22 | 23 | /** 24 | * 根据角色ID,获取菜单ID列表 25 | */ 26 | List queryMenuIdList(Long roleId); 27 | 28 | /** 29 | * 根据角色ID数组,批量删除 30 | */ 31 | int deleteBatch(Long[] roleIds); 32 | } 33 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/dao/SysUserRoleDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.dao; 10 | 11 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 12 | import com.gps.api.modules.sys.entity.SysUserRoleEntity; 13 | import org.apache.ibatis.annotations.Mapper; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * 用户与角色对应关系 19 | */ 20 | @Mapper 21 | public interface SysUserRoleDao extends BaseMapper { 22 | 23 | /** 24 | * 根据用户ID,获取角色ID列表 25 | */ 26 | List queryRoleIdList(Long userId); 27 | 28 | 29 | /** 30 | * 根据角色ID数组,批量删除 31 | */ 32 | int deleteBatch(Long[] roleIds); 33 | } 34 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/dao/SysUserTokenDao.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.dao; 10 | 11 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 12 | import com.gps.api.modules.sys.entity.SysUserTokenEntity; 13 | import org.apache.ibatis.annotations.Mapper; 14 | 15 | /** 16 | * 系统用户Token 17 | */ 18 | @Mapper 19 | public interface SysUserTokenDao extends BaseMapper { 20 | 21 | SysUserTokenEntity queryByToken(String token); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/entity/SysCaptchaEntity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.entity; 10 | 11 | import com.baomidou.mybatisplus.annotation.IdType; 12 | import com.baomidou.mybatisplus.annotation.TableId; 13 | import com.baomidou.mybatisplus.annotation.TableName; 14 | import lombok.Data; 15 | 16 | import java.util.Date; 17 | 18 | /** 19 | * 系统验证码 20 | */ 21 | @Data 22 | @TableName("sys_captcha") 23 | public class SysCaptchaEntity { 24 | @TableId(type = IdType.INPUT) 25 | private String uuid; 26 | /** 27 | * 验证码 28 | */ 29 | private String code; 30 | /** 31 | * 过期时间 32 | */ 33 | private Date expireTime; 34 | 35 | } 36 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/entity/SysConfigEntity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.entity; 10 | 11 | import com.baomidou.mybatisplus.annotation.TableId; 12 | import com.baomidou.mybatisplus.annotation.TableName; 13 | import lombok.Data; 14 | 15 | import javax.validation.constraints.NotBlank; 16 | import java.io.Serializable; 17 | 18 | /** 19 | * 系统配置信息 20 | */ 21 | @Data 22 | @TableName("sys_config") 23 | public class SysConfigEntity implements Serializable { 24 | private static final long serialVersionUID = 1L; 25 | 26 | @TableId 27 | private Long id; 28 | @NotBlank(message="参数名不能为空") 29 | private String paramKey; 30 | @NotBlank(message="参数值不能为空") 31 | private String paramValue; 32 | private String remark; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/entity/SysLogEntity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.entity; 10 | 11 | import com.baomidou.mybatisplus.annotation.TableId; 12 | import com.baomidou.mybatisplus.annotation.TableName; 13 | import lombok.Data; 14 | 15 | import java.io.Serializable; 16 | import java.util.Date; 17 | 18 | 19 | /** 20 | * 系统日志 21 | */ 22 | @Data 23 | @TableName("sys_log") 24 | public class SysLogEntity implements Serializable { 25 | private static final long serialVersionUID = 1L; 26 | @TableId 27 | private Long id; 28 | //用户名 29 | private String username; 30 | //用户操作 31 | private String operation; 32 | //请求方法 33 | private String method; 34 | //请求参数 35 | private String params; 36 | //执行时长(毫秒) 37 | private Long time; 38 | //IP地址 39 | private String ip; 40 | //创建时间 41 | private Date createDate; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/entity/SysRoleDeptEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.modules.sys.entity; 2 | 3 | 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * 角色与部门对应关系 12 | * 13 | * @author chenshun 14 | * @email sunlightcs@gmail.com 15 | * @date 2017年6月21日 23:28:13 16 | */ 17 | @Data 18 | @TableName("sys_role_dept") 19 | public class SysRoleDeptEntity { 20 | 21 | @TableId 22 | private Long id; 23 | private Long roleId; 24 | private Long deptId; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/entity/SysRoleMenuEntity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.entity; 10 | 11 | import com.baomidou.mybatisplus.annotation.TableId; 12 | import com.baomidou.mybatisplus.annotation.TableName; 13 | import lombok.Data; 14 | 15 | import java.io.Serializable; 16 | 17 | /** 18 | * 角色与菜单对应关系 19 | */ 20 | @Data 21 | @TableName("sys_role_menu") 22 | public class SysRoleMenuEntity implements Serializable { 23 | private static final long serialVersionUID = 1L; 24 | 25 | @TableId 26 | private Long id; 27 | 28 | /** 29 | * 角色ID 30 | */ 31 | private Long roleId; 32 | 33 | /** 34 | * 菜单ID 35 | */ 36 | private Long menuId; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/entity/SysUserRoleEntity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.entity; 10 | 11 | import com.baomidou.mybatisplus.annotation.TableId; 12 | import com.baomidou.mybatisplus.annotation.TableName; 13 | import lombok.Data; 14 | 15 | import java.io.Serializable; 16 | 17 | /** 18 | * 用户与角色对应关系 19 | */ 20 | @Data 21 | @TableName("sys_user_role") 22 | public class SysUserRoleEntity implements Serializable { 23 | private static final long serialVersionUID = 1L; 24 | @TableId 25 | private Long id; 26 | 27 | /** 28 | * 用户ID 29 | */ 30 | private Long userId; 31 | 32 | /** 33 | * 角色ID 34 | */ 35 | private Long roleId; 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/entity/SysUserTokenEntity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.entity; 10 | 11 | import com.baomidou.mybatisplus.annotation.TableId; 12 | import com.baomidou.mybatisplus.annotation.TableName; 13 | import lombok.Data; 14 | 15 | import java.util.Date; 16 | 17 | 18 | /** 19 | * 系统用户Token 20 | */ 21 | @Data 22 | @TableName("sys_user_token") 23 | public class SysUserTokenEntity { 24 | 25 | //用户ID 26 | @TableId//(type = IdType.INPUT) 27 | private Long id; 28 | private Long userId; 29 | //token 30 | private String token; 31 | //过期时间 32 | private Date expireTime; 33 | //更新时间 34 | private Date updateTime; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/form/PasswordForm.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.form; 10 | 11 | import lombok.Data; 12 | 13 | /** 14 | * 密码表单 15 | */ 16 | @Data 17 | public class PasswordForm { 18 | /** 19 | * 原密码 20 | */ 21 | private String password; 22 | /** 23 | * 新密码 24 | */ 25 | private String newPassword; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/form/SysLoginForm.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.form; 10 | 11 | import lombok.Data; 12 | 13 | /** 14 | * 登录表单 15 | * 16 | * @author Mark sunlightcs@gmail.com 17 | */ 18 | @Data 19 | public class SysLoginForm { 20 | private String username; 21 | private String password; 22 | private String captcha; 23 | private String uuid; 24 | private String browser; 25 | private String from; 26 | private String type; 27 | } 28 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/oauth2/GpsPrincipal.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.modules.sys.oauth2; 2 | 3 | import com.gps.db.entity.DeviceEntity; 4 | import com.gps.api.modules.sys.entity.SysUserEntity; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | @Data 9 | @Builder 10 | public class GpsPrincipal { 11 | private SysUserEntity userEntity; 12 | private DeviceEntity deviceEntity; 13 | private boolean isPhoneLogin; 14 | private long tokenId; 15 | } 16 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/oauth2/OAuth2Token.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.oauth2; 10 | 11 | 12 | import org.apache.shiro.authc.AuthenticationToken; 13 | 14 | /** 15 | * token 16 | */ 17 | public class OAuth2Token implements AuthenticationToken { 18 | private String token; 19 | 20 | public OAuth2Token(String token){ 21 | this.token = token; 22 | } 23 | 24 | @Override 25 | public String getPrincipal() { 26 | return token; 27 | } 28 | 29 | @Override 30 | public Object getCredentials() { 31 | return token; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/service/ShiroService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.service; 10 | 11 | import com.gps.api.modules.sys.entity.SysUserEntity; 12 | import com.gps.api.modules.sys.entity.SysUserTokenEntity; 13 | 14 | import java.util.Set; 15 | 16 | /** 17 | * shiro相关接口 18 | */ 19 | public interface ShiroService { 20 | /** 21 | * 获取用户权限列表 22 | */ 23 | Set getUserPermissions(long userId); 24 | 25 | SysUserTokenEntity queryByToken(String token); 26 | 27 | /** 28 | * 根据用户ID,查询用户 29 | * @param userId 30 | */ 31 | SysUserEntity queryUser(Long userId); 32 | } 33 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/service/SysCaptchaService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.service; 10 | 11 | import com.baomidou.mybatisplus.extension.service.IService; 12 | import com.gps.api.modules.sys.entity.SysCaptchaEntity; 13 | 14 | import java.awt.image.BufferedImage; 15 | 16 | /** 17 | * 验证码 18 | */ 19 | public interface SysCaptchaService extends IService { 20 | 21 | /** 22 | * 获取图片验证码 23 | */ 24 | BufferedImage getCaptcha(String uuid); 25 | 26 | /** 27 | * 验证码效验 28 | * @param uuid uuid 29 | * @param code 验证码 30 | * @return true:成功 false:失败 31 | */ 32 | boolean validate(String uuid, String code); 33 | } 34 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/service/SysDeptService.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.modules.sys.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.api.modules.sys.entity.SysDeptEntity; 6 | 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * 部门管理 12 | */ 13 | public interface SysDeptService extends IService { 14 | 15 | MyPage queryPage(Map params); 16 | 17 | List listByUser(); 18 | // 19 | // void saveSysDept(SysDeptEntity sysDept); 20 | 21 | void delete(Long deptId); 22 | 23 | /** 24 | * 查询子部门ID列表 25 | * @param parentId 上级部门ID 26 | */ 27 | List queryDetpIdList(Long parentId); 28 | 29 | /** 30 | * 获取子部门ID(包含本部门ID),用于数据过滤 31 | */ 32 | String getSubDeptIdList(Long deptId); 33 | 34 | List depsByUserId(Long userId); 35 | } 36 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/service/SysLogService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.service; 10 | 11 | import com.gps.api.modules.sys.entity.SysLogEntity; 12 | import com.gps.db.service.BaseIService; 13 | 14 | 15 | 16 | /** 17 | * 系统日志 18 | * 19 | * @author Mark sunlightcs@gmail.com 20 | */ 21 | public interface SysLogService extends BaseIService { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/service/SysMenuService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.service; 10 | 11 | 12 | import com.baomidou.mybatisplus.extension.service.IService; 13 | import com.gps.api.modules.sys.entity.SysMenuEntity; 14 | 15 | import java.util.List; 16 | 17 | 18 | /** 19 | * 菜单管理 20 | * 21 | * @author Mark sunlightcs@gmail.com 22 | */ 23 | public interface SysMenuService extends IService { 24 | 25 | /** 26 | * 根据父菜单,查询子菜单 27 | * @param parentId 父菜单ID 28 | * @param menuIdList 用户菜单ID 29 | */ 30 | List queryListParentId(Long parentId, List menuIdList); 31 | 32 | /** 33 | * 根据父菜单,查询子菜单 34 | * @param parentId 父菜单ID 35 | */ 36 | List queryListParentId(Long parentId); 37 | 38 | /** 39 | * 获取不包含按钮的菜单列表 40 | */ 41 | List queryNotButtonList(); 42 | 43 | /** 44 | * 获取用户菜单列表 45 | */ 46 | List getUserMenuList(Long userId); 47 | List getUserMenuList2(Long userId); 48 | 49 | /** 50 | * 删除 51 | */ 52 | void delete(Long menuId); 53 | } 54 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/service/SysRoleDeptService.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.modules.sys.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.api.modules.sys.entity.SysRoleDeptEntity; 5 | 6 | import java.util.List; 7 | 8 | 9 | /** 10 | * 角色与部门对应关系 11 | * 12 | * @author chenshun 13 | * @email sunlightcs@gmail.com 14 | * @date 2019-06-20 16:41:58 15 | */ 16 | public interface SysRoleDeptService extends IService { 17 | 18 | void saveOrUpdate(Long roleId, List deptIdList); 19 | 20 | /** 21 | * 根据角色ID,获取部门ID列表 22 | */ 23 | List queryDeptIdList(Long roleId); 24 | 25 | /** 26 | * 根据角色ID数组,批量删除 27 | */ 28 | int deleteBatch(Long[] roleIds); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/service/SysRoleMenuService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.service; 10 | 11 | import com.baomidou.mybatisplus.extension.service.IService; 12 | import com.gps.api.modules.sys.entity.SysRoleMenuEntity; 13 | 14 | import java.util.List; 15 | 16 | 17 | 18 | /** 19 | * 角色与菜单对应关系 20 | */ 21 | public interface SysRoleMenuService extends IService { 22 | 23 | void saveOrUpdate(Long roleId, List menuIdList); 24 | 25 | /** 26 | * 根据角色ID,获取菜单ID列表 27 | */ 28 | List queryMenuIdList(Long roleId); 29 | 30 | /** 31 | * 根据角色ID数组,批量删除 32 | */ 33 | int deleteBatch(Long[] roleIds); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/service/SysRoleService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.service; 10 | 11 | import com.baomidou.mybatisplus.extension.service.IService; 12 | import com.gps.db.dbutils.MyPage; 13 | import com.gps.api.modules.sys.entity.SysRoleEntity; 14 | 15 | import java.util.List; 16 | import java.util.Map; 17 | 18 | 19 | /** 20 | * 角色 21 | */ 22 | public interface SysRoleService extends IService { 23 | 24 | MyPage queryPage(Map params); 25 | 26 | void saveRole(SysRoleEntity role); 27 | 28 | void update(SysRoleEntity role); 29 | 30 | void deleteBatch(Long[] roleIds); 31 | 32 | 33 | /** 34 | * 查询用户创建的角色ID列表 35 | */ 36 | List queryRoleIdList(Long createUserId); 37 | } 38 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/service/SysUserRoleService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.service; 10 | 11 | import com.baomidou.mybatisplus.extension.service.IService; 12 | import com.gps.api.modules.sys.entity.SysUserRoleEntity; 13 | 14 | import java.util.List; 15 | 16 | 17 | 18 | /** 19 | * 用户与角色对应关系 20 | */ 21 | public interface SysUserRoleService extends IService { 22 | 23 | void saveOrUpdate(Long userId, List roleIdList); 24 | 25 | /** 26 | * 根据用户ID,获取角色ID列表 27 | */ 28 | List queryRoleIdList(Long userId); 29 | 30 | /** 31 | * 根据角色ID数组,批量删除 32 | */ 33 | int deleteBatch(Long[] roleIds); 34 | } 35 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/service/SysUserTokenService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.service; 10 | 11 | import com.baomidou.mybatisplus.extension.service.IService; 12 | import com.gps.db.utils.R; 13 | import com.gps.api.modules.sys.entity.SysUserTokenEntity; 14 | 15 | /** 16 | * 用户Token 17 | */ 18 | public interface SysUserTokenService extends IService { 19 | 20 | /** 21 | * 生成token 22 | * @param userId 用户ID 23 | */ 24 | R createUserToken(long userId, boolean fromPhone); 25 | 26 | R createDeviceToken(String imei, boolean fromPhone); 27 | 28 | SysUserTokenEntity getById2(long id); 29 | 30 | /** 31 | * 退出,修改token值 32 | */ 33 | void logout(); 34 | 35 | void logoutById(Long userId); 36 | 37 | void checkExpiredToken(); 38 | } 39 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/modules/sys/service/impl/SysLogServiceImpl.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2018-2020 GPS180 All rights reserved. 3 | * 4 | * https://www.gps180.com 5 | * 6 | * 版权所有,侵权必究! 7 | */ 8 | 9 | package com.gps.api.modules.sys.service.impl; 10 | 11 | import com.gps.api.modules.sys.dao.SysLogDao; 12 | import com.gps.api.modules.sys.entity.SysLogEntity; 13 | import com.gps.api.modules.sys.service.SysLogService; 14 | import com.gps.db.service.impl.BaseServiceImpl; 15 | import org.springframework.stereotype.Service; 16 | 17 | @Service("sysLogService") 18 | public class SysLogServiceImpl extends BaseServiceImpl implements SysLogService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/AccessType.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac; 2 | 3 | /** 4 | * 数据权限算法结果 5 | * @author xiandafu 6 | * 7 | */ 8 | public enum AccessType { 9 | OnlyUser(1), 10 | OnlyOrg(2), 11 | AllOrg(3), 12 | NoneOrg(4); 13 | 14 | private int value; 15 | 16 | AccessType(int value) { 17 | this.value = value; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/DataAccess.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac; 2 | 3 | /** 4 | * 数据权限接口类 5 | * @author Administrator 6 | * 7 | */ 8 | public interface DataAccess { 9 | DataAccessResullt getOrg(Long userId, Long orgId); 10 | String getName(); 11 | Integer getType(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/DataAccessFactory.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac; 2 | 3 | 4 | import com.gps.api.rbac.tree.OrgItem; 5 | 6 | import java.util.List; 7 | 8 | public interface DataAccessFactory { 9 | /** 10 | * 得到数去访问权限 11 | * 12 | * @param type 13 | * @return 14 | */ 15 | public DataAccess getDataAccess(Integer type); 16 | 17 | /** 18 | * 得到用户能看到得到组织机构树,比如,用户只能看到公司级别的组织机构树。 19 | * DefaultDataAccessFactory 默认实现了能看到所在公司(集团,母公司)的组织机构树 20 | * @return 21 | */ 22 | public OrgItem getUserOrgTree(OrgItem item); 23 | 24 | 25 | public List all(); 26 | } 27 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/DataAccessResullt.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 通过DataAccess 得出跟查询相关的用户或者组织机构列表 9 | * 10 | * @author lijiazhi 11 | */ 12 | @Data 13 | public class DataAccessResullt { 14 | private List userIds; 15 | private List orgIds; 16 | //1 结果仅仅包含用户, 2 ,结果仅仅包含组织机构 3 结果匹配所有组织结构 4 结果不匹配任何组织机构 17 | private AccessType status; 18 | } 19 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/da/AllGroupAccess.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac.da; 2 | 3 | import com.gps.api.rbac.AccessType; 4 | import com.gps.api.rbac.DataAccess; 5 | import com.gps.api.rbac.DataAccessResullt; 6 | import org.springframework.stereotype.Component; 7 | 8 | /** 9 | * 所有机构 10 | * @author lijiazhi 11 | * 12 | */ 13 | @Component 14 | public class AllGroupAccess implements DataAccess { 15 | 16 | @Override 17 | public DataAccessResullt getOrg(Long userId, Long orgId) { 18 | DataAccessResullt ret = new DataAccessResullt(); 19 | ret.setStatus(AccessType.AllOrg); 20 | return ret; 21 | } 22 | 23 | @Override 24 | public String getName() { 25 | return "所有机构"; 26 | } 27 | 28 | @Override 29 | public Integer getType() { 30 | return 5; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/da/NonDataAccess.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac.da; 2 | 3 | import com.gps.api.rbac.AccessType; 4 | import com.gps.api.rbac.DataAccess; 5 | import com.gps.api.rbac.DataAccessResullt; 6 | import org.springframework.stereotype.Component; 7 | 8 | @Component 9 | public class NonDataAccess implements DataAccess { 10 | 11 | @Override 12 | public DataAccessResullt getOrg(Long userId, Long orgId) { 13 | DataAccessResullt ret = new DataAccessResullt(); 14 | ret.setStatus(AccessType.NoneOrg); 15 | return ret; 16 | 17 | } 18 | 19 | @Override 20 | public String getName() { 21 | return "无权限"; 22 | } 23 | 24 | @Override 25 | public Integer getType() { 26 | return 10; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/da/OwnerDataAccess.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac.da; 2 | 3 | import com.gps.api.rbac.AccessType; 4 | import com.gps.api.rbac.DataAccess; 5 | import com.gps.api.rbac.DataAccessResullt; 6 | import org.springframework.stereotype.Component; 7 | 8 | import java.util.Arrays; 9 | 10 | /** 11 | * 只查看自己 12 | * @author lijiazhi 13 | * 14 | */ 15 | @Component 16 | public class OwnerDataAccess implements DataAccess { 17 | 18 | @Override 19 | public DataAccessResullt getOrg(Long userId, Long orgId) { 20 | DataAccessResullt ret = new DataAccessResullt(); 21 | ret.setStatus(AccessType.OnlyUser); 22 | ret.setUserIds(Arrays.asList(userId)); 23 | return ret; 24 | 25 | } 26 | 27 | @Override 28 | public String getName() { 29 | return "只查看自己"; 30 | } 31 | 32 | @Override 33 | public Integer getType() { 34 | return 1; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/da/SameOrgDataAccess.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac.da; 2 | 3 | import com.gps.api.rbac.AccessType; 4 | import com.gps.api.rbac.DataAccess; 5 | import com.gps.api.rbac.DataAccessResullt; 6 | import org.springframework.stereotype.Component; 7 | 8 | import java.util.Arrays; 9 | 10 | /** 11 | * 同机构 12 | * @author lijiazhi 13 | * 14 | */ 15 | @Component 16 | public class SameOrgDataAccess implements DataAccess { 17 | 18 | @Override 19 | public DataAccessResullt getOrg(Long userId, Long orgId) { 20 | DataAccessResullt ret = new DataAccessResullt(); 21 | ret.setStatus(AccessType.OnlyOrg); 22 | ret.setOrgIds(Arrays.asList(orgId)); 23 | return ret; 24 | 25 | } 26 | 27 | @Override 28 | public String getName() { 29 | return "同结构(公司) (不含子公司)"; 30 | } 31 | 32 | @Override 33 | public Integer getType() { 34 | return 3; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/datascope/DataScope.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac.datascope; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | import java.util.HashMap; 7 | import java.util.List; 8 | 9 | /** 10 | * @author lengleng 11 | * @date 2019/2/1 12 | * 数据权限查询参数 13 | */ 14 | @Data 15 | @EqualsAndHashCode(callSuper = true) 16 | public class DataScope extends HashMap { 17 | /** 18 | * 限制范围的字段名称 19 | */ 20 | private String scopeName = "deptId"; 21 | 22 | /** 23 | * 具体的数据范围 24 | */ 25 | private List deptIds; 26 | 27 | /** 28 | * 是否只查询本部门 29 | */ 30 | private Boolean isOnly = false; 31 | } 32 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/datascope/SelectItemVisitorImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac.datascope; 2 | 3 | import com.gps.db.datascope.PermissionAop; 4 | import net.sf.jsqlparser.statement.select.AllColumns; 5 | import net.sf.jsqlparser.statement.select.AllTableColumns; 6 | import net.sf.jsqlparser.statement.select.SelectExpressionItem; 7 | import net.sf.jsqlparser.statement.select.SelectItemVisitor; 8 | 9 | public class SelectItemVisitorImpl implements SelectItemVisitor { 10 | 11 | private PermissionAop permissionAop; 12 | public SelectItemVisitorImpl(PermissionAop permissionAop) { 13 | this.permissionAop = permissionAop; 14 | } 15 | 16 | @Override 17 | public void visit(AllColumns allColumns) { 18 | } 19 | 20 | @Override 21 | public void visit(AllTableColumns allTableColumns) { 22 | } 23 | 24 | @Override 25 | public void visit(SelectExpressionItem selectExpressionItem) { 26 | selectExpressionItem.getExpression().accept(new ExpressionVisitorImpl(permissionAop)); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/datascope/cond/TableCondition.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac.datascope.cond; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @AllArgsConstructor 10 | public class TableCondition { 11 | private String operator; 12 | private String fieldName; 13 | private Object fieldValue; 14 | } 15 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/rbac/tree/TreeItem.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.rbac.tree; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 菜单,功能点,组织机构等跟树有关的结构的接口 7 | * @author lijiazhi 8 | * 9 | */ 10 | public interface TreeItem extends java.io.Serializable { 11 | public String getName(); 12 | public Long getId(); 13 | public List getChildren(); 14 | } 15 | -------------------------------------------------------------------------------- /gps-api/src/main/java/com/gps/api/ws/MyWebSocketManager.java: -------------------------------------------------------------------------------- 1 | package com.gps.api.ws; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import com.gps.websocket.WebSocket; 6 | import com.gps.websocket.memory.MemWebSocketManager; 7 | 8 | import javax.websocket.Session; 9 | import java.util.List; 10 | 11 | @Slf4j 12 | public class MyWebSocketManager extends MemWebSocketManager { 13 | @Autowired 14 | private WebSocketPush webSocketPush; 15 | 16 | @Override 17 | public void onMessage(String identifier, String message, Session session) { 18 | 19 | } 20 | 21 | @Override 22 | public void doRemoveSocket(List webSocket) { 23 | webSocketPush.doRemoveSocket(webSocket); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /gps-api/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ==================================================================================================================== 2 | 3 | 欢迎使用 Gps-Api 快速开发平台 - Powered By https://www.gps180.net/ 4 | 5 | ==================================================================================================================== -------------------------------------------------------------------------------- /gps-api/src/main/resources/mapper/job/ScheduleJobDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | update schedule_job set status = #{status} where job_id in 9 | 10 | #{jobId} 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /gps-api/src/main/resources/mapper/job/ScheduleJobLogDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /gps-api/src/main/resources/mapper/oss/SysOssDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /gps-api/src/main/resources/mapper/sys/SysConfigDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | update sys_config set param_value = #{paramValue} where param_key = #{paramKey} 8 | 9 | 10 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /gps-api/src/main/resources/mapper/sys/SysLogDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /gps-api/src/main/resources/mapper/sys/SysMenuDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 12 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /gps-api/src/main/resources/mapper/sys/SysRoleDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | -------------------------------------------------------------------------------- /gps-api/src/main/resources/mapper/sys/SysRoleDeptDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | 26 | delete from sys_role_dept where role_id in 27 | 28 | #{roleId} 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /gps-api/src/main/resources/mapper/sys/SysRoleMenuDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | delete from sys_role_menu where role_id in 12 | 13 | #{roleId} 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /gps-api/src/main/resources/mapper/sys/SysUserRoleDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | delete from sys_user_role where role_id in 8 | 9 | #{roleId} 10 | 11 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /gps-api/src/main/resources/mapper/sys/SysUserTokenDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /gps-api/src/test/java/com/gps/api/JwtTest.java: -------------------------------------------------------------------------------- 1 | package com.gps.api; 2 | 3 | import com.gps.api.common.utils.JwtUtils; 4 | import org.junit.Test; 5 | import org.junit.runner.RunWith; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.boot.test.context.SpringBootTest; 8 | import org.springframework.test.context.junit4.SpringRunner; 9 | 10 | 11 | @RunWith(SpringRunner.class) 12 | @SpringBootTest 13 | public class JwtTest { 14 | @Autowired 15 | private JwtUtils jwtUtils; 16 | 17 | @Test 18 | public void test() { 19 | // String token = jwtUtils.generateToken(1); 20 | 21 | // System.out.println(token); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /gps-api/src/test/java/com/gps/api/RedisTest.java: -------------------------------------------------------------------------------- 1 | package com.gps.api; 2 | 3 | import com.gps.api.modules.sys.entity.SysUserEntity; 4 | import org.apache.commons.lang.builder.ToStringBuilder; 5 | import org.junit.Test; 6 | import org.junit.runner.RunWith; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.boot.test.context.SpringBootTest; 9 | import org.springframework.test.context.junit4.SpringRunner; 10 | 11 | @RunWith(SpringRunner.class) 12 | @SpringBootTest 13 | public class RedisTest { 14 | @Autowired 15 | private ApiRedisUtils redisUtils; 16 | 17 | @Test 18 | public void contextLoads() { 19 | SysUserEntity user = new SysUserEntity(); 20 | user.setEmail("qqq@qq.com"); 21 | redisUtils.set("user", user); 22 | 23 | System.out.println(ToStringBuilder.reflectionToString(redisUtils.get("user", SysUserEntity.class))); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /gps-common/build.gradle: -------------------------------------------------------------------------------- 1 | group = 'com.gps180' 2 | jar.enabled = true 3 | bootJar.enabled = false 4 | dependencies { 5 | compile "com.alibaba:fastjson:${fastjsonVersion}" 6 | compileOnly 'com.fasterxml.jackson.core:jackson-annotations:2.9.9' 7 | } 8 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/Constants.java: -------------------------------------------------------------------------------- 1 | package com.gps.common; 2 | 3 | /** 4 | * 常量类 5 | */ 6 | public class Constants { 7 | 8 | /** 9 | * -------------------------------------命令相关------------------------------------ 10 | */ 11 | 12 | public static final String COMMANDS_TOPIC = "commands"; // api -> gate 13 | public static final String POSITION_TOPIC = "positions"; // gate -> data 14 | public static final String NOTIFYUI_TOPIC = "notifyui"; // data -> api 15 | public static final String IMPORTCMD_TOPIC = "importcmd"; // gate -> api 16 | public static final String TO809_TOPIC = "to809"; // data -> 809 17 | public static final String POS_KEY = "pos_key"; 18 | public static final String CMD_KEY = "cmd_key"; 19 | 20 | //命令唯一标识 21 | public static final String USER_ID = "userId"; 22 | public static final String USER_PHONE = "phone"; 23 | public static final String PLATFORM = "platform"; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/MessageType.java: -------------------------------------------------------------------------------- 1 | package com.gps.common; 2 | 3 | public enum MessageType { 4 | 5 | TYPE_ONLINE, 6 | TYPE_OFFLINE, 7 | TYPE_HEART, 8 | TYPE_EVENTS, 9 | TYPE_POSITIONS, 10 | TYPE_RESULTS, 11 | TYPE_REGIST, 12 | TYPE_RECORD, 13 | TYPE_OTHER 14 | } 15 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/geofence/GeofenceGeometry.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.common.geofence; 3 | 4 | import java.io.Serializable; 5 | import java.text.ParseException; 6 | 7 | public abstract class GeofenceGeometry implements Serializable { 8 | 9 | public abstract boolean containsPoint(double latitude, double longitude); 10 | 11 | public abstract String toWkt(); 12 | 13 | public abstract void fromWkt(String wkt) throws ParseException; 14 | 15 | public static class Coordinate implements Serializable { 16 | 17 | private double lat; 18 | private double lon; 19 | 20 | public double getLat() { 21 | return lat; 22 | } 23 | 24 | public void setLat(double lat) { 25 | this.lat = lat; 26 | } 27 | 28 | public double getLon() { 29 | return lon; 30 | } 31 | 32 | public void setLon(double lon) { 33 | this.lon = lon; 34 | } 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/helper/ImeiUtil.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.helper; 2 | 3 | import java.util.regex.Matcher; 4 | import java.util.regex.Pattern; 5 | 6 | public class ImeiUtil { 7 | 8 | /** 9 | * 计算imei最后一位数据与5 的模 10 | * @param imei 11 | * @return 12 | */ 13 | public static int getImeiRemainder(String imei) { 14 | if (imei == null) { 15 | return 2; 16 | } else if (imei.length() < 9) { //imei为车牌号 17 | String regEx="[^0-9]"; 18 | Pattern p = Pattern.compile(regEx); 19 | Matcher m = p.matcher(imei); 20 | String numStr = m.replaceAll("").trim(); 21 | return Integer.parseInt(numStr.substring(numStr.length() - 1)) % 5; 22 | } else { //正常imei号 23 | return Integer.parseInt(imei.substring(imei.length() - 1)) % 5; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/model/Attribute.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.common.model; 3 | 4 | public class Attribute { 5 | 6 | private String description; 7 | 8 | public String getDescription() { 9 | return description; 10 | } 11 | 12 | public void setDescription(String description) { 13 | this.description = description; 14 | } 15 | 16 | private String attribute; 17 | 18 | public String getAttribute() { 19 | return attribute; 20 | } 21 | 22 | public void setAttribute(String attribute) { 23 | this.attribute = attribute; 24 | } 25 | 26 | private String expression; 27 | 28 | public String getExpression() { 29 | return expression; 30 | } 31 | 32 | public void setExpression(String expression) { 33 | this.expression = expression; 34 | } 35 | 36 | private String type; 37 | 38 | public String getType() { 39 | return type; 40 | } 41 | 42 | public void setType(String type) { 43 | this.type = type; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/model/BaseModel.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.common.model; 3 | 4 | import java.io.Serializable; 5 | import java.util.Date; 6 | import java.util.List; 7 | 8 | import lombok.Data; 9 | import lombok.NoArgsConstructor; 10 | import com.gps.common.MessageType; 11 | 12 | /** 13 | * 推送数据 14 | */ 15 | @Data 16 | @NoArgsConstructor 17 | public class BaseModel implements Serializable { 18 | 19 | private String imei; 20 | private MessageType messageType; 21 | private String protocol; 22 | private Date serverTime; 23 | private Position position; 24 | private List positions; 25 | private CommandResult commandResult; 26 | private RecordData recordData; 27 | private Event event; 28 | private String orgHexString; 29 | private List gnss; 30 | 31 | public BaseModel(String imei) { 32 | this.imei = imei; 33 | this.serverTime = new Date(); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/model/CommandResult.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.model; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | /** 7 | * 命令响应数据实体类 8 | */ 9 | @Data 10 | @EqualsAndHashCode(callSuper=false) 11 | public class CommandResult extends Message { 12 | 13 | //gate端用作命令流水号,传递后用作命令唯一编码(MySQL对应) 14 | private int commandFlowId; 15 | private int orgCommandType;//原命令ID 0x8001 16 | private boolean result;//执行结果 17 | private String reason;//error reason 18 | private Object resultObject;//命令返回结构体 19 | 20 | private String commandLogId; //对应数据库的ID字段 21 | private String userId; //用户ID 22 | private String userPhone;//命令发起人电话 23 | private String platform;//命令发起平台 24 | 25 | } 26 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/model/DeviceState.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.model; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class DeviceState implements Serializable { 9 | 10 | private Boolean motionState; 11 | private Position motionPosition; 12 | 13 | private Boolean overspeedState; 14 | private Position overspeedPosition; 15 | private String overspeedGeofenceId; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/model/Driver.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.model; 2 | 3 | public class Driver extends ExtendedModel { 4 | 5 | private String name; 6 | 7 | public String getName() { 8 | return name; 9 | } 10 | 11 | public void setName(String name) { 12 | this.name = name; 13 | } 14 | 15 | private String uniqueId; 16 | 17 | public String getUniqueId() { 18 | return uniqueId; 19 | } 20 | 21 | public void setUniqueId(String uniqueId) { 22 | this.uniqueId = uniqueId; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/model/Message.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.model; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | @Data 7 | @EqualsAndHashCode(callSuper=false) 8 | public class Message extends ExtendedModel { 9 | 10 | private String type; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/model/Network.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.model; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | import java.util.ArrayList; 7 | import java.util.Collection; 8 | 9 | @Data 10 | public class Network implements Serializable { 11 | 12 | public Network() { 13 | } 14 | 15 | public Network(CellTower cellTower) { 16 | addCellTower(cellTower); 17 | } 18 | 19 | private Integer homeMobileCountryCode; 20 | private Integer homeMobileNetworkCode; 21 | private String radioType = "gsm"; 22 | private String carrier; 23 | private Boolean considerIp = false; 24 | private Collection cellTowers; 25 | public void addCellTower(CellTower cellTower) { 26 | if (cellTowers == null) { 27 | cellTowers = new ArrayList<>(); 28 | } 29 | cellTowers.add(cellTower); 30 | } 31 | 32 | private Collection wifiAccessPoints; 33 | 34 | public void addWifiAccessPoint(WifiAccessPoint wifiAccessPoint) { 35 | if (wifiAccessPoints == null) { 36 | wifiAccessPoints = new ArrayList<>(); 37 | } 38 | wifiAccessPoints.add(wifiAccessPoint); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/model/RecordData.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | import java.util.Date; 7 | 8 | /** 9 | * 命令响应数据实体类 10 | */ 11 | @Data 12 | @AllArgsConstructor 13 | public class RecordData { 14 | 15 | private int totalPac; 16 | private int indexPac; 17 | private String data;//900 18 | private int len; 19 | private Date time; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/model/ScheduledModel.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.model; 2 | 3 | public class ScheduledModel extends ExtendedModel { 4 | 5 | private long calendarId; 6 | 7 | public long getCalendarId() { 8 | return calendarId; 9 | } 10 | 11 | public void setCalendarId(long calendarId) { 12 | this.calendarId = calendarId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/reports/model/BaseReport.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.reports.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class BaseReport { 7 | 8 | private String deviceId; 9 | private String deviceName; 10 | private double distance; 11 | public void addDistance(double distance) { 12 | this.distance += distance; 13 | } 14 | 15 | private double averageSpeed; 16 | private double maxSpeed; 17 | public void setMaxSpeed(double maxSpeed) { 18 | if (maxSpeed > this.maxSpeed) { 19 | this.maxSpeed = maxSpeed; 20 | } 21 | } 22 | private long duration; 23 | 24 | private double spentFuel; 25 | private double startOdometer; 26 | private double endOdometer; 27 | } 28 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/reports/model/DeviceReport.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.reports.model; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Collection; 5 | import java.util.List; 6 | 7 | public class DeviceReport { 8 | 9 | private String deviceName; 10 | 11 | public String getDeviceName() { 12 | return deviceName; 13 | } 14 | 15 | public void setDeviceName(String deviceName) { 16 | this.deviceName = deviceName; 17 | } 18 | 19 | private String groupName = ""; 20 | 21 | public String getGroupName() { 22 | return groupName; 23 | } 24 | 25 | public void setGroupName(String groupName) { 26 | this.groupName = groupName; 27 | } 28 | 29 | private List objects; 30 | 31 | public Collection getObjects() { 32 | return objects; 33 | } 34 | 35 | public void setObjects(Collection objects) { 36 | this.objects = new ArrayList<>(objects); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/reports/model/StopReport.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.common.reports.model; 3 | 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | import java.util.Date; 8 | 9 | @Data 10 | @EqualsAndHashCode(callSuper = false) 11 | public class StopReport extends BaseReport { 12 | 13 | // private long positionId; 14 | private double latitude; 15 | private double longitude; 16 | private Date startTime; 17 | private Date endTime; 18 | private String address; 19 | private long engineHours; // milliseconds 20 | public void addEngineHours(long engineHours) { 21 | this.engineHours += engineHours; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/reports/model/SummaryReport.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.reports.model; 2 | 3 | public class SummaryReport extends BaseReport { 4 | 5 | private long engineHours; // milliseconds 6 | 7 | public long getEngineHours() { 8 | return engineHours; 9 | } 10 | 11 | public void setEngineHours(long engineHours) { 12 | this.engineHours = engineHours; 13 | } 14 | 15 | public void addEngineHours(long engineHours) { 16 | this.engineHours += engineHours; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gps-common/src/main/java/com/gps/common/reports/model/TripReport.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.reports.model; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | import java.util.Date; 7 | 8 | @Data 9 | @EqualsAndHashCode(callSuper=false) 10 | public class TripReport extends BaseReport { 11 | 12 | // private long startPositionId; 13 | // private long endPositionId; 14 | private double startLat; 15 | private double startLon; 16 | private Date startTime; 17 | private String startAddress; 18 | private double startDistance; 19 | 20 | private double endLat; 21 | private double endLon; 22 | private Date endTime; 23 | private String endAddress; 24 | private double endDistance; 25 | 26 | private long duration; 27 | // private String driverUniqueId; 28 | // private String driverName; 29 | } 30 | -------------------------------------------------------------------------------- /gps-db/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | jar.enabled = true 3 | bootJar.enabled = false 4 | 5 | dependencies { 6 | compile project(':gps-common') 7 | 8 | // compileOnly 'org.springframework.boot:spring-boot-starter-web' 9 | compile 'org.springframework.boot:spring-boot-starter-data-redis' 10 | compile 'org.springframework.boot:spring-boot-starter-aop' 11 | // compile "mysql:mysql-connector-java:${mysqlConnectorVersion}" 12 | // compile 'tk.mybatis:mapper-spring-boot-starter:2.1.5' 13 | compile "com.baomidou:mybatis-plus-boot-starter:${mybatisPlusVersion}" 14 | compile "com.alibaba:fastjson:${fastjsonVersion}" 15 | // compileOnly 'com.fasterxml.jackson.core:jackson-annotations:2.9.8' 16 | compile 'com.fasterxml.jackson.core:jackson-databind:2.10.2' 17 | compile 'org.apache.commons:commons-pool2:2.6.2' 18 | 19 | compile 'org.apache.commons:commons-lang3:3.9' 20 | compileOnly 'org.apache.httpcomponents:httpcore:4.4.12'//R.java 21 | compileOnly 'io.swagger:swagger-annotations:1.6.0' 22 | compileOnly 'com.alibaba:druid:1.1.20' 23 | compileOnly 'javax.servlet:javax.servlet-api:4.0.1' 24 | 25 | testCompile('org.springframework.boot:spring-boot-starter-test') { 26 | exclude(module: 'commons-logging') 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/aspect/GpsRedisAspect.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.db.aspect; 3 | 4 | import com.gps.db.exception.RRException; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.aspectj.lang.ProceedingJoinPoint; 7 | import org.aspectj.lang.annotation.Around; 8 | import org.aspectj.lang.annotation.Aspect; 9 | import org.springframework.beans.factory.annotation.Value; 10 | import org.springframework.context.annotation.Configuration; 11 | 12 | /** 13 | * Redis切面处理类 14 | * 15 | * @author Mark sunlightcs@gmail.com 16 | */ 17 | @Aspect 18 | @Slf4j 19 | @Configuration 20 | public class GpsRedisAspect { 21 | 22 | //是否开启redis缓存 true开启 false关闭 23 | @Value("${spring.redis-gps.open: false}") 24 | private boolean open; 25 | 26 | @Around("execution(* com.gps.db.GpsRedisUtils.*(..))") 27 | public Object around(ProceedingJoinPoint point) throws Throwable { 28 | Object result = null; 29 | if (open) { 30 | try { 31 | result = point.proceed(); 32 | } catch (Exception e) { 33 | log.error("redis error", e); 34 | throw new RRException("Redis服务异常"); 35 | } 36 | } 37 | return result; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/AlarmDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.baomidou.mybatisplus.core.metadata.IPage; 4 | import com.gps.db.datascope.PermissionAop; 5 | import com.gps.db.entity.AlarmEntity; 6 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 7 | import org.apache.ibatis.annotations.Mapper; 8 | import org.apache.ibatis.annotations.Param; 9 | 10 | /** 11 | * 12 | * 13 | * @author zb 14 | * @email zb@gmail.com 15 | * @date 2019-06-24 20:27:53 16 | */ 17 | @Mapper 18 | public interface AlarmDao extends BaseMapper { 19 | 20 | @PermissionAop(tableAlias = "a") 21 | IPage listPage(@Param("page") IPage page, @Param("imei") String imei); 22 | } 23 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/AlarmTypeDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.gps.db.entity.AlarmTypeEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * 10 | * @author zb 11 | * @email zb@gmail.com 12 | * @date 2019-06-30 11:13:45 13 | */ 14 | @Mapper 15 | public interface AlarmTypeDao extends BaseMapper { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/CommandDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.gps.db.entity.CommandEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * 10 | * @author zb 11 | * @email zb@gmail.com 12 | * @date 2019-06-24 20:27:53 13 | */ 14 | @Mapper 15 | public interface CommandDao extends BaseMapper { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/CommandLogsDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.baomidou.mybatisplus.core.metadata.IPage; 4 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 5 | import com.gps.db.datascope.PermissionAop; 6 | import com.gps.db.entity.CommandLogsEntity; 7 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 8 | import java.io.Serializable; 9 | import java.util.Collection; 10 | import java.util.Date; 11 | import java.util.List; 12 | import org.apache.ibatis.annotations.Mapper; 13 | import org.apache.ibatis.annotations.Param; 14 | import org.apache.ibatis.annotations.Select; 15 | 16 | /** 17 | * 18 | * 19 | * @author zb 20 | * @email zb@gmail.com 21 | * @date 2019-06-24 20:27:53 22 | */ 23 | @Mapper 24 | public interface CommandLogsDao extends BaseMapper { 25 | 26 | @PermissionAop(tableAlias = "d") 27 | IPage commandList(@Param("page") IPage page, @Param("imei") String imei, 28 | @Param("startDate") Date startDate, @Param("endDate") Date endDate); 29 | } 30 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/CommandTypeDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.gps.db.entity.CommandTypeEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import java.util.List; 6 | import org.apache.ibatis.annotations.Mapper; 7 | import org.apache.ibatis.annotations.Param; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-06-30 11:13:45 15 | */ 16 | @Mapper 17 | public interface CommandTypeDao extends BaseMapper { 18 | 19 | List cmdListByImei(@Param("imei") String imei); 20 | } 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/CommandTypeMDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.gps.db.entity.CommandTypeMEntity; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * 10 | * @author zb 11 | * @email zb@gmail.com 12 | * @date 2019-06-30 11:13:45 13 | */ 14 | @Mapper 15 | public interface CommandTypeMDao extends BaseMapper { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/DeviceGeofenceDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.gps.db.entity.DeviceGeofenceEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * 10 | * @author zb 11 | * @email zb@gmail.com 12 | * @date 2019-06-24 20:27:53 13 | */ 14 | @Mapper 15 | public interface DeviceGeofenceDao extends BaseMapper { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/DeviceRecDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.gps.db.datascope.PermissionAop; 6 | import com.gps.db.entity.DeviceRecEntity; 7 | import org.apache.ibatis.annotations.Mapper; 8 | import org.apache.ibatis.annotations.Param; 9 | 10 | import java.util.Date; 11 | import java.util.List; 12 | 13 | /** 14 | * 15 | * 16 | * @author zb 17 | * @email zb@gmail.com 18 | * @date 2020-01-22 16:33:18 19 | */ 20 | @Mapper 21 | public interface DeviceRecDao extends BaseMapper { 22 | 23 | @PermissionAop(tableAlias = "d") 24 | IPage listAll(@Param("page") IPage page, @Param("imei") String imei, 25 | @Param("startDate") Date startDate, @Param("endDate") Date endDate); 26 | } 27 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/DeviceStatusDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.gps.db.datascope.PermissionAop; 5 | import com.gps.db.entity.DeviceStatusEntity; 6 | import org.apache.ibatis.annotations.Mapper; 7 | import org.apache.ibatis.annotations.Param; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * 13 | * 14 | * @author chenshun 15 | * @email sunlightcs@gmail.com 16 | * @date 2019-06-24 17:23:20 17 | */ 18 | @Mapper 19 | public interface DeviceStatusDao extends BaseMapper { 20 | 21 | @PermissionAop(tableAlias = "g") 22 | List selectByImei(@Param("ids") List ids); 23 | 24 | // @Override 25 | // @PermissionAop 26 | // DeviceStatusEntity selectById(Serializable id); 27 | 28 | // @Override 29 | // @PermissionAop 30 | // List selectList(Wrapper queryWrapper); 31 | } 32 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/EventsDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.gps.db.entity.EventsEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * 10 | * @author zb 11 | * @email zb@gmail.com 12 | * @date 2019-06-24 20:27:53 13 | */ 14 | @Mapper 15 | public interface EventsDao extends BaseMapper { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/GeofenceDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.gps.db.entity.GeofenceEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import com.gps.db.entityvo.GeofenceListVo; 6 | import org.apache.ibatis.annotations.Mapper; 7 | import org.apache.ibatis.annotations.Param; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * 13 | * 14 | * @author zb 15 | * @email zb@gmail.com 16 | * @date 2019-06-24 20:27:53 17 | */ 18 | @Mapper 19 | public interface GeofenceDao extends BaseMapper { 20 | 21 | List getGeofenceByDeviceImei(@Param("deviceImei") String deviceImei); 22 | 23 | List geofenceList(@Param("companyId") String companyId); 24 | } 25 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/GroupsDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.gps.db.datascope.PermissionAop; 4 | import com.gps.db.entity.GroupsEntity; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.apache.ibatis.annotations.Mapper; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 12 | * 13 | * @author zb 14 | * @email zb@gmail.com 15 | * @date 2019-06-24 20:27:53 16 | */ 17 | @Mapper 18 | public interface GroupsDao extends BaseMapper { 19 | 20 | @PermissionAop(tableAlias = "g") 21 | List listByUser(); 22 | } 23 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/Jt809DevPlatDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.gps.db.entity.Jt809DevPlatEntity; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-10-26 09:26:45 15 | */ 16 | @Mapper 17 | public interface Jt809DevPlatDao extends BaseMapper { 18 | 19 | List getGnssByImei(String imei); 20 | } 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/Jt809UserDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.gps.db.entity.Jt809UserEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-06-26 09:26:45 15 | */ 16 | @Mapper 17 | public interface Jt809UserDao extends BaseMapper { 18 | 19 | List findAllUpUsers(); 20 | } 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/PositionsDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.gps.db.entity.PositionsEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * 10 | * @author zb 11 | * @email zb@gmail.com 12 | * @date 2019-06-24 20:27:53 13 | */ 14 | @Mapper 15 | public interface PositionsDao extends BaseMapper { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/ProductDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.gps.db.entity.ProductEntity; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * 10 | * @author chenshun 11 | * @email sunlightcs@gmail.com 12 | * @date 2019-06-24 17:23:20 13 | */ 14 | @Mapper 15 | public interface ProductDao extends BaseMapper { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/RiskPointDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.gps.db.datascope.PermissionAop; 6 | import com.gps.db.entity.AlarmEntity; 7 | import com.gps.db.entity.RiskPointEntity; 8 | import org.apache.ibatis.annotations.Mapper; 9 | import org.apache.ibatis.annotations.Param; 10 | 11 | /** 12 | * 13 | * 14 | * @author qulpng 15 | * @email qul@ccwcar.com 16 | * @date 2020-02-03 14:27:53 17 | */ 18 | @Mapper 19 | public interface RiskPointDao extends BaseMapper { 20 | } 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/UserDeviceDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.gps.db.entity.UserDeviceEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * 9 | * 10 | * @author zb 11 | * @email zb@gmail.com 12 | * @date 2019-06-30 11:13:45 13 | */ 14 | @Mapper 15 | public interface UserDeviceDao extends BaseMapper { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dao/UserGroupDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dao; 2 | 3 | import com.gps.db.entity.UserGroupEntity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-06-30 11:13:45 15 | */ 16 | @Mapper 17 | public interface UserGroupDao extends BaseMapper { 18 | 19 | List queryGroupIdList(long userId); 20 | } 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/datascope/PermissionAop.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.datascope; 2 | 3 | import java.lang.annotation.*; 4 | 5 | 6 | /** 7 | * 数据权限过滤 8 | * @author GaoYuan 9 | * @date 2018/4/17 下午2:40 10 | */ 11 | @Target(ElementType.METHOD) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Documented 14 | public @interface PermissionAop { 15 | String value() default ""; 16 | 17 | /** 表的别名 */ 18 | String tableAlias() default ""; 19 | /** true:没有本部门数据权限,也能查询本人数据 */ 20 | boolean user() default true; 21 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dbutils/CommonConstants.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.dbutils; 2 | 3 | public interface CommonConstants { 4 | /** 5 | * 删除 6 | */ 7 | String STATUS_DEL = "1"; 8 | /** 9 | * 正常 10 | */ 11 | String STATUS_NORMAL = "0"; 12 | 13 | /** 14 | * 锁定 15 | */ 16 | String STATUS_LOCK = "9"; 17 | 18 | /** 19 | * 菜单 20 | */ 21 | String MENU = "0"; 22 | 23 | /** 24 | * 编码 25 | */ 26 | String UTF8 = "UTF-8"; 27 | 28 | /** 29 | * JSON 资源 30 | */ 31 | String CONTENT_TYPE = "application/json; charset=utf-8"; 32 | 33 | /** 34 | * 前端工程名 35 | */ 36 | String FRONT_END_PROJECT = "pig-ui"; 37 | 38 | /** 39 | * 后端工程名 40 | */ 41 | String BACK_END_PROJECT = "pig"; 42 | 43 | /** 44 | * 成功标记 45 | */ 46 | Integer SUCCESS = 0; 47 | /** 48 | * 失败标记 49 | */ 50 | Integer FAIL = 1; 51 | 52 | /** 53 | * 验证码前缀 54 | */ 55 | String DEFAULT_CODE_KEY = "DEFAULT_CODE_KEY_"; 56 | } 57 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/dbutils/xss/SQLFilter.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.db.dbutils.xss; 3 | 4 | import com.gps.db.exception.RRException; 5 | import org.apache.commons.lang3.StringUtils; 6 | 7 | /** 8 | * SQL过滤 9 | * 10 | * @author Mark sunlightcs@gmail.com 11 | */ 12 | public class SQLFilter { 13 | 14 | /** 15 | * SQL注入过滤 16 | * @param str 待验证的字符串 17 | */ 18 | public static String sqlInject(String str){ 19 | if(StringUtils.isBlank(str)){ 20 | return null; 21 | } 22 | //去掉'|"|;|\字符 23 | str = StringUtils.replace(str, "'", ""); 24 | str = StringUtils.replace(str, "\"", ""); 25 | str = StringUtils.replace(str, ";", ""); 26 | str = StringUtils.replace(str, "\\", ""); 27 | 28 | //转换成小写 29 | str = str.toLowerCase(); 30 | 31 | //非法字符 32 | String[] keywords = {"master", "truncate", "insert", "select", "delete", "update", "declare", "alter", "drop"}; 33 | 34 | //判断是否包含非法字符 35 | for(String keyword : keywords){ 36 | if(str.indexOf(keyword) != -1){ 37 | throw new RRException("包含非法字符"); 38 | } 39 | } 40 | 41 | return str; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/AlarmEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | import io.swagger.annotations.ApiModelProperty; 11 | import lombok.Data; 12 | 13 | /** 14 | * 15 | * 16 | * @author zb 17 | * @email zb@gmail.com 18 | * @date 2019-06-24 20:27:53 19 | */ 20 | @Data 21 | @TableName("alarm") 22 | public class AlarmEntity { 23 | 24 | /** 25 | * 26 | */ 27 | @TableId(value = "id",type = IdType.INPUT) 28 | @ApiModelProperty(value = "唯一标识") 29 | private String id; 30 | // private String id = String.valueOf(SnowFlakeUtil.getFlowIdInstance().nextId()); 31 | private String imei; 32 | private String type; 33 | private String remark; 34 | private Integer level; 35 | private Date occurTime; 36 | private Date endTime; 37 | private Double longitude; 38 | private Double latitude; 39 | private Integer occurNum; 40 | private String companyId; 41 | /** 42 | * 是否处理,1已处理 43 | */ 44 | private Integer processStatus; 45 | private String processUser; 46 | private String processRemark; 47 | 48 | } 49 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/AlarmTypeEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | import lombok.Data; 10 | 11 | /** 12 | * 13 | * 14 | * @author zb 15 | * @email zb@gmail.com 16 | * @date 2019-06-30 11:13:45 17 | */ 18 | @Data 19 | @TableName("alarm_type") 20 | public class AlarmTypeEntity { 21 | 22 | /** 23 | * 24 | */ 25 | @TableId(value = "alarmcode",type = IdType.INPUT) 26 | private String alarmcode; 27 | /** 28 | * 29 | */ 30 | private String alarmname; 31 | /** 32 | * 33 | */ 34 | private String alarmdescr; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/CommandEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | import lombok.Data; 10 | 11 | /** 12 | * 13 | * 14 | * @author zb 15 | * @email zb@gmail.com 16 | * @date 2019-06-24 20:27:53 17 | */ 18 | @Data 19 | @TableName("command") 20 | public class CommandEntity { 21 | 22 | /** 23 | * 24 | */ 25 | @TableId(value = "id",type = IdType.INPUT) 26 | private String id; 27 | /** 28 | * 命令名称 29 | */ 30 | private String name; 31 | /** 32 | * 命令编码 33 | */ 34 | private String code; 35 | /** 36 | * 描述 37 | */ 38 | private String description; 39 | /** 40 | * 离线有效时间,单位秒 41 | */ 42 | private Integer expire; 43 | 44 | } 45 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/CommandLogsEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | import lombok.Data; 10 | 11 | /** 12 | * 13 | * 14 | * @author zb 15 | * @email zb@gmail.com 16 | * @date 2019-06-24 20:27:53 17 | */ 18 | @Data 19 | @TableName("command_logs") 20 | public class CommandLogsEntity { 21 | 22 | @TableId(type = IdType.INPUT) 23 | private String id; 24 | private String imei; 25 | private String commandType; 26 | private String commandBody; 27 | private String executor; 28 | private String executorPhone; 29 | private Date executeTime; 30 | private Boolean feedbackResult; 31 | private Date feedbackTime; 32 | private String platform; 33 | private String reason; 34 | private String attribute; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/CommandTypeEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | import lombok.Data; 10 | 11 | /** 12 | * 13 | * 14 | * @author zb 15 | * @email zb@gmail.com 16 | * @date 2019-06-30 11:13:45 17 | */ 18 | @Data 19 | @TableName("command_type") 20 | public class CommandTypeEntity { 21 | 22 | @TableId(value = "predict_cmd_id", type = IdType.INPUT) 23 | private Long predictCmdId; 24 | private String deviceType; 25 | private String cmdCode; 26 | private String cmdName; 27 | private String cmdNameEn; 28 | private String cmdNameTw; 29 | private String cmdDescr; 30 | private String cmdDescrEn; 31 | private String cmdDescrTw; 32 | private String params; 33 | private String paramsEn; 34 | private String paramsTw; 35 | private String cmdType; 36 | 37 | private String cmdPwd; 38 | private Integer cmdLevel; 39 | private Boolean sync; 40 | 41 | } 42 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/CommandTypeMEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | /** 9 | * 10 | * 11 | * @author zb 12 | * @email zb@gmail.com 13 | * @date 2019-06-30 11:13:45 14 | */ 15 | @Data 16 | @TableName("command_type_m") 17 | public class CommandTypeMEntity { 18 | 19 | @TableId(value = "cmdm_Id",type = IdType.INPUT) 20 | private Long cmdmId; 21 | private String cmdCode; 22 | private String cmdName; 23 | private String cmdNameEn; 24 | private String cmdNameTw; 25 | private String cmdDescr; 26 | private String cmdDescrEn; 27 | private String cmdDescrTw; 28 | private String params; 29 | private String paramsEn; 30 | private String paramsTw; 31 | private String cmdType; 32 | private Boolean sync; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/DeviceGeofenceEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | import lombok.Data; 10 | 11 | /** 12 | * 13 | * 14 | * @author zb 15 | * @email zb@gmail.com 16 | * @date 2019-06-24 20:27:53 17 | */ 18 | @Data 19 | @TableName("device_geofence") 20 | public class DeviceGeofenceEntity { 21 | 22 | /** 23 | * 24 | */ 25 | @TableId(value = "id",type = IdType.INPUT) 26 | private String id; 27 | /** 28 | * 设备imei 29 | */ 30 | private String imei; 31 | /** 32 | * 围栏id 33 | */ 34 | private String geofenceId; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/DeviceRecEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | 8 | import com.gps.db.db.BlobDataTypeHandler; 9 | import com.gps.db.db.MapDateTypeHandler; 10 | import lombok.Data; 11 | 12 | import java.sql.Blob; 13 | import java.util.Date; 14 | 15 | import static org.apache.ibatis.type.JdbcType.BLOB; 16 | 17 | /** 18 | * 19 | * 20 | * @author zb 21 | * @email zb@gmail.com 22 | * @date 2020-01-22 16:33:18 23 | */ 24 | @Data 25 | @TableName("device_rec") 26 | public class DeviceRecEntity { 27 | 28 | /** 29 | * 30 | */ 31 | @TableId(value = "id",type = IdType.INPUT) 32 | private String id; 33 | /** 34 | * 35 | */ 36 | private String imei; 37 | /** 38 | * 录音时间 39 | */ 40 | private Date recTime; 41 | /** 42 | * 录音时间 43 | */ 44 | private Integer fileSize; 45 | /** 46 | * 录音内容 47 | */ 48 | @TableField(typeHandler = BlobDataTypeHandler.class) 49 | private byte[] recData; 50 | 51 | } 52 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/EventsEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | 8 | import java.util.Date; 9 | import java.util.Map; 10 | 11 | import com.gps.db.db.MapDateTypeHandler; 12 | import lombok.Data; 13 | 14 | /** 15 | * 16 | * 17 | * @author zb 18 | * @email zb@gmail.com 19 | * @date 2019-06-24 20:27:53 20 | */ 21 | @Data 22 | @TableName("events") 23 | public class EventsEntity { 24 | 25 | @TableId(type = IdType.INPUT) 26 | private String id; 27 | private String imei; 28 | private String type; 29 | private String level; 30 | private Date occurTime; 31 | private Double longitude; 32 | private Double latitude; 33 | private String geofenceId; 34 | private String companyId; 35 | @TableField(typeHandler = MapDateTypeHandler.class) 36 | private Map attributes; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/GroupsEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | 8 | import java.util.Date; 9 | import java.util.List; 10 | 11 | import lombok.Data; 12 | 13 | /** 14 | * 15 | * 16 | * @author zb 17 | * @email zb@gmail.com 18 | * @date 2019-06-24 20:27:53 19 | */ 20 | @Data 21 | @TableName("t_groups") 22 | public class GroupsEntity { 23 | 24 | @TableId(value = "id",type = IdType.INPUT) 25 | private String id; 26 | private String parentId; 27 | private Long deptId; 28 | private String name; 29 | private Long maxUserNum; 30 | private Long maxDeviceNum; 31 | private String remark; 32 | private Long crtUserId; 33 | private Date crtTime; 34 | 35 | @TableField(exist=false) 36 | private List devices; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/Jt809DevPlatEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | /** 9 | * 10 | * 11 | * @author zb 12 | * @email zb@gmail.com 13 | * @date 2019-10-26 09:26:45 14 | */ 15 | @Data 16 | @TableName("jt809_dev_plat") 17 | public class Jt809DevPlatEntity { 18 | 19 | @TableId(value = "id",type = IdType.INPUT) 20 | private Long id; 21 | private String imei; 22 | private String gnss; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/ProductEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableId; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | 8 | import java.io.Serializable; 9 | import java.util.Date; 10 | import java.util.List; 11 | import java.util.Map; 12 | 13 | import com.gps.db.db.ListDateTypeHandler; 14 | import com.gps.db.db.MapDateTypeHandler; 15 | import lombok.Data; 16 | 17 | /** 18 | * 19 | * 20 | * @author zb 21 | * @email zb@gmail.com 22 | * @date 2019-06-24 17:23:20 23 | */ 24 | @Data 25 | @TableName("product") 26 | public class ProductEntity { 27 | 28 | @TableId(value = "id",type = IdType.INPUT) 29 | private String id; 30 | private String manufacturer; 31 | private String deviceModel; 32 | private String protocol; 33 | private String deviceType; 34 | private String commandType; 35 | @TableField(typeHandler = ListDateTypeHandler.class) 36 | private List functions; 37 | private String deviceDesc; 38 | private String reg; 39 | 40 | } 41 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/RiskPointEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | /** 9 | * Gps高风险点 10 | * @author qulong 11 | * @date 2020/2/3 14:08 12 | * @description 13 | */ 14 | @Data 15 | @TableName("alarm") 16 | public class RiskPointEntity { 17 | @TableId(value = "id",type = IdType.INPUT) 18 | private String id; 19 | private Double longitude; 20 | private Double latitude; 21 | private String addressName; 22 | private String storeName; 23 | private String cityName; 24 | private String cityId; 25 | } 26 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/UserDeviceEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | import lombok.Data; 10 | 11 | /** 12 | * 13 | * 14 | * @author zb 15 | * @email zb@gmail.com 16 | * @date 2019-06-30 11:13:45 17 | */ 18 | @Data 19 | @TableName("user_device") 20 | public class UserDeviceEntity { 21 | 22 | /** 23 | * 24 | */ 25 | @TableId(value = "id",type = IdType.INPUT) 26 | private String id; 27 | /** 28 | * 29 | */ 30 | private Long userId; 31 | /** 32 | * 33 | */ 34 | private String deviceId; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entity/UserGroupEntity.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | import lombok.Data; 10 | 11 | /** 12 | * 13 | * 14 | * @author zb 15 | * @email zb@gmail.com 16 | * @date 2019-06-30 11:13:45 17 | */ 18 | @Data 19 | @TableName("user_group") 20 | public class UserGroupEntity { 21 | 22 | @TableId(type = IdType.INPUT) 23 | private String id; 24 | private Long userId; 25 | private String groupId; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entityvo/DeviceGeofenceBindParam.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entityvo; 2 | 3 | import java.util.List; 4 | import lombok.Data; 5 | 6 | /** 7 | * @author qulong 8 | * @date 2020/2/4 17:57 9 | * @description 10 | */ 11 | @Data 12 | public class DeviceGeofenceBindParam { 13 | private String geofenceId; 14 | private List imeis; 15 | } 16 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entityvo/GeofenceListVo.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entityvo; 2 | 3 | import com.gps.db.entity.GeofenceEntity; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | /** 8 | * @author qulong 9 | * @date 2020/2/4 10:59 10 | * @description 11 | */ 12 | @Data 13 | @EqualsAndHashCode(callSuper=false) 14 | public class GeofenceListVo extends GeofenceEntity { 15 | private Integer deviceCount; 16 | } 17 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entityvo/PageVo.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entityvo; 2 | 3 | import io.swagger.annotations.ApiModelProperty; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * @author zwb 10 | */ 11 | @Data 12 | public class PageVo implements Serializable{ 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | @ApiModelProperty(value = "页号") 17 | private Long pageNum; 18 | 19 | @ApiModelProperty(value = "页面大小") 20 | private Long pageSize; 21 | 22 | @ApiModelProperty(value = "排序字段") 23 | private String sort; 24 | 25 | @ApiModelProperty(value = "排序方式 asc/desc") 26 | private String order; 27 | } 28 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/entityvo/SearchVo.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.entityvo; 2 | 3 | import io.swagger.annotations.ApiModelProperty; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * @author zwb 10 | */ 11 | @Data 12 | public class SearchVo implements Serializable { 13 | 14 | @ApiModelProperty(value = "起始日期") 15 | private String startDate; 16 | 17 | @ApiModelProperty(value = "结束日期") 18 | private String endDate; 19 | } 20 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/enums/AuditWorkOrderStatus.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.enums; 2 | 3 | /** 4 | * 审核工单状态枚举 5 | * 6 | * @author haibin.tang 7 | * @create 2018-10-22 1:52 PM 8 | **/ 9 | public enum AuditWorkOrderStatus { 10 | /** 11 | * 通过 12 | */ 13 | PASS, 14 | /** 15 | * 驳回 16 | */ 17 | REJECT 18 | } 19 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/enums/CheckDeviceAvailableSource.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.enums; 2 | 3 | /** 4 | * 校验设备来源 5 | * 6 | * @author haibin.tang 7 | * @create 2019-05-20 4:47 PM 8 | **/ 9 | public enum CheckDeviceAvailableSource { 10 | /** 11 | * 安装 12 | */ 13 | install, 14 | /** 15 | * 维护 16 | */ 17 | maintain 18 | } 19 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/enums/ControlType.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.enums; 2 | 3 | /** 4 | * 命令类型 5 | */ 6 | public enum ControlType { 7 | UNLOCKING("unlockType","开锁支持类型"), 8 | LOCKED("lockType", "关锁支持类型"), 9 | FINDCAR("carSearchType", "寻车支持类型"), 10 | INTERCEPTOPEN("parkingOilType", "设防(停车断油)支持类型"), 11 | INTERCEPTCLOSE("oilSupplyType", "撤防(通油)支持类型"), 12 | REBOOT("rebootDevice", "重启"); 13 | 14 | 15 | private String value; 16 | 17 | private String desc; 18 | 19 | ControlType(String value, String desc) { 20 | this.value = value; 21 | this.desc = desc; 22 | } 23 | 24 | public String getValue() { 25 | return value; 26 | } 27 | 28 | public String getDesc() { 29 | return desc; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/enums/DeviceFlowBehavior.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.enums; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * 设备流转行为 7 | * 8 | * @author haibin.tang 9 | * @create 2019-05-17 3:55 PM 10 | **/ 11 | @Getter 12 | public enum DeviceFlowBehavior { 13 | excel("导入"), 14 | a2b("出售"), 15 | a2c_c2c("转库"), 16 | replace_up("替换上"), 17 | replace_down("替换下"), 18 | install("安装"), 19 | c2a("退库"), 20 | loss("报失"), 21 | ; 22 | 23 | private String desc; 24 | 25 | DeviceFlowBehavior(String desc) { 26 | this.desc = desc; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/enums/DeviceStatusEnum.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.enums; 2 | 3 | /** 4 | * 设备状态 5 | * 6 | * @author haibin.tang 7 | * @create 2018-10-24 3:59 PM 8 | **/ 9 | public enum DeviceStatusEnum { 10 | 11 | BIND(1), 12 | UNBIND(0); 13 | 14 | private int value; 15 | 16 | DeviceStatusEnum(int value) { 17 | this.value = value; 18 | } 19 | 20 | public int getValue() { 21 | return value; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/enums/DeviceType.java: -------------------------------------------------------------------------------- 1 | package com.gps.common.enums; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | 5 | public enum DeviceType { 6 | 7 | WIRED(0, "有线"), 8 | WIRELESS(1, "无线"); 9 | 10 | private int index; 11 | private String desc; 12 | 13 | DeviceType(int index, String desc) { 14 | this.index = index; 15 | this.desc = desc; 16 | } 17 | 18 | public static DeviceType getIndex(String desc) { 19 | for (DeviceType type : DeviceType.values()) { 20 | if (StringUtils.equals(type.getDesc(), desc)) { 21 | return type; 22 | } 23 | } 24 | return null; 25 | } 26 | 27 | public int getIndex() { 28 | return index; 29 | } 30 | 31 | public void setIndex(int index) { 32 | this.index = index; 33 | } 34 | 35 | public String getDesc() { 36 | return desc; 37 | } 38 | 39 | public void setDesc(String desc) { 40 | this.desc = desc; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/enums/Repository.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.enums; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * 总部枚举 7 | * @author haibin.tang 8 | * @create 2019-05-16 3:14 PM 9 | **/ 10 | @Getter 11 | public enum Repository { 12 | 13 | HQ("1", "总部"); 14 | 15 | private String code; 16 | 17 | private String desc; 18 | 19 | Repository(String code, String desc) { 20 | this.code = code; 21 | this.desc = desc; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/exception/RRException.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.db.exception; 3 | 4 | /** 5 | * 自定义异常 6 | * 7 | * @author Mark sunlightcs@gmail.com 8 | */ 9 | public class RRException extends RuntimeException { 10 | private static final long serialVersionUID = 1L; 11 | 12 | private String msg; 13 | private int code = 500; 14 | 15 | public RRException(String msg) { 16 | super(msg); 17 | this.msg = msg; 18 | } 19 | 20 | public RRException(String msg, Throwable e) { 21 | super(msg, e); 22 | this.msg = msg; 23 | } 24 | 25 | public RRException(String msg, int code) { 26 | super(msg); 27 | this.msg = msg; 28 | this.code = code; 29 | } 30 | 31 | public RRException(String msg, int code, Throwable e) { 32 | super(msg, e); 33 | this.msg = msg; 34 | this.code = code; 35 | } 36 | 37 | public String getMsg() { 38 | return msg; 39 | } 40 | 41 | public void setMsg(String msg) { 42 | this.msg = msg; 43 | } 44 | 45 | public int getCode() { 46 | return code; 47 | } 48 | 49 | public void setCode(int code) { 50 | this.code = code; 51 | } 52 | 53 | 54 | } 55 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/AlarmService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.AlarmEntity; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-06-24 20:27:53 15 | */ 16 | public interface AlarmService extends IService { 17 | 18 | MyPage queryPage(Map params); 19 | 20 | MyPage queryPage(Long pageNum, Long pageSize, String orderField, String order, String imei); 21 | 22 | AlarmEntity findLastUnprocessAlarm(String imei, String alarm); 23 | 24 | boolean dismissAlarm(String imei, String alarmId, String prosUser, String remark); 25 | } 26 | 27 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/AlarmTypeService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.AlarmTypeEntity; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-06-30 11:13:45 15 | */ 16 | public interface AlarmTypeService extends IService { 17 | 18 | MyPage queryPage(Map params); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/BaseIService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.Wrapper; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.gps.db.dbutils.MyPage; 6 | import com.gps.db.entity.CommandTypeEntity; 7 | 8 | 9 | /** 10 | * @author zb 11 | * @email zb@gmail.com 12 | * @date 2019-06-30 11:13:45 13 | */ 14 | public interface BaseIService extends IService { 15 | 16 | MyPage queryPage(Long pageNum, Long pageSize, String sort, String order, 17 | Wrapper queryWrapper); 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/CommandLogsService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.entity.CommandLogsEntity; 5 | import com.gps.db.dbutils.MyPage; 6 | 7 | import java.util.Date; 8 | import java.util.Map; 9 | 10 | /** 11 | * 12 | * 13 | * @author zb 14 | * @email zb@gmail.com 15 | * @date 2019-06-24 20:27:53 16 | */ 17 | public interface CommandLogsService extends IService { 18 | 19 | MyPage queryPage(Map params); 20 | 21 | MyPage queryPage(Long pageNum, Long pageSize, String orderField, String order, 22 | String imei, Date startDate, Date endDate); 23 | } 24 | 25 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/CommandService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.CommandEntity; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-06-24 20:27:53 15 | */ 16 | public interface CommandService extends IService { 17 | 18 | MyPage queryPage(Map params); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/CommandTypeMService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.CommandTypeMEntity; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-06-30 11:13:45 15 | */ 16 | public interface CommandTypeMService extends IService { 17 | 18 | MyPage queryPage(Map params); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/CommandTypeService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.common.model.CommandType; 5 | import com.gps.db.dbutils.MyPage; 6 | import com.gps.db.entity.CommandTypeEntity; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | /** 12 | * 13 | * 14 | * @author zb 15 | * @email zb@gmail.com 16 | * @date 2019-06-30 11:13:45 17 | */ 18 | public interface CommandTypeService extends IService { 19 | 20 | MyPage queryPage(Map params); 21 | 22 | List getByImei(String imei); 23 | } 24 | 25 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/DeviceGeofenceService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.DeviceGeofenceEntity; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-06-24 20:27:53 15 | */ 16 | public interface DeviceGeofenceService extends IService { 17 | 18 | MyPage queryPage(Map params); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/DeviceRecService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.DeviceRecEntity; 6 | 7 | import java.util.Date; 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | /** 12 | * 13 | * 14 | * @author zb 15 | * @email zb@gmail.com 16 | * @date 2020-01-22 16:33:18 17 | */ 18 | public interface DeviceRecService extends IService { 19 | 20 | MyPage queryPage(Map params); 21 | 22 | MyPage listAll(Long pageNum, Long pageSize, String sort, String order, 23 | String imei, Date startDate, Date endDate); 24 | } 25 | 26 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/DeviceService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.DeviceEntity; 6 | 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * 12 | * 13 | * @author chenshun 14 | * @email sunlightcs@gmail.com 15 | * @date 2019-06-24 17:23:20 16 | */ 17 | public interface DeviceService extends IService { 18 | 19 | MyPage queryPage(Map params); 20 | 21 | MyPage listPage(Long pageNum, Long pageSize, String orderField, String order, String groupId, String imei); 22 | 23 | MyPage bindGeofenceList(Long pageNum, Long pageSize, String orderField, String order, String companyId, String imei, String geoId); 24 | 25 | MyPage unbindGeofenceList(Long pageNum, Long pageSize, String orderField, String order, String companyId, String imei); 26 | 27 | List listByUser(); 28 | 29 | List listByImei(String imei); 30 | 31 | boolean updatePassword(String imei, String password, String newPassword); 32 | } 33 | 34 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/DeviceStatusService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.DeviceStatusEntity; 6 | 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * 12 | * 13 | * @author chenshun 14 | * @email sunlightcs@gmail.com 15 | * @date 2019-06-24 17:23:20 16 | */ 17 | public interface DeviceStatusService extends IService { 18 | 19 | void updateDeviceWithCache(DeviceStatusEntity deviceStatus, boolean upDb, boolean upCache); 20 | 21 | DeviceStatusEntity getDeviceWithCache(String imei); 22 | 23 | List selectByImei(List list); 24 | 25 | void checkOfflineDevice(); 26 | 27 | void removeByImei(String imei); 28 | } 29 | 30 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/EventsService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.EventsEntity; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-06-24 20:27:53 15 | */ 16 | public interface EventsService extends IService { 17 | 18 | MyPage queryPage(Map params); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/GeofenceService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.DeviceStatusEntity; 6 | import com.gps.db.entity.GeofenceEntity; 7 | import com.gps.common.model.Position; 8 | 9 | import com.gps.db.entityvo.GeofenceListVo; 10 | import java.util.List; 11 | import java.util.Map; 12 | 13 | /** 14 | * 15 | * 16 | * @author zb 17 | * @email zb@gmail.com 18 | * @date 2019-06-24 20:27:53 19 | */ 20 | public interface GeofenceService extends IService { 21 | 22 | MyPage queryPage(Map params); 23 | 24 | List getCurrentDeviceGeofences(Position position); 25 | 26 | List getGeofenceList(String companyId); 27 | 28 | int calculateDevicesGeofences(DeviceStatusEntity deviceStatus, Position position); 29 | } 30 | 31 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/GroupsService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.GroupsEntity; 6 | 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * 12 | * 13 | * @author zb 14 | * @email zb@gmail.com 15 | * @date 2019-06-24 20:27:53 16 | */ 17 | public interface GroupsService extends IService { 18 | 19 | MyPage queryPage(Map params); 20 | 21 | List listByUser(); 22 | } 23 | 24 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/Jt809DevPlatService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.Jt809DevPlatEntity; 6 | 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * 12 | * 13 | * @author zb 14 | * @email zb@gmail.com 15 | * @date 2019-06-26 09:26:45 16 | */ 17 | public interface Jt809DevPlatService extends IService { 18 | 19 | MyPage queryPage(Map params); 20 | List getGnssByImei(String imei); 21 | 22 | } 23 | 24 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/Jt809UserService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.gps.db.entity.Jt809UserEntity; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author zb 9 | * @email zb@gmail.com 10 | * @date 2019-06-26 09:26:45 11 | */ 12 | public interface Jt809UserService extends BaseIService { 13 | 14 | List getAllUpUsers(); 15 | } 16 | 17 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/PositionsService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.PositionsEntity; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-06-24 20:27:53 15 | */ 16 | public interface PositionsService extends IService { 17 | 18 | MyPage queryPage(Map params); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/ProductService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.ProductEntity; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * 11 | * 12 | * @author chenshun 13 | * @email sunlightcs@gmail.com 14 | * @date 2019-06-24 17:23:20 15 | */ 16 | public interface ProductService extends IService { 17 | 18 | MyPage queryPage(Map params); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/RiskPointService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.entity.RiskPointEntity; 5 | 6 | /** 7 | * @author qulong 8 | * @date 2020/2/3 14:21 9 | * @description 10 | */ 11 | public interface RiskPointService extends IService { 12 | } 13 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/UserDeviceService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.UserDeviceEntity; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * 11 | * 12 | * @author zb 13 | * @email zb@gmail.com 14 | * @date 2019-06-30 11:13:45 15 | */ 16 | public interface UserDeviceService extends IService { 17 | 18 | MyPage queryPage(Map params); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/UserGroupService.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.entity.UserGroupEntity; 6 | 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * 12 | * 13 | * @author zb 14 | * @email zb@gmail.com 15 | * @date 2019-06-30 11:13:45 16 | */ 17 | public interface UserGroupService extends IService { 18 | 19 | MyPage queryPage(Map params); 20 | 21 | void saveOrUpdate(Long userId, List gourpIdList); 22 | 23 | List queryGroupIdList(long userId); 24 | } 25 | 26 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/AlarmTypeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.gps.db.dbutils.MyQuery; 4 | import com.gps.db.dbutils.MyPage; 5 | import org.springframework.stereotype.Service; 6 | import java.util.Map; 7 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 8 | import com.baomidou.mybatisplus.core.metadata.IPage; 9 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 10 | 11 | import com.gps.db.dao.AlarmTypeDao; 12 | import com.gps.db.entity.AlarmTypeEntity; 13 | import com.gps.db.service.AlarmTypeService; 14 | 15 | 16 | @Service("alarmTypeService") 17 | public class AlarmTypeServiceImpl extends ServiceImpl implements AlarmTypeService { 18 | 19 | @Override 20 | public MyPage queryPage(Map params) { 21 | IPage page = this.page( 22 | MyQuery.getPage(params), 23 | new QueryWrapper() 24 | ); 25 | 26 | return MyPage.create(page); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/BaseServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.Wrapper; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import com.baomidou.mybatisplus.core.metadata.IPage; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import com.gps.db.dbutils.MyPage; 8 | import com.gps.db.dbutils.MyQuery; 9 | import com.gps.db.service.BaseIService; 10 | 11 | public class BaseServiceImpl, T> extends ServiceImpl implements BaseIService { 12 | 13 | public MyPage queryPage(Long pageNum, Long pageSize, String sort, String order, 14 | Wrapper queryWrapper) { 15 | IPage pageO = MyQuery.getPage(pageNum, pageSize, sort, order); 16 | IPage page = this.page(pageO, queryWrapper); 17 | return MyPage.create(page); 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/CommandServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.gps.db.dbutils.MyQuery; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.service.CommandService; 6 | import org.springframework.stereotype.Service; 7 | import java.util.Map; 8 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 9 | import com.baomidou.mybatisplus.core.metadata.IPage; 10 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 11 | 12 | import com.gps.db.dao.CommandDao; 13 | import com.gps.db.entity.CommandEntity; 14 | 15 | 16 | @Service("commandService") 17 | public class CommandServiceImpl extends ServiceImpl implements CommandService { 18 | 19 | @Override 20 | public MyPage queryPage(Map params) { 21 | IPage page = this.page( 22 | MyQuery.getPage(params), 23 | new QueryWrapper() 24 | ); 25 | 26 | return MyPage.create(page); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/CommandTypeMServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 6 | import com.gps.db.dao.CommandTypeMDao; 7 | import com.gps.db.dbutils.MyQuery; 8 | import com.gps.db.dbutils.MyPage; 9 | import com.gps.db.entity.CommandTypeMEntity; 10 | import com.gps.db.service.CommandTypeMService; 11 | import org.springframework.stereotype.Service; 12 | 13 | import java.util.Map; 14 | 15 | 16 | @Service("commandTypeMService") 17 | public class CommandTypeMServiceImpl extends ServiceImpl implements CommandTypeMService { 18 | 19 | @Override 20 | public MyPage queryPage(Map params) { 21 | IPage page = this.page( 22 | MyQuery.getPage(params), 23 | new QueryWrapper() 24 | ); 25 | 26 | return MyPage.create(page); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/DeviceGeofenceServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.gps.db.dbutils.MyQuery; 4 | import com.gps.db.dbutils.MyPage; 5 | import org.springframework.stereotype.Service; 6 | import java.util.Map; 7 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 8 | import com.baomidou.mybatisplus.core.metadata.IPage; 9 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 10 | 11 | import com.gps.db.dao.DeviceGeofenceDao; 12 | import com.gps.db.entity.DeviceGeofenceEntity; 13 | import com.gps.db.service.DeviceGeofenceService; 14 | 15 | 16 | @Service("deviceGeofenceService") 17 | public class DeviceGeofenceServiceImpl extends ServiceImpl implements DeviceGeofenceService { 18 | 19 | @Override 20 | public MyPage queryPage(Map params) { 21 | IPage page = this.page( 22 | MyQuery.getPage(params), 23 | new QueryWrapper() 24 | ); 25 | 26 | return MyPage.create(page); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/EventsServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.gps.db.dbutils.MyQuery; 4 | import com.gps.db.dbutils.MyPage; 5 | import org.springframework.stereotype.Service; 6 | import java.util.Map; 7 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 8 | import com.baomidou.mybatisplus.core.metadata.IPage; 9 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 10 | 11 | import com.gps.db.dao.EventsDao; 12 | import com.gps.db.entity.EventsEntity; 13 | import com.gps.db.service.EventsService; 14 | 15 | 16 | @Service("eventsService") 17 | public class EventsServiceImpl extends ServiceImpl implements EventsService { 18 | 19 | @Override 20 | public MyPage queryPage(Map params) { 21 | IPage page = this.page( 22 | MyQuery.getPage(params), 23 | new QueryWrapper() 24 | ); 25 | 26 | return MyPage.create(page); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/GroupsServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.gps.db.dbutils.MyQuery; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.service.GroupsService; 6 | import org.springframework.stereotype.Service; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 11 | import com.baomidou.mybatisplus.core.metadata.IPage; 12 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 13 | 14 | import com.gps.db.dao.GroupsDao; 15 | import com.gps.db.entity.GroupsEntity; 16 | 17 | 18 | @Service("groupsService") 19 | public class GroupsServiceImpl extends ServiceImpl implements GroupsService { 20 | 21 | @Override 22 | public MyPage queryPage(Map params) { 23 | IPage page = this.page( 24 | MyQuery.getPage(params), 25 | new QueryWrapper() 26 | ); 27 | 28 | return MyPage.create(page); 29 | } 30 | 31 | @Override 32 | public List listByUser() { 33 | return baseMapper.listByUser(); 34 | } 35 | 36 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/Jt809DevPlatServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.core.metadata.IPage; 5 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 6 | import com.gps.db.dao.Jt809DevPlatDao; 7 | import com.gps.db.dbutils.MyPage; 8 | import com.gps.db.dbutils.MyQuery; 9 | import com.gps.db.entity.Jt809DevPlatEntity; 10 | import com.gps.db.service.Jt809DevPlatService; 11 | import org.springframework.stereotype.Service; 12 | 13 | import java.util.List; 14 | import java.util.Map; 15 | 16 | 17 | @Service("jt809DevPlatService") 18 | public class Jt809DevPlatServiceImpl extends ServiceImpl implements Jt809DevPlatService { 19 | 20 | @Override 21 | public MyPage queryPage(Map params) { 22 | IPage page = this.page( 23 | MyQuery.getPage(params), 24 | new QueryWrapper<>() 25 | ); 26 | 27 | return MyPage.create(page); 28 | } 29 | 30 | @Override 31 | public List getGnssByImei(String imei) { 32 | return baseMapper.getGnssByImei(imei); 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/Jt809UserServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.gps.db.dao.Jt809UserDao; 4 | import com.gps.db.entity.Jt809UserEntity; 5 | import com.gps.db.service.Jt809UserService; 6 | import org.springframework.stereotype.Service; 7 | 8 | import java.util.List; 9 | 10 | @Service("jt809UserService") 11 | public class Jt809UserServiceImpl extends BaseServiceImpl implements Jt809UserService { 12 | 13 | public List getAllUpUsers() { 14 | return baseMapper.findAllUpUsers(); 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/PositionsServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.gps.db.dbutils.MyQuery; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.service.PositionsService; 6 | import org.springframework.stereotype.Service; 7 | import java.util.Map; 8 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 9 | import com.baomidou.mybatisplus.core.metadata.IPage; 10 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 11 | 12 | import com.gps.db.dao.PositionsDao; 13 | import com.gps.db.entity.PositionsEntity; 14 | 15 | 16 | @Service("positionsService") 17 | public class PositionsServiceImpl extends ServiceImpl implements PositionsService { 18 | 19 | @Override 20 | public MyPage queryPage(Map params) { 21 | IPage page = this.page( 22 | MyQuery.getPage(params), 23 | new QueryWrapper() 24 | ); 25 | 26 | return MyPage.create(page); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/ProductServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.gps.db.dao.ProductDao; 4 | import com.gps.db.dbutils.MyQuery; 5 | import com.gps.db.dbutils.MyPage; 6 | import com.gps.db.entity.ProductEntity; 7 | import com.gps.db.service.ProductService; 8 | import org.springframework.stereotype.Service; 9 | import java.util.Map; 10 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 11 | import com.baomidou.mybatisplus.core.metadata.IPage; 12 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 13 | 14 | 15 | @Service("productService") 16 | public class ProductServiceImpl extends ServiceImpl implements ProductService { 17 | 18 | @Override 19 | public MyPage queryPage(Map params) { 20 | IPage page = this.page( 21 | MyQuery.getPage(params), 22 | new QueryWrapper() 23 | ); 24 | 25 | return MyPage.create(page); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/RiskPointServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 4 | import com.gps.db.dao.RiskPointDao; 5 | import com.gps.db.entity.RiskPointEntity; 6 | import com.gps.db.service.RiskPointService; 7 | 8 | /** 9 | * @author qulong 10 | * @date 2020/2/3 14:22 11 | * @description 12 | */ 13 | public class RiskPointServiceImpl extends ServiceImpl implements RiskPointService { 14 | } 15 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/service/impl/UserDeviceServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.service.impl; 2 | 3 | import com.gps.db.dbutils.MyQuery; 4 | import com.gps.db.dbutils.MyPage; 5 | import com.gps.db.service.UserDeviceService; 6 | import org.springframework.stereotype.Service; 7 | import java.util.Map; 8 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 9 | import com.baomidou.mybatisplus.core.metadata.IPage; 10 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 11 | 12 | import com.gps.db.dao.UserDeviceDao; 13 | import com.gps.db.entity.UserDeviceEntity; 14 | 15 | 16 | @Service("userDeviceService") 17 | public class UserDeviceServiceImpl extends ServiceImpl implements UserDeviceService { 18 | 19 | @Override 20 | public MyPage queryPage(Map params) { 21 | IPage page = this.page( 22 | MyQuery.getPage(params), 23 | new QueryWrapper() 24 | ); 25 | 26 | return MyPage.create(page); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/utils/AttrUtil.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.utils; 2 | 3 | import java.util.Map; 4 | 5 | public class AttrUtil { 6 | 7 | public static double getDouble(Map attributes, String key) { 8 | if (attributes == null) { 9 | return 0.0; 10 | } 11 | if (attributes.containsKey(key)) { 12 | return ((Number) attributes.get(key)).doubleValue(); 13 | } else { 14 | return 0.0; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/utils/GeofenceUtil.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.utils; 2 | 3 | import com.gps.db.entity.GeofenceEntity; 4 | import com.gps.common.model.Geofence; 5 | 6 | import java.text.ParseException; 7 | 8 | public class GeofenceUtil { 9 | 10 | public static Geofence fromEntityGeofence(GeofenceEntity g) { 11 | Geofence geofence = new Geofence(); 12 | try { 13 | geofence.setArea(g.getArea()); 14 | } catch (ParseException e) { 15 | e.printStackTrace(); 16 | } 17 | geofence.setName(g.getName()); 18 | geofence.setDescription(g.getDescription()); 19 | // geofence.setImei(g.getId()); 20 | return geofence; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/utils/MapUtils.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.db.utils; 3 | 4 | import java.util.HashMap; 5 | 6 | 7 | /** 8 | * Map工具类 9 | * 10 | * @author Mark sunlightcs@gmail.com 11 | */ 12 | public class MapUtils extends HashMap { 13 | 14 | @Override 15 | public MapUtils put(String key, Object value) { 16 | super.put(key, value); 17 | return this; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gps-db/src/main/java/com/gps/db/utils/SnowFlakeFactory.java: -------------------------------------------------------------------------------- 1 | package com.gps.db.utils; 2 | 3 | import java.util.Objects; 4 | 5 | /** 6 | * @author qulong 7 | * @date 2019/10/14 17:50 8 | * @description 9 | */ 10 | public class SnowFlakeFactory { 11 | 12 | private static SnowFlake snowFlake; 13 | 14 | 15 | public static SnowFlake getSnowFlake() { 16 | if (Objects.isNull(snowFlake)) { 17 | snowFlake = new SnowFlake(1, 1); 18 | return snowFlake; 19 | } 20 | return snowFlake; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/AlarmDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 12 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/AlarmTypeDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/CommandDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/CommandTypeDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/CommandTypeMDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/DeviceGeofenceDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/DeviceRecDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 21 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/EventsDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/GroupsDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/Jt809DevPlatDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/PositionsDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/ProductDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/RiskPointDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/UserDeviceDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /gps-db/src/main/resources/mapper/UserGroupDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /gps-engine/build.gradle: -------------------------------------------------------------------------------- 1 | //group = 'com.gps180' 2 | description = '' 3 | dependencies { 4 | compile project(':gps-db') 5 | 6 | compile 'org.springframework.boot:spring-boot-starter-jdbc' 7 | compile 'org.springframework.boot:spring-boot-starter-data-redis' 8 | 9 | compile 'org.springframework.kafka:spring-kafka' 10 | 11 | compile "com.alibaba:druid-spring-boot-starter:${druidBootStarterVersion}" 12 | compile "mysql:mysql-connector-java:${mysqlConnectorVersion}" 13 | compile 'org.apache.commons:commons-lang3:3.9' 14 | compile "com.alibaba:fastjson:${fastjsonVersion}" 15 | compile 'org.apache.httpcomponents:httpcore:4.4.12' 16 | compile 'org.apache.httpcomponents:httpclient:4.5.10' 17 | compile 'javax.servlet:javax.servlet-api:4.0.1' 18 | 19 | testCompile('org.springframework.boot:spring-boot-starter-test') { 20 | exclude(module: 'commons-logging') 21 | } 22 | testCompile 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:2.1.0' 23 | } 24 | -------------------------------------------------------------------------------- /gps-engine/src/main/java/com/gps/engine/EventSender.java: -------------------------------------------------------------------------------- 1 | package com.gps.engine; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.gps.common.Constants; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.kafka.core.KafkaTemplate; 7 | import org.springframework.stereotype.Component; 8 | 9 | @Component 10 | public class EventSender { 11 | 12 | @Autowired 13 | private KafkaTemplate kafkaTemplate; 14 | 15 | public void sendEvent(String key, Object obj) { 16 | sendByKafka(key, obj); 17 | } 18 | 19 | private void sendByKafka(String key, Object obj) { 20 | try { 21 | kafkaTemplate.send(Constants.NOTIFYUI_TOPIC, key, JSONObject.toJSONString(obj)); 22 | } catch (Exception e) { 23 | e.printStackTrace(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /gps-engine/src/main/java/com/gps/engine/GpsEngineApplication.java: -------------------------------------------------------------------------------- 1 | package com.gps.engine; 2 | 3 | import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; 4 | import com.gps.db.config.DruidConfiguration; 5 | import org.mybatis.spring.annotation.MapperScan; 6 | import org.springframework.boot.WebApplicationType; 7 | import org.springframework.boot.autoconfigure.SpringBootApplication; 8 | import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; 9 | import org.springframework.boot.builder.SpringApplicationBuilder; 10 | 11 | @SpringBootApplication(scanBasePackages = { 12 | "com.gps.engine", 13 | "com.gps.db" 14 | }, exclude = { 15 | // DruidDataSourceAutoConfigure.class, 16 | // KafkaAutoConfiguration.class 17 | }) 18 | @MapperScan("com.gps.db.dao") 19 | public class GpsEngineApplication { 20 | public static void main(String[] args) { 21 | new SpringApplicationBuilder(GpsEngineApplication.class) 22 | .web(WebApplicationType.NONE) 23 | .run(args); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /gps-engine/src/main/java/com/gps/engine/config/MybatisPlusConfig.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.engine.config; 3 | 4 | import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector; 5 | import com.baomidou.mybatisplus.core.injector.ISqlInjector; 6 | import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; 7 | //import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor; 8 | import org.springframework.context.annotation.Bean; 9 | import org.springframework.context.annotation.Configuration; 10 | 11 | /** 12 | * mybatis-plus配置 13 | * 14 | * @author Mark sunlightcs@gmail.com 15 | */ 16 | @Configuration 17 | public class MybatisPlusConfig { 18 | 19 | /** 20 | * 分页插件 21 | */ 22 | @Bean 23 | public PaginationInterceptor paginationInterceptor() { 24 | return new PaginationInterceptor(); 25 | } 26 | 27 | /** 28 | * 逻辑删除 29 | * 30 | * @return 31 | */ 32 | @Bean 33 | public ISqlInjector sqlInjector() { 34 | return new DefaultSqlInjector(); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /gps-engine/src/main/java/com/gps/engine/listener/EngineMessageListener.java: -------------------------------------------------------------------------------- 1 | package com.gps.engine.listener; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | 5 | import com.gps.common.Constants; 6 | import com.gps.engine.TrackerServer; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.apache.kafka.clients.consumer.ConsumerRecord; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.kafka.annotation.KafkaListener; 11 | import org.springframework.stereotype.Component; 12 | import com.gps.common.model.BaseModel; 13 | 14 | @Slf4j 15 | @Component 16 | public class EngineMessageListener { 17 | 18 | @Autowired 19 | private TrackerServer server; 20 | 21 | @KafkaListener(topics = {"${kafka.consumer.topic}"}) 22 | public void kafkaListener(ConsumerRecord record) { 23 | try { 24 | String recordKey = record.key().toString(); 25 | if (Constants.POS_KEY.equals(recordKey)) { 26 | BaseModel baseModel = JSONObject.parseObject(record.value().toString(), BaseModel.class); 27 | server.postData(baseModel); 28 | } 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /gps-gate/build.gradle: -------------------------------------------------------------------------------- 1 | description = '' 2 | 3 | dependencies { 4 | compile project(':gps-common') 5 | compile ('org.springframework.boot:spring-boot-starter-web') { 6 | exclude(module: 'spring-boot-starter-logging') 7 | exclude(module: 'spring-boot-starter-tomcat') 8 | } 9 | compile 'org.springframework.boot:spring-boot-starter-jetty' 10 | 11 | compile 'org.springframework.boot:spring-boot-starter-data-redis' 12 | compile 'org.apache.commons:commons-pool2:2.6.2' 13 | 14 | compile 'org.springframework.kafka:spring-kafka' 15 | compile "com.google.guava:guava:${guavaVersion}" 16 | 17 | compile 'org.apache.commons:commons-lang3:3.9' 18 | compile "com.alibaba:fastjson:${fastjsonVersion}" 19 | 20 | compile "io.netty:netty-all:${nettyVersion}" 21 | compile 'commons-codec:commons-codec:1.12' 22 | testCompile('org.springframework.boot:spring-boot-starter-test') { 23 | exclude(module: 'spring-boot-starter-logging') 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /gps-gate/src/main/java/com/gps/gate/AppApplicationListener.java: -------------------------------------------------------------------------------- 1 | package com.gps.gate; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.boot.context.event.ApplicationReadyEvent; 6 | import org.springframework.context.ApplicationEvent; 7 | import org.springframework.context.ApplicationListener; 8 | import org.springframework.context.event.ContextClosedEvent; 9 | 10 | @Slf4j 11 | public class AppApplicationListener implements ApplicationListener { 12 | 13 | @Autowired 14 | private TCPServer tcpServer; 15 | 16 | @Override 17 | public void onApplicationEvent(ApplicationEvent event) { 18 | if (event instanceof ContextClosedEvent) { 19 | log.info("================:{}", "ContextClosedEvent"); 20 | tcpServer.stopServer(); 21 | } 22 | if (event instanceof ApplicationReadyEvent) { 23 | log.info("================:{}", "ApplicationReadyEvent"); 24 | tcpServer.startServer(); 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /gps-gate/src/main/java/com/gps/gate/BaseHttpProtocolDecoder.java: -------------------------------------------------------------------------------- 1 | package com.gps.gate; 2 | 3 | import io.netty.channel.Channel; 4 | import io.netty.handler.codec.http.DefaultFullHttpResponse; 5 | import io.netty.handler.codec.http.HttpHeaderNames; 6 | import io.netty.handler.codec.http.HttpResponse; 7 | import io.netty.handler.codec.http.HttpResponseStatus; 8 | import io.netty.handler.codec.http.HttpVersion; 9 | 10 | public abstract class BaseHttpProtocolDecoder extends BaseProtocolDecoder { 11 | 12 | public BaseHttpProtocolDecoder(Protocol protocol) { 13 | super(protocol); 14 | } 15 | 16 | public void sendResponse(Channel channel, HttpResponseStatus status) { 17 | if (channel != null) { 18 | HttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status); 19 | response.headers().add(HttpHeaderNames.CONTENT_LENGTH, 0); 20 | channel.writeAndFlush(new NetworkMessage(response, channel.remoteAddress())); 21 | } 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /gps-gate/src/main/java/com/gps/gate/BaseProtocol.java: -------------------------------------------------------------------------------- 1 | package com.gps.gate; 2 | 3 | import java.util.Collection; 4 | import java.util.LinkedList; 5 | import java.util.List; 6 | 7 | public abstract class BaseProtocol implements Protocol { 8 | 9 | private final String name; 10 | protected int port; 11 | private final List serverList = new LinkedList<>(); 12 | 13 | public static String nameFromClass(Class clazz) { 14 | String className = clazz.getSimpleName(); 15 | return className.substring(0, className.length() - 8).toLowerCase(); 16 | } 17 | 18 | public BaseProtocol() { 19 | name = nameFromClass(getClass()); 20 | } 21 | 22 | @Override 23 | public String getName() { 24 | return name; 25 | } 26 | 27 | @Override 28 | public int getPort() { 29 | return port; 30 | } 31 | 32 | protected void addServer(TrackerServer server) { 33 | serverList.add(server); 34 | } 35 | 36 | @Override 37 | public Collection getServerList() { 38 | return serverList; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /gps-gate/src/main/java/com/gps/gate/BaseProtocolEncoder.java: -------------------------------------------------------------------------------- 1 | package com.gps.gate; 2 | 3 | import com.gps.common.model.Command; 4 | import io.netty.channel.Channel; 5 | import io.netty.channel.ChannelHandlerContext; 6 | import io.netty.channel.ChannelOutboundHandlerAdapter; 7 | import io.netty.channel.ChannelPromise; 8 | 9 | public abstract class BaseProtocolEncoder extends ChannelOutboundHandlerAdapter { 10 | 11 | @Override 12 | public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { 13 | NetworkMessage networkMessage = (NetworkMessage) msg; 14 | if (networkMessage.getMessage() instanceof Command) { 15 | Command command = (Command) networkMessage.getMessage(); 16 | Object encodedCommand = encodeCommand(ctx.channel(), command); 17 | ctx.write(new NetworkMessage(encodedCommand, networkMessage.getRemoteAddress()), promise); 18 | } else { 19 | super.write(ctx, msg, promise); 20 | } 21 | } 22 | 23 | protected Object encodeCommand(Channel channel, Command command) { 24 | return encodeCommand(command); 25 | } 26 | 27 | protected Object encodeCommand(Command command) { 28 | return null; 29 | } 30 | 31 | } 32 | 33 | -------------------------------------------------------------------------------- /gps-gate/src/main/java/com/gps/gate/EventLoopGroupFactory.java: -------------------------------------------------------------------------------- 1 | package com.gps.gate; 2 | 3 | import io.netty.channel.EventLoopGroup; 4 | import io.netty.channel.nio.NioEventLoopGroup; 5 | 6 | public final class EventLoopGroupFactory { 7 | 8 | private static EventLoopGroup bossGroup = new NioEventLoopGroup(); 9 | private static EventLoopGroup workerGroup = new NioEventLoopGroup(); 10 | 11 | private EventLoopGroupFactory() { 12 | } 13 | 14 | public static EventLoopGroup getBossGroup() { 15 | return bossGroup; 16 | } 17 | 18 | public static EventLoopGroup getWorkerGroup() { 19 | return workerGroup; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /gps-gate/src/main/java/com/gps/gate/GpsGateApplication.java: -------------------------------------------------------------------------------- 1 | package com.gps.gate; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.context.annotation.Bean; 7 | 8 | @Slf4j 9 | @SpringBootApplication 10 | public class GpsGateApplication { 11 | 12 | public static void main(String[] args) { 13 | SpringApplication.run(GpsGateApplication.class, args); 14 | log.info("***启动成功***"); 15 | } 16 | 17 | @Bean 18 | public AppApplicationListener appApplicationListener() { 19 | return new AppApplicationListener(); 20 | } 21 | } -------------------------------------------------------------------------------- /gps-gate/src/main/java/com/gps/gate/NetworkMessage.java: -------------------------------------------------------------------------------- 1 | package com.gps.gate; 2 | 3 | 4 | import java.net.SocketAddress; 5 | 6 | public class NetworkMessage { 7 | 8 | private final SocketAddress remoteAddress; 9 | private final Object message; 10 | 11 | public NetworkMessage(Object message, SocketAddress remoteAddress) { 12 | this.message = message; 13 | this.remoteAddress = remoteAddress; 14 | } 15 | 16 | public SocketAddress getRemoteAddress() { 17 | return remoteAddress; 18 | } 19 | 20 | public Object getMessage() { 21 | return message; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /gps-gate/src/main/java/com/gps/gate/PipelineBuilder.java: -------------------------------------------------------------------------------- 1 | package com.gps.gate; 2 | 3 | 4 | import io.netty.channel.ChannelHandler; 5 | 6 | public interface PipelineBuilder { 7 | 8 | void addLast(ChannelHandler handler); 9 | 10 | } -------------------------------------------------------------------------------- /gps-gate/src/main/java/com/gps/gate/Protocol.java: -------------------------------------------------------------------------------- 1 | package com.gps.gate; 2 | 3 | 4 | import java.util.Collection; 5 | 6 | public interface Protocol { 7 | 8 | String getName(); 9 | int getPort(); 10 | Collection getServerList(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gps-gate/src/main/java/com/gps/gate/protocol/TestProtocol.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.gate.protocol; 3 | 4 | import com.gps.gate.BaseProtocol; 5 | import com.gps.gate.PipelineBuilder; 6 | import com.gps.gate.TrackerServer; 7 | import io.netty.handler.codec.http.HttpObjectAggregator; 8 | import io.netty.handler.codec.http.HttpRequestDecoder; 9 | import io.netty.handler.codec.http.HttpResponseEncoder; 10 | 11 | public class TestProtocol extends BaseProtocol { 12 | 13 | public TestProtocol() { 14 | port = 6868; 15 | addServer(new TrackerServer(false, getName(), getPort()) { 16 | @Override 17 | protected void addProtocolHandlers(PipelineBuilder pipeline) { 18 | pipeline.addLast(new HttpResponseEncoder()); 19 | pipeline.addLast(new HttpRequestDecoder()); 20 | pipeline.addLast(new HttpObjectAggregator(16384)); 21 | pipeline.addLast(new TestProtocolDecoder(TestProtocol.this)); 22 | } 23 | }); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /gps-gate/src/main/resources/application-dev.yml: -------------------------------------------------------------------------------- 1 | 2 | spring: 3 | redis-gps: 4 | database: 2 5 | host: ${REDIS_HOST:192.168.1.187} 6 | port: ${REDIS_PORT:6379} 7 | password: ${REDIS_PWD:} 8 | timeout: 6000ms # 连接超时时长(毫秒) 9 | lettuce: 10 | pool: 11 | max-idle: 512 #连接池中的最大空闲连接 12 | min-idle: 0 #连接池中的最小空闲连接 13 | max-active: 20 #连接池最大连接数(使用负值表示没有限制) 14 | max-wait: -1 #连接池最大阻塞等待时间(使用负值表示没有限制) 15 | -------------------------------------------------------------------------------- /gps-gate/src/main/resources/application-prod.yml: -------------------------------------------------------------------------------- 1 | 2 | spring: 3 | redis-gps: 4 | database: 2 5 | host: ${REDIS_HOST:192.168.1.187} 6 | port: ${REDIS_PORT:6379} 7 | password: ${REDIS_PWD:} 8 | timeout: 6000ms # 连接超时时长(毫秒) 9 | lettuce: 10 | pool: 11 | max-idle: 512 #连接池中的最大空闲连接 12 | min-idle: 0 #连接池中的最小空闲连接 13 | max-active: 20 #连接池最大连接数(使用负值表示没有限制) 14 | max-wait: -1 #连接池最大阻塞等待时间(使用负值表示没有限制) 15 | -------------------------------------------------------------------------------- /gps-gate/src/main/resources/application-test.yml: -------------------------------------------------------------------------------- 1 | 2 | spring: 3 | redis-gps: 4 | database: 2 5 | host: ${REDIS_HOST:} 6 | port: ${REDIS_PORT:6379} 7 | password: ${REDIS_PWD:} 8 | timeout: 6000ms # 连接超时时长(毫秒) 9 | lettuce: 10 | pool: 11 | max-idle: 512 #连接池中的最大空闲连接 12 | min-idle: 0 #连接池中的最小空闲连接 13 | max-active: 20 #连接池最大连接数(使用负值表示没有限制) 14 | max-wait: -1 #连接池最大阻塞等待时间(使用负值表示没有限制) 15 | -------------------------------------------------------------------------------- /gps-gate/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8086 3 | tomcat: 4 | uri-encoding: UTF-8 5 | max-threads: 1000 6 | min-spare-threads: 30 7 | servlet: 8 | context-path: /gate 9 | 10 | spring: 11 | profiles: 12 | active: dev 13 | application: 14 | name: gps-gate 15 | jackson: 16 | date-format: yyyy-MM-dd HH:mm:ss 17 | time-zone: GMT+8 18 | default-property-inclusion: non_null 19 | 20 | 21 | #logging: 22 | # level: 23 | # root: debug 24 | 25 | #配置KAFKA 26 | #============== kafka =================== 27 | kafka: 28 | consumer: 29 | servers: 192.168.1.187:9092 30 | enable: 31 | auto: 32 | commit: true 33 | session: 34 | timeout: 6000 35 | auto: 36 | commit: 37 | interval: 100 38 | offset: 39 | reset: latest 40 | topic: commands #消费的topic 41 | group: 42 | id: ${KAFKA_GROUP:consumerForCommand} 43 | concurrency: 10 #设置消费线程数 44 | producer: 45 | servers: 192.168.1.187:9092 46 | security: 47 | protocol: PLAINTEXT 48 | retries: 0 49 | batch: 50 | size: 40960 #4096 51 | linger: 5 #1 52 | buffer: 53 | memory: 4096000 #40960 54 | 55 | gate: 56 | tcpPort: 6868 57 | udpPort: 6868 58 | 59 | 60 | -------------------------------------------------------------------------------- /gps-gbt32960/build.gradle: -------------------------------------------------------------------------------- 1 | jar.enabled = true 2 | bootJar.enabled = false 3 | 4 | dependencies { 5 | compile project(':gps-common') 6 | compile "io.netty:netty-all:${nettyVersion}" 7 | 8 | // compile 'com.google.protobuf:protobuf-java:3.6.1' 9 | // compile 'commons-io:commons-io:2.5' 10 | // compile 'commons-codec:commons-codec:1.12' 11 | compile "com.google.guava:guava:${guavaVersion}" 12 | } 13 | -------------------------------------------------------------------------------- /gps-generator/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | group = 'com.gps180' 3 | version = '1.0.0' 4 | sourceCompatibility = '1.8' 5 | 6 | dependencies { 7 | compile 'org.springframework.boot:spring-boot-starter-web' 8 | 9 | compile 'org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0' 10 | compile 'com.github.pagehelper:pagehelper-spring-boot-starter:1.2.5' 11 | compile 'com.alibaba:druid:1.0.28' 12 | compile 'commons-lang:commons-lang:2.6' 13 | compile 'commons-io:commons-io:2.5' 14 | compile 'commons-configuration:commons-configuration:1.10' 15 | compile "com.alibaba:fastjson:${fastjsonVersion}" 16 | compile 'org.apache.velocity:velocity:1.7' 17 | compile "mysql:mysql-connector-java:${mysqlConnectorVersion}" 18 | // compile 'com.oracle:ojdbc6:11.2.0.3' 19 | // compile 'com.microsoft.sqlserver:sqljdbc4:4.0' 20 | // compile 'org.postgresql:postgresql:42.2.5' 21 | } 22 | 23 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/GpsGeneratorApplication.java: -------------------------------------------------------------------------------- 1 | package com.gps.generator; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | 7 | @SpringBootApplication 8 | @MapperScan("com.gps.generator.dao") 9 | public class GpsGeneratorApplication { 10 | 11 | public static void main(String[] args) { 12 | SpringApplication.run(GpsGeneratorApplication.class, args); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/dao/GeneratorDao.java: -------------------------------------------------------------------------------- 1 | 2 | package com.gps.generator.dao; 3 | 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | /** 8 | * 数据库接口 9 | * 10 | * @author Mark sunlightcs@gmail.com 11 | * @since 2018-07-24 12 | */ 13 | public interface GeneratorDao { 14 | List> queryList(Map map); 15 | 16 | Map queryTable(String tableName); 17 | 18 | List> queryColumns(String tableName); 19 | } 20 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/dao/MySQLGeneratorDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.generator.dao; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | 5 | 6 | /** 7 | * MySQL代码生成器 8 | * 9 | * @author Mark sunlightcs@gmail.com 10 | * @since 2018-07-24 11 | */ 12 | @Mapper 13 | public interface MySQLGeneratorDao extends GeneratorDao { 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/dao/OracleGeneratorDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.generator.dao; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | 5 | /** 6 | * Oracle代码生成器 7 | * 8 | * @author Mark sunlightcs@gmail.com 9 | * @since 2018-07-24 10 | */ 11 | @Mapper 12 | public interface OracleGeneratorDao extends GeneratorDao { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/dao/PostgreSQLGeneratorDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.generator.dao; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | 5 | /** 6 | * PostgreSQL代码生成器 7 | * 8 | * @author Mark sunlightcs@gmail.com 9 | * @since 2018-07-24 10 | */ 11 | @Mapper 12 | public interface PostgreSQLGeneratorDao extends GeneratorDao { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/dao/SQLServerGeneratorDao.java: -------------------------------------------------------------------------------- 1 | package com.gps.generator.dao; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | 5 | /** 6 | * SQLServer代码生成器 7 | * 8 | * @author Mark sunlightcs@gmail.com 9 | * @since 2018-07-24 10 | */ 11 | @Mapper 12 | public interface SQLServerGeneratorDao extends GeneratorDao { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/utils/Constant.java: -------------------------------------------------------------------------------- 1 | package com.gps.generator.utils; 2 | 3 | /** 4 | * 常量 5 | * 6 | * @author chenshun 7 | * @email sunlightcs@gmail.com 8 | * @date 2016年11月15日 下午1:23:52 9 | */ 10 | public class Constant { 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/utils/DateUtils.java: -------------------------------------------------------------------------------- 1 | package com.gps.generator.utils; 2 | 3 | import java.text.SimpleDateFormat; 4 | import java.util.Date; 5 | 6 | /** 7 | * 日期处理 8 | * 9 | * @author chenshun 10 | * @email sunlightcs@gmail.com 11 | * @date 2016年12月21日 下午12:53:33 12 | */ 13 | public class DateUtils { 14 | /** 时间格式(yyyy-MM-dd) */ 15 | public final static String DATE_PATTERN = "yyyy-MM-dd"; 16 | /** 时间格式(yyyy-MM-dd HH:mm:ss) */ 17 | public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; 18 | 19 | public static String format(Date date) { 20 | return format(date, DATE_PATTERN); 21 | } 22 | 23 | public static String format(Date date, String pattern) { 24 | if(date != null){ 25 | SimpleDateFormat df = new SimpleDateFormat(pattern); 26 | return df.format(date); 27 | } 28 | return null; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/utils/PageUtils.java: -------------------------------------------------------------------------------- 1 | package com.gps.generator.utils; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | import java.util.List; 7 | 8 | /** 9 | * 分页工具类 10 | * 11 | * @author chenshun 12 | * @email sunlightcs@gmail.com 13 | * @date 2016年11月4日 下午12:59:00 14 | */ 15 | @Data 16 | public class PageUtils implements Serializable { 17 | private static final long serialVersionUID = 1L; 18 | //总记录数 19 | private int totalCount; 20 | //每页记录数 21 | private int pageSize; 22 | //总页数 23 | private int totalPage; 24 | //当前页数 25 | private int currPage; 26 | //列表数据 27 | private List list; 28 | 29 | /** 30 | * 分页 31 | * @param list 列表数据 32 | * @param totalCount 总记录数 33 | * @param pageSize 每页记录数 34 | * @param currPage 当前页数 35 | */ 36 | public PageUtils(List list, int totalCount, int pageSize, int currPage) { 37 | this.list = list; 38 | this.totalCount = totalCount; 39 | this.pageSize = pageSize; 40 | this.currPage = currPage; 41 | this.totalPage = (int)Math.ceil((double)totalCount/pageSize); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/utils/Query.java: -------------------------------------------------------------------------------- 1 | package com.gps.generator.utils; 2 | 3 | 4 | import java.util.LinkedHashMap; 5 | import java.util.Map; 6 | 7 | /** 8 | * 查询参数 9 | * 10 | * @author chenshun 11 | * @email sunlightcs@gmail.com 12 | * @date 2017-03-14 23:15 13 | */ 14 | public class Query extends LinkedHashMap { 15 | private static final long serialVersionUID = 1L; 16 | //当前页码 17 | private int page; 18 | //每页条数 19 | private int limit; 20 | 21 | public Query(Map params){ 22 | this.putAll(params); 23 | 24 | //分页参数 25 | this.page = Integer.parseInt(params.get("page").toString()); 26 | this.limit = Integer.parseInt(params.get("limit").toString()); 27 | this.put("offset", (page - 1) * limit); 28 | this.put("page", page); 29 | this.put("limit", limit); 30 | } 31 | 32 | 33 | public int getPage() { 34 | return page; 35 | } 36 | 37 | public void setPage(int page) { 38 | this.page = page; 39 | } 40 | 41 | public int getLimit() { 42 | return limit; 43 | } 44 | 45 | public void setLimit(int limit) { 46 | this.limit = limit; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/utils/R.java: -------------------------------------------------------------------------------- 1 | package com.gps.generator.utils; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * 返回数据 8 | * 9 | * @author chenshun 10 | * @email sunlightcs@gmail.com 11 | * @date 2016年10月27日 下午9:59:27 12 | */ 13 | public class R extends HashMap { 14 | private static final long serialVersionUID = 1L; 15 | 16 | public R() { 17 | put("code", 0); 18 | } 19 | 20 | public static R error() { 21 | return error(500, "未知异常,请联系管理员"); 22 | } 23 | 24 | public static R error(String msg) { 25 | return error(500, msg); 26 | } 27 | 28 | public static R error(int code, String msg) { 29 | R r = new R(); 30 | r.put("code", code); 31 | r.put("msg", msg); 32 | return r; 33 | } 34 | 35 | public static R ok(String msg) { 36 | R r = new R(); 37 | r.put("msg", msg); 38 | return r; 39 | } 40 | 41 | public static R ok(Map map) { 42 | R r = new R(); 43 | r.putAll(map); 44 | return r; 45 | } 46 | 47 | public static R ok() { 48 | return new R(); 49 | } 50 | 51 | public R put(String key, Object value) { 52 | super.put(key, value); 53 | return this; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /gps-generator/src/main/java/com/gps/generator/utils/RRException.java: -------------------------------------------------------------------------------- 1 | package com.gps.generator.utils; 2 | 3 | /** 4 | * 自定义异常 5 | * 6 | * @author chenshun 7 | * @email sunlightcs@gmail.com 8 | * @date 2016年10月27日 下午10:11:27 9 | */ 10 | public class RRException extends RuntimeException { 11 | private static final long serialVersionUID = 1L; 12 | 13 | private String msg; 14 | private int code = 500; 15 | 16 | public RRException(String msg) { 17 | super(msg); 18 | this.msg = msg; 19 | } 20 | 21 | public RRException(String msg, Throwable e) { 22 | super(msg, e); 23 | this.msg = msg; 24 | } 25 | 26 | public RRException(String msg, int code) { 27 | super(msg); 28 | this.msg = msg; 29 | this.code = code; 30 | } 31 | 32 | public RRException(String msg, int code, Throwable e) { 33 | super(msg, e); 34 | this.msg = msg; 35 | this.code = code; 36 | } 37 | 38 | public String getMsg() { 39 | return msg; 40 | } 41 | 42 | public void setMsg(String msg) { 43 | this.msg = msg; 44 | } 45 | 46 | public int getCode() { 47 | return code; 48 | } 49 | 50 | public void setCode(int code) { 51 | this.code = code; 52 | } 53 | 54 | 55 | } 56 | -------------------------------------------------------------------------------- /gps-generator/src/main/resources/mapper/MySQLGeneratorDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 13 | 14 | 18 | 19 | 23 | -------------------------------------------------------------------------------- /gps-generator/src/main/resources/template/Dao.java.vm: -------------------------------------------------------------------------------- 1 | package ${package}.${moduleName}.dao; 2 | 3 | import ${package}.${moduleName}.entity.${className}Entity; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | * ${comments} 9 | * 10 | * @author ${author} 11 | * @email ${email} 12 | * @date ${datetime} 13 | */ 14 | @Mapper 15 | public interface ${className}Dao extends BaseMapper<${className}Entity> { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gps-generator/src/main/resources/template/Dao.xml.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | #foreach($column in $columns) 9 | 10 | #end 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /gps-generator/src/main/resources/template/Entity.java.vm: -------------------------------------------------------------------------------- 1 | package ${package}.${moduleName}.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | 6 | #if(${hasBigDecimal}) 7 | import java.math.BigDecimal; 8 | #end 9 | import java.io.Serializable; 10 | import java.util.Date; 11 | import lombok.Data; 12 | 13 | /** 14 | * ${comments} 15 | * 16 | * @author ${author} 17 | * @email ${email} 18 | * @date ${datetime} 19 | */ 20 | @Data 21 | @TableName("${tableName}") 22 | public class ${className}Entity { 23 | 24 | #foreach ($column in $columns) 25 | /** 26 | * $column.comments 27 | */ 28 | #if($column.columnName == $pk.columnName) 29 | @TableId 30 | #end 31 | private $column.attrType $column.attrname; 32 | #end 33 | 34 | } 35 | -------------------------------------------------------------------------------- /gps-generator/src/main/resources/template/Service.java.vm: -------------------------------------------------------------------------------- 1 | package ${package}.${moduleName}.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import ${mainPath}.db.dbutils.MyPage; 5 | import ${package}.${moduleName}.entity.${className}Entity; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * ${comments} 11 | * 12 | * @author ${author} 13 | * @email ${email} 14 | * @date ${datetime} 15 | */ 16 | public interface ${className}Service extends IService<${className}Entity> { 17 | 18 | // MyPage<${className}Entity> queryPage(Map params); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /gps-generator/src/main/resources/template/ServiceImpl.java.vm: -------------------------------------------------------------------------------- 1 | package ${package}.${moduleName}.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | import java.util.Map; 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 6 | import com.baomidou.mybatisplus.core.metadata.IPage; 7 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 8 | import ${mainPath}.db.dbutils.MyPage; 9 | import ${mainPath}.db.dbutils.MyQuery; 10 | 11 | import ${package}.${moduleName}.dao.${className}Dao; 12 | import ${package}.${moduleName}.entity.${className}Entity; 13 | import ${package}.${moduleName}.service.${className}Service; 14 | 15 | 16 | @Service("${classname}Service") 17 | public class ${className}ServiceImpl extends ServiceImpl<${className}Dao, ${className}Entity> implements ${className}Service { 18 | 19 | //@Override 20 | //public PageUtils<${className}Entity> queryPage(Map params) { 21 | // IPage<${className}Entity> page = this.page( 22 | // MyQuery.getPage(params), 23 | // new QueryWrapper<${className}Entity>() 24 | // ); 25 | // return MyPage.create(page); 26 | //} 27 | 28 | } -------------------------------------------------------------------------------- /gps-generator/src/main/resources/template/index.js.vm: -------------------------------------------------------------------------------- 1 | import ${className}List from './${className}List' 2 | 3 | export default ${className}List 4 | -------------------------------------------------------------------------------- /gps-generator/src/main/resources/template/menu.sql.vm: -------------------------------------------------------------------------------- 1 | -- 菜单SQL 2 | INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) 3 | VALUES ('1', '${comments}', '${moduleName}/${pathName}', NULL, '1', 'config', '6'); 4 | 5 | -- 按钮父菜单ID 6 | set @parentId = @@identity; 7 | 8 | -- 菜单对应按钮SQL 9 | INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) 10 | SELECT @parentId, '查看', null, '${moduleName}:${pathName}:list,${moduleName}:${pathName}:info', '2', null, '6'; 11 | INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) 12 | SELECT @parentId, '新增', null, '${moduleName}:${pathName}:save', '2', null, '6'; 13 | INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) 14 | SELECT @parentId, '修改', null, '${moduleName}:${pathName}:update', '2', null, '6'; 15 | INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) 16 | SELECT @parentId, '删除', null, '${moduleName}:${pathName}:delete', '2', null, '6'; 17 | -------------------------------------------------------------------------------- /gps-generator/src/main/resources/template/other.text.vm: -------------------------------------------------------------------------------- 1 | 2 | // route 3 | { 4 | path: '${classname}', 5 | name: '${classname}', 6 | component: () => import('@/views/Path/${className}') 7 | } 8 | 9 | // api 10 | get${className}List(params) { 11 | return request({ 12 | url: '/api/${classname}/list', 13 | method: 'get', 14 | params, 15 | }) 16 | }, 17 | get${className}Detail(id) { 18 | return request({ 19 | url: `/api/${classname}/info/${id}`, 20 | method: 'get' 21 | }) 22 | }, 23 | add${className}(data) { 24 | return request({ 25 | url: '/api/${classname}/save', 26 | method: 'post', 27 | data 28 | }) 29 | }, 30 | update${className}(data) { 31 | return request({ 32 | url: '/api/${classname}/update', 33 | method: 'put', 34 | data 35 | }) 36 | }, 37 | delete${className}(id) { 38 | return request({ 39 | url: `/api/${classname}/delete/${id}`, 40 | method: 'delete' 41 | }) 42 | }, 43 | 44 | 45 | -------------------------------------------------------------------------------- /gps-websocket/build.gradle: -------------------------------------------------------------------------------- 1 | //buildscript { 2 | // repositories { 3 | // jcenter() 4 | // } 5 | // 6 | // dependencies { 7 | // //classpath "com.novoda:bintray-release:0.3.4" 8 | // classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6' 9 | // } 10 | //} 11 | 12 | jar.enabled = true 13 | bootJar.enabled = false 14 | sourceCompatibility = 1.8 15 | 16 | dependencies { 17 | // compile 'javax.websocket:javax.websocket-api:1.1' 18 | compile "org.springframework.boot:spring-boot-starter-web" 19 | compile 'org.springframework.boot:spring-boot-starter-websocket' 20 | compile "org.springframework.boot:spring-boot-starter-data-redis" 21 | 22 | //compile 'top.jfunc.common:utils:1.8.2.0' 23 | // compile 'top.jfunc.json:json-fastjson:1.8.3' 24 | compile "com.alibaba:fastjson:${fastjsonVersion}" 25 | 26 | // testCompile group: 'junit', name: 'junit', version: '4.12' 27 | // testCompile group: 'org.hamcrest' , name: 'hamcrest-core',version: '1.3' 28 | // testCompile group: 'org.hamcrest' , name: 'hamcrest-library',version: '1.3' 29 | 30 | } 31 | 32 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/TodoAtRemoved.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @author xiongshiyan at 2019/3/20 , contact me with email yanshixiong@126.com or phone 15208384257 7 | */ 8 | @FunctionalInterface 9 | public interface TodoAtRemoved { 10 | /** 11 | * 在删除的时候额外要干什么 12 | * @param webSockets webSockets 13 | */ 14 | void todoWith(List webSockets); 15 | } 16 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/WebSocket.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket; 2 | 3 | import lombok.Data; 4 | 5 | import javax.websocket.Session; 6 | import java.util.Date; 7 | 8 | /** 9 | * @author xiongshiyan at 2018/10/10 , contact me with email yanshixiong@126.com or phone 15208384257 10 | */ 11 | @Data 12 | public class WebSocket { 13 | /** 14 | * 代表一个连接 15 | */ 16 | private Session session; 17 | 18 | /** 19 | * 唯一标识 20 | */ 21 | private String identifier; 22 | /** 23 | * 最后心跳时间 24 | */ 25 | private Date lastHeart; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/WebSocketCloseEvent.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket; 2 | 3 | import org.springframework.context.ApplicationEvent; 4 | 5 | /** 6 | * @author xiongshiyan at 2018/11/6 , contact me with email yanshixiong@126.com or phone 15208384257 7 | */ 8 | public class WebSocketCloseEvent extends ApplicationEvent { 9 | public WebSocketCloseEvent(WebSocket webSocket){ 10 | super(webSocket); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/WebSocketConnectEvent.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket; 2 | 3 | import org.springframework.context.ApplicationEvent; 4 | 5 | /** 6 | * @author xiongshiyan at 2018/11/6 , contact me with email yanshixiong@126.com or phone 15208384257 7 | */ 8 | public class WebSocketConnectEvent extends ApplicationEvent { 9 | public WebSocketConnectEvent(WebSocket webSocket){ 10 | super(webSocket); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/memory/EnableMemWebSocketManager.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket.memory; 2 | 3 | import org.springframework.context.annotation.Import; 4 | 5 | import java.lang.annotation.*; 6 | 7 | /** 8 | * @author xiongshiyan at 2018/10/15 , contact me with email yanshixiong@126.com or phone 15208384257 9 | */ 10 | @Target(ElementType.TYPE) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Documented 13 | @Inherited 14 | @Import({MemoryWebSocketConfig.class}) 15 | public @interface EnableMemWebSocketManager { 16 | } 17 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/redis/EnableRedisWebSocketManager.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket.redis; 2 | 3 | import org.springframework.context.annotation.Import; 4 | 5 | import java.lang.annotation.*; 6 | 7 | /** 8 | * @author xiongshiyan at 2018/10/15 , contact me with email yanshixiong@126.com or phone 15208384257 9 | */ 10 | @Target(ElementType.TYPE) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Documented 13 | @Inherited 14 | @Import({RedisWebSocketConfig.class}) 15 | public @interface EnableRedisWebSocketManager { 16 | } 17 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/redis/RedisReceiver.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket.redis; 2 | 3 | /** 4 | * redis 接收器接口,主要目的是固定接口名字 5 | * @author xiongshiyan 6 | */ 7 | public interface RedisReceiver { 8 | String RECEIVER_METHOD_NAME = "receiveMessage"; 9 | /** 10 | * 回调方法 11 | * @param message 接收到的消息 12 | */ 13 | void receiveMessage(String message); 14 | } 15 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/redis/action/Action.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket.redis.action; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.gps.websocket.WebSocketManager; 5 | 6 | /** 7 | * 要做的事情 8 | * @author xiongshiyan 9 | */ 10 | public interface Action { 11 | String IDENTIFIER = "identifier"; 12 | String MESSAGE = "message"; 13 | String ACTION = "action"; 14 | /** 15 | * 根据消息做自己的事情 16 | * @param manager webSocket管理器 17 | * @param object 消息体转化的JSON 18 | */ 19 | void doMessage(WebSocketManager manager, JSONObject object); 20 | } 21 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/redis/action/ActionConfig.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket.redis.action; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.context.annotation.Import; 5 | 6 | /** 7 | * @author xiongshiyan 8 | * 将所有的Action配置进容器,通过名字找到 9 | */ 10 | @Configuration 11 | @Import({SendMessageAction.class , BroadCastAction.class , RemoveAction.class , NoActionAction.class}) 12 | public class ActionConfig { 13 | } -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/redis/action/BroadCastAction.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket.redis.action; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.gps.websocket.utils.WebSocketUtil; 5 | import com.gps.websocket.WebSocketManager; 6 | 7 | /** 8 | * { 9 | * "action":"broadcast", 10 | * "message":"xxxxxxxxxxxxx" 11 | * } 12 | * 广播给所有的websocket发送消息 action 13 | * 14 | * @author xiongshiyan at 2018/10/12 , contact me with email yanshixiong@126.com or phone 15208384257 15 | */ 16 | public class BroadCastAction implements Action { 17 | @Override 18 | public void doMessage(WebSocketManager manager, JSONObject object) { 19 | if (!object.containsKey(MESSAGE)) { 20 | return; 21 | } 22 | String message = object.getString(MESSAGE); 23 | //从本地取出所有的websocket发送消息 24 | manager.localWebSocketMap().values().forEach( 25 | webSocket -> WebSocketUtil.sendMessage( 26 | webSocket.getSession(), message)); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/redis/action/NoActionAction.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket.redis.action; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.gps.websocket.WebSocketManager; 5 | 6 | /** 7 | * do nothing action 8 | * @author xiongshiyan at 2018/10/12 , contact me with email yanshixiong@126.com or phone 15208384257 9 | */ 10 | public class NoActionAction implements Action{ 11 | @Override 12 | public void doMessage(WebSocketManager manager, JSONObject object) { 13 | // do no thing 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/redis/action/RemoveAction.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket.redis.action; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.gps.websocket.WebSocket; 5 | import com.gps.websocket.WebSocketManager; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * { 11 | * "action":"remove", 12 | * "identifier":"xxx" 13 | * } 14 | * 给webSocket发送消息的action 15 | * 16 | * @author xiongshiyan at 2018/10/12 , contact me with email yanshixiong@126.com or phone 15208384257 17 | */ 18 | public class RemoveAction implements Action { 19 | @Override 20 | public void doMessage(WebSocketManager manager, JSONObject object) { 21 | if (!object.containsKey(IDENTIFIER)) { 22 | return; 23 | } 24 | 25 | String identifier = object.getString(IDENTIFIER); 26 | 27 | Map localWebSocketMap = manager.localWebSocketMap(); 28 | if (localWebSocketMap.containsKey(identifier)) { 29 | localWebSocketMap.remove(identifier); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /gps-websocket/src/main/java/com/gps/websocket/redis/action/SendMessageAction.java: -------------------------------------------------------------------------------- 1 | package com.gps.websocket.redis.action; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.gps.websocket.utils.WebSocketUtil; 5 | import com.gps.websocket.WebSocket; 6 | import com.gps.websocket.WebSocketManager; 7 | 8 | /** 9 | * { 10 | * "action":"sendMessage", 11 | * "identifier":"xxx", 12 | * "message":"xxxxxxxxxxx" 13 | * } 14 | * 给webSocket发送消息的action 15 | * @author xiongshiyan at 2018/10/12 , contact me with email yanshixiong@126.com or phone 15208384257 16 | */ 17 | public class SendMessageAction implements Action{ 18 | @Override 19 | public void doMessage(WebSocketManager manager, JSONObject object) { 20 | if(!object.containsKey(IDENTIFIER)){ 21 | return; 22 | } 23 | if(!object.containsKey(MESSAGE)){ 24 | return; 25 | } 26 | 27 | String identifier = object.getString(IDENTIFIER); 28 | 29 | WebSocket webSocket = manager.get(identifier); 30 | if(null == webSocket){ 31 | return; 32 | } 33 | WebSocketUtil.sendMessage(webSocket.getSession() , object.getString(MESSAGE)); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /hbase/build/tmp/jar/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | 3 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'gps180' 2 | include ':gps-common' 3 | include ':gps-db' 4 | include ':gps-gate' 5 | include ':gps-engine' 6 | include ':gps-api' 7 | //include ':gps-jt809' 8 | include ':gps-websocket' 9 | include ':gps-generator' 10 | //include ':gps-gbt32960' 11 | include ':hbase' --------------------------------------------------------------------------------