Repository: yjjdick/sdb-mall Branch: master Commit: 1dd9223b77a3 Files: 451 Total size: 5.6 MB Directory structure: gitextract_r7yl04yy/ ├── .gitattributes ├── .gitignore ├── .gitlab-ci.yml ├── LICENSE ├── README.md ├── db/ │ ├── init.sql │ └── sdb_带测试数据.sql ├── pom-war.xml ├── pom.xml ├── sdb.iml └── src/ ├── main/ │ ├── java/ │ │ ├── com/ │ │ │ └── baidu/ │ │ │ └── ueditor/ │ │ │ ├── ActionEnter.java │ │ │ ├── ConfigManager.java │ │ │ ├── Encoder.java │ │ │ ├── PathFormat.java │ │ │ ├── define/ │ │ │ │ ├── ActionMap.java │ │ │ │ ├── ActionState.java │ │ │ │ ├── AppInfo.java │ │ │ │ ├── BaseState.java │ │ │ │ ├── FileType.java │ │ │ │ ├── MIMEType.java │ │ │ │ ├── MultiState.java │ │ │ │ └── State.java │ │ │ ├── hunter/ │ │ │ │ ├── FileManager.java │ │ │ │ └── ImageHunter.java │ │ │ └── upload/ │ │ │ ├── Base64Uploader.java │ │ │ ├── BinaryUploader.java │ │ │ ├── StorageManager.java │ │ │ └── Uploader.java │ │ └── io/ │ │ └── sdb/ │ │ ├── SdbApplication.java │ │ ├── builder/ │ │ │ ├── AbstractBuilder.java │ │ │ ├── ImageBuilder.java │ │ │ ├── MyMetaBuilder.java │ │ │ └── TextBuilder.java │ │ ├── common/ │ │ │ ├── annotation/ │ │ │ │ ├── JFinalTx.java │ │ │ │ ├── Login.java │ │ │ │ ├── LoginUser.java │ │ │ │ └── SysLog.java │ │ │ ├── aspect/ │ │ │ │ ├── RedisAspect.java │ │ │ │ └── SysLogAspect.java │ │ │ ├── entity/ │ │ │ │ ├── AreaNode.java │ │ │ │ ├── Filter.java │ │ │ │ ├── Node.java │ │ │ │ ├── Order.java │ │ │ │ └── kuaidi100/ │ │ │ │ ├── MapCustomConverter.java │ │ │ │ ├── NoticeRequest.java │ │ │ │ ├── NoticeResponse.java │ │ │ │ ├── Result.java │ │ │ │ ├── ResultItem.java │ │ │ │ ├── TaskRequest.java │ │ │ │ └── TaskResponse.java │ │ │ ├── exception/ │ │ │ │ ├── RRException.java │ │ │ │ └── RRExceptionHandler.java │ │ │ ├── utils/ │ │ │ │ ├── ConfigConstant.java │ │ │ │ ├── Constant.java │ │ │ │ ├── DateUtils.java │ │ │ │ ├── EnumUtil.java │ │ │ │ ├── GenericsUtils.java │ │ │ │ ├── HttpContextUtils.java │ │ │ │ ├── HttpRequest.java │ │ │ │ ├── IPUtils.java │ │ │ │ ├── JfEnjoy.java │ │ │ │ ├── JsonUtils.java │ │ │ │ ├── JwtUtils.java │ │ │ │ ├── MapUtils.java │ │ │ │ ├── MoneyUtils.java │ │ │ │ ├── PageUtils.java │ │ │ │ ├── Query.java │ │ │ │ ├── R.java │ │ │ │ ├── RecordUtils.java │ │ │ │ ├── RedisKeys.java │ │ │ │ ├── RedisLock.java │ │ │ │ ├── RedisUtils.java │ │ │ │ ├── ShiroUtils.java │ │ │ │ ├── SpringContextUtils.java │ │ │ │ ├── SqlHelper.java │ │ │ │ ├── TreeBuilder.java │ │ │ │ ├── _JFCodeGenerator.java │ │ │ │ ├── _JFinalGenerator.java │ │ │ │ └── tpl/ │ │ │ │ ├── html/ │ │ │ │ │ ├── add-or-update.html │ │ │ │ │ └── index.html │ │ │ │ └── java/ │ │ │ │ ├── controller.html │ │ │ │ ├── dao.html │ │ │ │ ├── service.html │ │ │ │ └── serviceImpl.html │ │ │ ├── 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/ │ │ │ ├── ActiveRecordConfig.java │ │ │ ├── AlipayConfig.java │ │ │ ├── CorsConfig.java │ │ │ ├── FilterConfig.java │ │ │ ├── JFinalTxAop.java │ │ │ ├── KaptchaConfig.java │ │ │ ├── Kuaidi100Config.java │ │ │ ├── OrderProperties.java │ │ │ ├── RedisConfig.java │ │ │ ├── ShiroConfig.java │ │ │ ├── SpringBootConfig.java │ │ │ ├── SwaggerConfig.java │ │ │ ├── WebMvcConfig.java │ │ │ ├── WechatOpenConfig.java │ │ │ ├── WechatPayConfig.java │ │ │ ├── WxMaConfiguration.java │ │ │ ├── WxMaProperties.java │ │ │ ├── WxMpConfiguration.java │ │ │ └── WxMpProperties.java │ │ ├── controller/ │ │ │ ├── AbstractController.java │ │ │ ├── AppLoginController.java │ │ │ ├── AppRegisterController.java │ │ │ ├── AppTestController.java │ │ │ ├── CartController.java │ │ │ ├── FavoriteGoodsController.java │ │ │ ├── FileController.java │ │ │ ├── GoodsController.java │ │ │ ├── GrouponController.java │ │ │ ├── OrderController.java │ │ │ ├── PayController.java │ │ │ ├── ProductCategoryController.java │ │ │ ├── ProductController.java │ │ │ ├── ScheduleJobController.java │ │ │ ├── ScheduleJobLogController.java │ │ │ ├── SpecificationController.java │ │ │ ├── SysCampaignController.java │ │ │ ├── SysConfigController.java │ │ │ ├── SysDeliveryCorpController.java │ │ │ ├── SysFavoriteGoodsController.java │ │ │ ├── SysGoodsController.java │ │ │ ├── SysGrouponController.java │ │ │ ├── SysGrouponTeamController.java │ │ │ ├── SysLogController.java │ │ │ ├── SysLoginController.java │ │ │ ├── SysLogisticsController.java │ │ │ ├── SysMenuController.java │ │ │ ├── SysOrderController.java │ │ │ ├── SysOssController.java │ │ │ ├── SysProductCategoryController.java │ │ │ ├── SysRoleController.java │ │ │ ├── SysSpecificationController.java │ │ │ ├── SysUserController.java │ │ │ ├── TestController.java │ │ │ ├── UEditorController.java │ │ │ ├── WxMaMediaController.java │ │ │ ├── WxMaUserController.java │ │ │ ├── WxPayController.java │ │ │ └── WxPortalController.java │ │ ├── dao/ │ │ │ ├── AreaDao.java │ │ │ ├── BaseDao.java │ │ │ ├── CampaignDao.java │ │ │ ├── CartDao.java │ │ │ ├── DeliveryCorpDao.java │ │ │ ├── FavoriteGoodsDao.java │ │ │ ├── GoodsDao.java │ │ │ ├── GrouponDao.java │ │ │ ├── GrouponTeamDao.java │ │ │ ├── LogisticsDao.java │ │ │ ├── OrderDetailDao.java │ │ │ ├── OrderMasterDao.java │ │ │ ├── ProductCategoryDao.java │ │ │ ├── ProductDao.java │ │ │ ├── ReceiverDao.java │ │ │ ├── ScheduleJobDao.java │ │ │ ├── ScheduleJobLogDao.java │ │ │ ├── SnDao.java │ │ │ ├── SpecificationDao.java │ │ │ ├── SysCaptchaDao.java │ │ │ ├── SysConfigDao.java │ │ │ ├── SysLogDao.java │ │ │ ├── SysMenuDao.java │ │ │ ├── SysOssDao.java │ │ │ ├── SysRoleDao.java │ │ │ ├── SysRoleMenuDao.java │ │ │ ├── SysUserDao.java │ │ │ ├── SysUserRoleDao.java │ │ │ ├── SysUserTokenDao.java │ │ │ └── UserDao.java │ │ ├── datasources/ │ │ │ ├── DataSourceNames.java │ │ │ ├── DynamicDataSource.java │ │ │ ├── DynamicDataSourceConfig.java │ │ │ ├── annotation/ │ │ │ │ └── DataSource.java │ │ │ └── aspect/ │ │ │ └── DataSourceAspect.java │ │ ├── dto/ │ │ │ ├── CartDTO.java │ │ │ ├── FavoriteGoodsDTO.java │ │ │ ├── GoodsDTO.java │ │ │ ├── OrderDTO.java │ │ │ └── ProductDTO.java │ │ ├── enums/ │ │ │ ├── CampaignEnum.java │ │ │ ├── GeneralEnum.java │ │ │ ├── GrouponStatusEnum.java │ │ │ ├── IEnum.java │ │ │ ├── Language.java │ │ │ ├── OrderStatusEnum.java │ │ │ ├── PayStatusEnum.java │ │ │ ├── ProductStatusEnum.java │ │ │ ├── ResultEnum.java │ │ │ ├── SnEnum.java │ │ │ └── VolunteerStateEnum.java │ │ ├── form/ │ │ │ ├── CartForm.java │ │ │ ├── CheckOutForm.java │ │ │ ├── GoodsData.java │ │ │ ├── GoodsForm.java │ │ │ ├── GoodsListForm.java │ │ │ ├── GoodsParaData.java │ │ │ ├── GoodsParaEntryData.java │ │ │ ├── GoodsSpecData.java │ │ │ ├── GoodsSpecGroupData.java │ │ │ ├── InvoiceInfo.java │ │ │ ├── LoginForm.java │ │ │ ├── MaLoginForm.java │ │ │ ├── NewsAddForm.java │ │ │ ├── OrderDetailForm.java │ │ │ ├── OrderForm.java │ │ │ ├── PasswordForm.java │ │ │ ├── ProductInfo.java │ │ │ ├── ReceiveInfo.java │ │ │ ├── RefundForm.java │ │ │ ├── RegisterForm.java │ │ │ ├── SysLoginForm.java │ │ │ ├── SysNewsForm.java │ │ │ └── SysOrderForm.java │ │ ├── handler/ │ │ │ ├── AbstractHandler.java │ │ │ ├── KfSessionHandler.java │ │ │ ├── LocationHandler.java │ │ │ ├── LogHandler.java │ │ │ ├── MenuHandler.java │ │ │ ├── MsgHandler.java │ │ │ ├── NullHandler.java │ │ │ ├── ScanHandler.java │ │ │ ├── StoreCheckNotifyHandler.java │ │ │ ├── SubscribeHandler.java │ │ │ └── UnsubscribeHandler.java │ │ ├── interceptor/ │ │ │ └── AuthorizationInterceptor.java │ │ ├── job/ │ │ │ ├── config/ │ │ │ │ └── ScheduleConfig.java │ │ │ ├── task/ │ │ │ │ └── TestTask.java │ │ │ └── utils/ │ │ │ ├── ScheduleJob.java │ │ │ ├── ScheduleRunnable.java │ │ │ └── ScheduleUtils.java │ │ ├── model/ │ │ │ ├── Area.java │ │ │ ├── Campaign.java │ │ │ ├── Cart.java │ │ │ ├── DeliveryCorp.java │ │ │ ├── FavoriteGoods.java │ │ │ ├── Goods.java │ │ │ ├── Groupon.java │ │ │ ├── GrouponTeam.java │ │ │ ├── Logistics.java │ │ │ ├── OrderDetail.java │ │ │ ├── OrderMaster.java │ │ │ ├── Product.java │ │ │ ├── ProductCategory.java │ │ │ ├── Receiver.java │ │ │ ├── ScheduleJob.java │ │ │ ├── ScheduleJobLog.java │ │ │ ├── Sn.java │ │ │ ├── Specification.java │ │ │ ├── SysCaptcha.java │ │ │ ├── SysConfig.java │ │ │ ├── SysLog.java │ │ │ ├── SysMenu.java │ │ │ ├── SysOss.java │ │ │ ├── SysRole.java │ │ │ ├── SysRoleMenu.java │ │ │ ├── SysUser.java │ │ │ ├── SysUserRole.java │ │ │ ├── SysUserToken.java │ │ │ ├── TbUser.java │ │ │ ├── User.java │ │ │ ├── _MappingKit.java │ │ │ └── base/ │ │ │ ├── BaseArea.java │ │ │ ├── BaseCampaign.java │ │ │ ├── BaseCart.java │ │ │ ├── BaseDeliveryCorp.java │ │ │ ├── BaseFavoriteGoods.java │ │ │ ├── BaseGoods.java │ │ │ ├── BaseGroupon.java │ │ │ ├── BaseGrouponTeam.java │ │ │ ├── BaseLogistics.java │ │ │ ├── BaseOrderDetail.java │ │ │ ├── BaseOrderMaster.java │ │ │ ├── BaseProduct.java │ │ │ ├── BaseProductCategory.java │ │ │ ├── BaseReceiver.java │ │ │ ├── BaseScheduleJob.java │ │ │ ├── BaseScheduleJobLog.java │ │ │ ├── BaseSn.java │ │ │ ├── BaseSpecification.java │ │ │ ├── BaseSysCaptcha.java │ │ │ ├── BaseSysConfig.java │ │ │ ├── BaseSysLog.java │ │ │ ├── BaseSysMenu.java │ │ │ ├── BaseSysOss.java │ │ │ ├── BaseSysRole.java │ │ │ ├── BaseSysRoleMenu.java │ │ │ ├── BaseSysUser.java │ │ │ ├── BaseSysUserRole.java │ │ │ ├── BaseSysUserToken.java │ │ │ ├── BaseTbUser.java │ │ │ ├── BaseTestTable.java │ │ │ ├── BaseUser.java │ │ │ └── BaseVolunteerInfo.java │ │ ├── oss/ │ │ │ └── cloud/ │ │ │ ├── AliyunCloudStorageService.java │ │ │ ├── CloudStorageConfig.java │ │ │ ├── CloudStorageService.java │ │ │ ├── OSSFactory.java │ │ │ ├── QcloudCloudStorageService.java │ │ │ └── QiniuCloudStorageService.java │ │ ├── resolver/ │ │ │ └── LoginUserHandlerMethodArgumentResolver.java │ │ ├── serializer/ │ │ │ ├── Date2LongSerializer.java │ │ │ └── Int2BoolSerializer.java │ │ ├── service/ │ │ │ ├── AreaService.java │ │ │ ├── BaseService.java │ │ │ ├── CampaignService.java │ │ │ ├── CartService.java │ │ │ ├── DeliveryCorpService.java │ │ │ ├── FavoriteGoodsService.java │ │ │ ├── GoodsService.java │ │ │ ├── GrouponService.java │ │ │ ├── GrouponTeamService.java │ │ │ ├── LogisticsService.java │ │ │ ├── OrderDetailService.java │ │ │ ├── OrderMasterService.java │ │ │ ├── PayService.java │ │ │ ├── ProductCategoryService.java │ │ │ ├── ProductService.java │ │ │ ├── ReceiverService.java │ │ │ ├── ScheduleJobLogService.java │ │ │ ├── ScheduleJobService.java │ │ │ ├── ShiroService.java │ │ │ ├── SnService.java │ │ │ ├── SpecificationService.java │ │ │ ├── SysCaptchaService.java │ │ │ ├── SysConfigService.java │ │ │ ├── SysLogService.java │ │ │ ├── SysMenuService.java │ │ │ ├── SysOssService.java │ │ │ ├── SysRoleMenuService.java │ │ │ ├── SysRoleService.java │ │ │ ├── SysUserRoleService.java │ │ │ ├── SysUserService.java │ │ │ ├── SysUserTokenService.java │ │ │ ├── UserService.java │ │ │ └── impl/ │ │ │ ├── AreaServiceImpl.java │ │ │ ├── BaseServiceImpl.java │ │ │ ├── CampaignServiceImpl.java │ │ │ ├── CartServiceImpl.java │ │ │ ├── DeliveryCorpServiceImpl.java │ │ │ ├── FavoriteGoodsServiceImpl.java │ │ │ ├── GoodsServiceImpl.java │ │ │ ├── GrouponServiceImpl.java │ │ │ ├── GrouponTeamServiceImpl.java │ │ │ ├── LogisticsServiceImpl.java │ │ │ ├── MailService.java │ │ │ ├── OrderDetailServiceImpl.java │ │ │ ├── OrderMasterServiceImpl.java │ │ │ ├── PayServiceImpl.java │ │ │ ├── ProductCategoryServiceImpl.java │ │ │ ├── ProductServiceImpl.java │ │ │ ├── ReceiverServiceImpl.java │ │ │ ├── ScheduleJobLogServiceImpl.java │ │ │ ├── ScheduleJobServiceImpl.java │ │ │ ├── ShiroServiceImpl.java │ │ │ ├── SnServiceImpl.java │ │ │ ├── SpecificationServiceImpl.java │ │ │ ├── SysCaptchaServiceImpl.java │ │ │ ├── SysConfigServiceImpl.java │ │ │ ├── SysLogServiceImpl.java │ │ │ ├── SysMenuServiceImpl.java │ │ │ ├── SysOssServiceImpl.java │ │ │ ├── SysRoleMenuServiceImpl.java │ │ │ ├── SysRoleServiceImpl.java │ │ │ ├── SysUserRoleServiceImpl.java │ │ │ ├── SysUserServiceImpl.java │ │ │ ├── SysUserTokenServiceImpl.java │ │ │ └── UserServiceImpl.java │ │ ├── sys/ │ │ │ ├── oauth2/ │ │ │ │ ├── OAuth2Filter.java │ │ │ │ ├── OAuth2Realm.java │ │ │ │ ├── OAuth2Token.java │ │ │ │ └── TokenGenerator.java │ │ │ └── redis/ │ │ │ └── SysConfigRedis.java │ │ └── vo/ │ │ ├── DeliveryCorpVO.java │ │ ├── GoodsVO.java │ │ ├── GrouponDetailVO.java │ │ ├── GrouponTeamVO.java │ │ ├── GrouponVO.java │ │ ├── NewsVO.java │ │ ├── OrderDetailVO.java │ │ ├── OrderVO.java │ │ ├── ProductCategoryVO.java │ │ ├── ProductVO.java │ │ ├── SpecificationVO.java │ │ └── VolunteerInfoVO.java │ └── resources/ │ ├── application-dev.yml │ ├── application-prod.yml │ ├── application-test.yml │ ├── application.yml │ ├── banner.txt │ ├── log4jdbc.properties │ ├── logback-spring.xml │ ├── sql/ │ │ ├── all.sql │ │ ├── cart.sql │ │ ├── common.sql │ │ ├── favoriteGoods.sql │ │ ├── news.sql │ │ ├── order.sql │ │ ├── product.sql │ │ ├── productCategory.sql │ │ ├── sysConfig.sql │ │ ├── sysMenu.sql │ │ └── sysUser.sql │ ├── static/ │ │ └── swagger/ │ │ ├── css/ │ │ │ ├── print.css │ │ │ ├── reset.css │ │ │ ├── screen.css │ │ │ ├── style.css │ │ │ └── typography.css │ │ ├── index.html │ │ ├── index.yaml │ │ ├── lang/ │ │ │ ├── en.js │ │ │ ├── translator.js │ │ │ └── zh-cn.js │ │ ├── lib/ │ │ │ ├── backbone-min.js │ │ │ ├── es5-shim.js │ │ │ ├── handlebars-4.0.5.js │ │ │ ├── highlight.9.1.0.pack.js │ │ │ ├── highlight.9.1.0.pack_extended.js │ │ │ ├── marked.js │ │ │ ├── object-assign-pollyfill.js │ │ │ └── swagger-oauth.js │ │ ├── o2c.html │ │ ├── oauth2-redirect.html │ │ ├── swagger-ui-bundle.js │ │ ├── swagger-ui-standalone-preset.js │ │ ├── swagger-ui.css │ │ └── swagger-ui.js │ └── templates/ │ ├── hello.html │ └── success.html └── test/ └── java/ └── io/ └── sdb/ ├── dao/ │ └── SysUserDaoTest.java ├── modules/ │ └── app/ │ └── utils/ │ └── RecordUtilsTest.java └── service/ └── impl/ ├── CartServiceImplTest.java ├── GoodsServiceImplTest.java ├── MailServiceTest.java ├── PayServiceImplTest.java ├── ProductServiceImplTest.java └── SysLogisticsServiceImplTest.java ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ *.js linguist-language=Java *.css linguist-language=Java *.html linguist-language=Java *.* linguist-language=Java * linguist-language=Java ================================================ FILE: .gitignore ================================================ # Created by .ignore support plugin (hsz.mobi) ### JetBrains template # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff: .idea/ .idea/**/workspace.xml .idea/**/tasks.xml .idea/dictionaries # Sensitive or high-churn files: .idea/**/dataSources/ .idea/**/dataSources.ids .idea/**/dataSources.xml .idea/**/dataSources.local.xml .idea/**/sqlDataSources.xml .idea/**/dynamic.xml .idea/**/uiDesigner.xml # Gradle: .idea/**/gradle.xml .idea/**/libraries # CMake cmake-build-debug/ cmake-build-release/ # Mongo Explorer plugin: .idea/**/mongoSettings.xml ## File-based project format: *.iws ## Plugin-specific files: # IntelliJ out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Cursive Clojure plugin .idea/replstate.xml # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties target/ ================================================ FILE: .gitlab-ci.yml ================================================ stages: - build - push - deploy job1: stage: build only: - dev tags: - dev-shell script: - echo "build===============" - mvn -Dmaven.test.skip=true clean package job2: stage: push only: - dev tags: - dev-shell script: - echo "push===============" - mvn docker:push job3: stage: deploy only: - dev tags: - dev-shell script: - echo "deploy================" - cd /docker-swarm - docker stack deploy -c sdb.yml sdb #job3: # stage: deploy # tags: # - demo # script: # - echo "I am job3" # - echo "I am in deploy stage" ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: You must give any other recipients of the Work or Derivative Works a copy of this License; and You must cause any modified files to carry prominent notices stating that You changed the files; and You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2018 森多邦开源 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: README.md ================================================ # sdb mall **项目说明** - sdb是一个轻量级的在renren-fast基础上利用jfinal架构二次开发的一个极速二次开发直播,拼团商城框架,前后端分离的Java快速开发平台,C端采用微信小程序,能快速开发项目并交付【接私活利器】 - 支持MySQL、Oracle、SQL Server、PostgreSQL等主流数据库 - 重点说明:此项目并不是提供下载运行后直接就能上生产的情况,在我多年的经验里告诉我,所有的项目即使是商业模式非常相似但是在业务需求细节上也是有各种各种不同的变化,特别是在C端和campaign这块,举几个例子,在C端方面,你可能和别人使用完全色调,页面布局一模一样的页面吗?在后端同样一个优惠券的功能你能保证你不做一些定制化的实现吗?所以sdb mall这个架构是用来让你可以快速开发成自己独有的,个性化的商城项目,并非是提供大而全的功能,当然我也会在其中添加一些比较通用的功能,比如商城的完整流程和之后会开发一些营销模块等 - 后端开源
**具有如下特点** - 友好的代码结构及注释,便于阅读及二次开发 - 实现前后端分离,通过token进行数据交互,前端再也不用关注后端技术 - 灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求 - 页面交互使用Vue2.x,极大的提高了开发效率 - 完善的代码生成机制,可在线生成entity、xml、dao、service、vue、sql代码,减少70%以上的开发任务 - 引入quartz定时任务,可动态完成任务的添加、修改、删除、暂停、恢复及日志查看等功能 - 引入API模板,根据token作为登录令牌,极大的方便了APP接口开发 - 引入Hibernate Validator校验框架,轻松实现后端校验 - 引入云存储服务,已支持:七牛云、阿里云、腾讯云等 - 引入swagger文档支持,方便编写API接口文档

**项目结构** ``` sdb ├─db 项目SQL语句 │ ├─common 公共模块 │ ├─aspect 系统日志 │ ├─exception 异常处理 │ ├─validator 后台校验 │ ├─entity 自定义实体对象 │ └─xss XSS过滤 │ ├─config 配置信息 │ ├─job 定时任务 │ ├─controller 路由(代码生成器自动生成) │ ├─service 服务类(代码生成器自动生成) │ ├─dao 数据库模型高一级的抽象配合service(代码生成器自动生成) │ ├─model 数据库模型(代码生成器自动生成) │ ├─form 前端自定义请求类 │ ├─sdbApplication 项目启动类 │ ├──resources │ ├─sql 复杂表级联sql模板 │ └─static 静态资源 ```
**如何交流、反馈、参与贡献?** - 开发文档:正在设计中 - Github仓库:https://github.com/yjjdick/sdb-mall - Gitee仓库:https://gitee.com/yjjdick/sdb-mall - 技术讨论、二次开发等咨询、问题和建议,请移步到交流群! - 如需关注项目最新动态,请Watch、Star项目,同时也是对项目最好的支持
**技术选型:** - 核心框架:Spring Boot 2.0 - 安全框架:Apache Shiro 1.4 - 视图框架:Jfinal Enjoy - 持久层框架:Jfinal ORM - 定时器:Quartz 2.3 - 数据库连接池:Druid 1.0 - 日志管理:logback - 页面交互:Vue2.x
**后端部署** - 通过git下载源码 - 创建数据库sdb,数据库编码为UTF8mb4 - 执行db/init.sql文件,初始化数据 - 修改application-dev.yml,更新MySQL账号和密码 - Eclipse、IDEA运行sdbApplication.java,则可启动项目
**前端部署** - 本项目是前后端分离的,还需要部署前端,才能运行起来 - 前端下载地址:请到交流群询问 - 前端页面可用项目自带的代码生成器自动生成减少90%以上开发工作量
**商城业务** - 系统管理(一切后端需要的功能基本都能满足,鉴权机制,定时任务,系统日志,代码生成器等) - 商品管理 - 订单管理 - 商品分类 - 规格管理 - 微信支付 - 微信退款 - 微信租户接口 - 客服系统 - 物流系统(快递100) - 邮件接口 - 拼团模块 - 各种campaign(正在开发)
**介绍和使用视频** - 视频地址: - idea下代码启动:https://v.qq.com/x/page/y0795k72ak8.html - backend安装启动:https://v.qq.com/x/page/o0795qs3drx.html - 小程序wepy框架介绍:https://v.qq.com/x/page/t0795vugxc2.html - eclipse下代码启动:https://v.qq.com/x/page/a0795t266c8.html - 小程序业务介绍:https://v.qq.com/x/page/f07958veoua.html - 管理端业务流程介绍:https://v.qq.com/x/page/a079561268d.html - 二次开发简单介绍:http://v.qq.com/x/page/i0795wutn2o.html - 公众号森多邦工作室提供互联网软件开发,美术设计等服务![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B7%A5%E4%BD%9C%E5%AE%A4%E5%85%AC%E4%BC%97%E5%8F%B7.jpg?x-oss-process=image/resize,p_30 "工作室公众号")
**介绍和使用视频** - 后端演示地址:https://qa.senduobang.com/backend/ - 小程序演示地址:![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%95%86%E5%9F%8E%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg?x-oss-process=image/resize,p_50 "工作室公众号")
**后端管理系统:**
- 首页直播
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/ezgif-1-1cb294e07bec.gif "物流详情")

- 首页dash
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/admin-%E9%A6%96%E9%A1%B5.png "首页dash")

- 商品管理列表
![输入图片说明](https://senduobang.oss-cn-shanghai.aliyuncs.com/admin-%E5%95%86%E5%93%81%E7%AE%A1%E7%90%86.png "商品管理列表")

- 多规格添加商品
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/admin-%E5%A4%9A%E8%A7%84%E6%A0%BC%E5%95%86%E5%93%81%E6%B7%BB%E5%8A%A0.png "多规格添加商品")

- 订单管理列表
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/admin-%E8%AE%A2%E5%8D%95%E7%AE%A1%1C%E7%90%86.png "订单管理列表")

- 订单详情
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/admin-%E8%AE%A2%E5%8D%95%E8%AF%A6%E6%83%85.png "订单详情")

**小程序商城:**

- 首页
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E9%A6%96%E9%A1%B5.PNG?x-oss-process=image/resize,p_30&t1 "首页")

- 商品详情
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E5%95%86%E5%93%81%E8%AF%A6%E6%83%85.PNG?x-oss-process=image/resize,p_30&t=1 "商品详情")

- 商品详情2
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E5%95%86%E5%93%81%E8%AF%A6%E6%83%852.PNG?x-oss-process=image/resize,p_30&t=1 "商品详情")

- 客服
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E5%AE%A2%E6%9C%8D.PNG?x-oss-process=image/resize,p_30 "客服")

- 购物车
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E8%B4%AD%E7%89%A9%E8%BD%A6.PNG?x-oss-process=image/resize,p_30 "购物车")

- checkout
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-checkout.PNG?x-oss-process=image/resize,p_30 "checkout")

- 微信支付
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E5%BE%AE%E4%BF%A1%E6%94%AF%E4%BB%98.PNG?x-oss-process=image/resize,p_30 "微信支付")

- 订单详情
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E8%AE%A2%E5%8D%95%E8%AF%A6%E6%83%85.PNG?x-oss-process=image/resize,p_30 "订单详情")

- 订单列表
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E8%AE%A2%E5%8D%95%E5%88%97%E8%A1%A8.PNG?x-oss-process=image/resize,p_30 "订单列表")

- 订单详情2
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E8%AE%A2%E5%8D%95%E8%AF%A6%E6%83%852.PNG?x-oss-process=image/resize,p_30 "订单详情2")

- 物流详情
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E7%89%A9%E6%B5%81%E8%AF%A6%E6%83%85.PNG?x-oss-process=image/resize,p_30 "物流详情")

- 拼团1
![输入图片说明]( https://senduobang.oss-cn-shanghai.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E6%8B%BC%E5%9B%A2.PNG?x-oss-process=image/resize,p_30 "物流详情")

- 拼团2
================================================ FILE: db/init.sql ================================================ /* Navicat Premium Data Transfer Source Server : localhost Source Server Type : MySQL Source Server Version : 50639 Source Host : 127.0.0.1:3306 Source Schema : sdb Target Server Type : MySQL Target Server Version : 50639 File Encoding : 65001 Date: 06/11/2018 17:15:56 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for QRTZ_BLOB_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_BLOB_TRIGGERS`; CREATE TABLE `QRTZ_BLOB_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `BLOB_DATA` blob, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), KEY `SCHED_NAME` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_CALENDARS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_CALENDARS`; CREATE TABLE `QRTZ_CALENDARS` ( `SCHED_NAME` varchar(120) NOT NULL, `CALENDAR_NAME` varchar(200) NOT NULL, `CALENDAR` blob NOT NULL, PRIMARY KEY (`SCHED_NAME`,`CALENDAR_NAME`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_CRON_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_CRON_TRIGGERS`; CREATE TABLE `QRTZ_CRON_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `CRON_EXPRESSION` varchar(120) NOT NULL, `TIME_ZONE_ID` varchar(80) DEFAULT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_FIRED_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_FIRED_TRIGGERS`; CREATE TABLE `QRTZ_FIRED_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `ENTRY_ID` varchar(95) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `INSTANCE_NAME` varchar(200) NOT NULL, `FIRED_TIME` bigint(13) NOT NULL, `SCHED_TIME` bigint(13) NOT NULL, `PRIORITY` int(11) NOT NULL, `STATE` varchar(16) NOT NULL, `JOB_NAME` varchar(200) DEFAULT NULL, `JOB_GROUP` varchar(200) DEFAULT NULL, `IS_NONCONCURRENT` varchar(1) DEFAULT NULL, `REQUESTS_RECOVERY` varchar(1) DEFAULT NULL, PRIMARY KEY (`SCHED_NAME`,`ENTRY_ID`), KEY `IDX_QRTZ_FT_TRIG_INST_NAME` (`SCHED_NAME`,`INSTANCE_NAME`), KEY `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY` (`SCHED_NAME`,`INSTANCE_NAME`,`REQUESTS_RECOVERY`), KEY `IDX_QRTZ_FT_J_G` (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_FT_JG` (`SCHED_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_FT_T_G` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), KEY `IDX_QRTZ_FT_TG` (`SCHED_NAME`,`TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_JOB_DETAILS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_JOB_DETAILS`; CREATE TABLE `QRTZ_JOB_DETAILS` ( `SCHED_NAME` varchar(120) NOT NULL, `JOB_NAME` varchar(200) NOT NULL, `JOB_GROUP` varchar(200) NOT NULL, `DESCRIPTION` varchar(250) DEFAULT NULL, `JOB_CLASS_NAME` varchar(250) NOT NULL, `IS_DURABLE` varchar(1) NOT NULL, `IS_NONCONCURRENT` varchar(1) NOT NULL, `IS_UPDATE_DATA` varchar(1) NOT NULL, `REQUESTS_RECOVERY` varchar(1) NOT NULL, `JOB_DATA` blob, PRIMARY KEY (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_J_REQ_RECOVERY` (`SCHED_NAME`,`REQUESTS_RECOVERY`), KEY `IDX_QRTZ_J_GRP` (`SCHED_NAME`,`JOB_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_LOCKS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_LOCKS`; CREATE TABLE `QRTZ_LOCKS` ( `SCHED_NAME` varchar(120) NOT NULL, `LOCK_NAME` varchar(40) NOT NULL, PRIMARY KEY (`SCHED_NAME`,`LOCK_NAME`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_PAUSED_TRIGGER_GRPS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_PAUSED_TRIGGER_GRPS`; CREATE TABLE `QRTZ_PAUSED_TRIGGER_GRPS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_SCHEDULER_STATE -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_SCHEDULER_STATE`; CREATE TABLE `QRTZ_SCHEDULER_STATE` ( `SCHED_NAME` varchar(120) NOT NULL, `INSTANCE_NAME` varchar(200) NOT NULL, `LAST_CHECKIN_TIME` bigint(13) NOT NULL, `CHECKIN_INTERVAL` bigint(13) NOT NULL, PRIMARY KEY (`SCHED_NAME`,`INSTANCE_NAME`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_SIMPLE_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_SIMPLE_TRIGGERS`; CREATE TABLE `QRTZ_SIMPLE_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `REPEAT_COUNT` bigint(7) NOT NULL, `REPEAT_INTERVAL` bigint(12) NOT NULL, `TIMES_TRIGGERED` bigint(10) NOT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_SIMPROP_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_SIMPROP_TRIGGERS`; CREATE TABLE `QRTZ_SIMPROP_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `STR_PROP_1` varchar(512) DEFAULT NULL, `STR_PROP_2` varchar(512) DEFAULT NULL, `STR_PROP_3` varchar(512) DEFAULT NULL, `INT_PROP_1` int(11) DEFAULT NULL, `INT_PROP_2` int(11) DEFAULT NULL, `LONG_PROP_1` bigint(20) DEFAULT NULL, `LONG_PROP_2` bigint(20) DEFAULT NULL, `DEC_PROP_1` decimal(13,4) DEFAULT NULL, `DEC_PROP_2` decimal(13,4) DEFAULT NULL, `BOOL_PROP_1` varchar(1) DEFAULT NULL, `BOOL_PROP_2` varchar(1) DEFAULT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_TRIGGERS`; CREATE TABLE `QRTZ_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `JOB_NAME` varchar(200) NOT NULL, `JOB_GROUP` varchar(200) NOT NULL, `DESCRIPTION` varchar(250) DEFAULT NULL, `NEXT_FIRE_TIME` bigint(13) DEFAULT NULL, `PREV_FIRE_TIME` bigint(13) DEFAULT NULL, `PRIORITY` int(11) DEFAULT NULL, `TRIGGER_STATE` varchar(16) NOT NULL, `TRIGGER_TYPE` varchar(8) NOT NULL, `START_TIME` bigint(13) NOT NULL, `END_TIME` bigint(13) DEFAULT NULL, `CALENDAR_NAME` varchar(200) DEFAULT NULL, `MISFIRE_INSTR` smallint(2) DEFAULT NULL, `JOB_DATA` blob, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), KEY `IDX_QRTZ_T_J` (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_T_JG` (`SCHED_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_T_C` (`SCHED_NAME`,`CALENDAR_NAME`), KEY `IDX_QRTZ_T_G` (`SCHED_NAME`,`TRIGGER_GROUP`), KEY `IDX_QRTZ_T_STATE` (`SCHED_NAME`,`TRIGGER_STATE`), KEY `IDX_QRTZ_T_N_STATE` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`,`TRIGGER_STATE`), KEY `IDX_QRTZ_T_N_G_STATE` (`SCHED_NAME`,`TRIGGER_GROUP`,`TRIGGER_STATE`), KEY `IDX_QRTZ_T_NEXT_FIRE_TIME` (`SCHED_NAME`,`NEXT_FIRE_TIME`), KEY `IDX_QRTZ_T_NFT_ST` (`SCHED_NAME`,`TRIGGER_STATE`,`NEXT_FIRE_TIME`), KEY `IDX_QRTZ_T_NFT_MISFIRE` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`), KEY `IDX_QRTZ_T_NFT_ST_MISFIRE` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`,`TRIGGER_STATE`), KEY `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`,`TRIGGER_GROUP`,`TRIGGER_STATE`), CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `QRTZ_JOB_DETAILS` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for area -- ---------------------------- DROP TABLE IF EXISTS `area`; CREATE TABLE `area` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `modify_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新日期', `version` bigint(20) NOT NULL DEFAULT '0', `orders` int(11) DEFAULT NULL, `full_name` longtext NOT NULL, `grade` int(11) NOT NULL, `name` varchar(255) NOT NULL, `tree_path` varchar(255) NOT NULL, `parent_id` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `ind_area_parent` (`parent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='地区'; -- ---------------------------- -- Table structure for campaign -- ---------------------------- DROP TABLE IF EXISTS `campaign`; CREATE TABLE `campaign` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `type` smallint(2) DEFAULT NULL COMMENT '类型 1-主页banner', `param_name1` varchar(255) DEFAULT NULL, `param_value1` varchar(255) DEFAULT NULL, `param_name2` varchar(255) DEFAULT NULL, `param_value2` varchar(255) DEFAULT NULL, `param_name3` varchar(255) DEFAULT NULL, `param_value3` varchar(255) DEFAULT NULL, `start_time` datetime DEFAULT NULL, `end_time` datetime DEFAULT NULL, `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Table structure for cart -- ---------------------------- DROP TABLE IF EXISTS `cart`; CREATE TABLE `cart` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` varchar(50) NOT NULL, `product_id` varchar(50) NOT NULL COMMENT '商品id', `quantity` int(11) NOT NULL COMMENT '数量', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `user_id_index` (`user_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for delivery_corp -- ---------------------------- DROP TABLE IF EXISTS `delivery_corp`; CREATE TABLE `delivery_corp` ( `code` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `url` varchar(255) NOT NULL, PRIMARY KEY (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for favorite_goods -- ---------------------------- DROP TABLE IF EXISTS `favorite_goods`; CREATE TABLE `favorite_goods` ( `favorite_user` varchar(50) NOT NULL COMMENT '[用户ID]', `favorite_goods` varchar(255) NOT NULL COMMENT '[商品ID]', PRIMARY KEY (`favorite_user`,`favorite_goods`), KEY `idx_user_favorite_goods` (`favorite_goods`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for goods -- ---------------------------- DROP TABLE IF EXISTS `goods`; CREATE TABLE `goods` ( `sn` varchar(50) NOT NULL COMMENT '编号', `name` varchar(255) NOT NULL COMMENT '名称', `model` varchar(50) DEFAULT NULL COMMENT '型号', `caption` varchar(255) NOT NULL COMMENT '副标题', `image` varchar(255) NOT NULL COMMENT '展示图片', `price` decimal(21,2) NOT NULL DEFAULT '0.00' COMMENT '销售价', `is_delivery` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否需要物流', `is_marketable` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否上架', `parameter_values` longtext NOT NULL COMMENT '参数值', `specification_items` longtext COMMENT '规格项', `introduction` longtext NOT NULL COMMENT '介绍', `product_images` longtext NOT NULL COMMENT '商品图片', `campaign` int(11) DEFAULT NULL COMMENT '活动,位运算,1-拼团', `groupon_count` int(11) DEFAULT NULL COMMENT '拼团人数', `weight` float(11,0) NOT NULL COMMENT '重量', `unit` varchar(255) NOT NULL COMMENT '单位', `product_category_id` bigint(20) NOT NULL COMMENT '货品分类', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新日期', PRIMARY KEY (`sn`), KEY `idx_name` (`name`), KEY `idx_is_marketable` (`is_marketable`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for logistics -- ---------------------------- DROP TABLE IF EXISTS `logistics`; CREATE TABLE `logistics` ( `tracking_no` varchar(255) NOT NULL, `check_state` smallint(4) NOT NULL DEFAULT '0' COMMENT '订阅状态-0未订阅 1已订阅 2订阅失败', `order_state` smallint(4) DEFAULT NULL COMMENT '物流状态包括0在途中、1已揽收、2疑难、3已签收、4退签、5同城派送中、6退回、7转单等7个状态', `data` longtext COMMENT '物流跟踪数据', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`tracking_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for order_detail -- ---------------------------- DROP TABLE IF EXISTS `order_detail`; CREATE TABLE `order_detail` ( `detail_id` varchar(32) NOT NULL, `order_id` varchar(32) NOT NULL, `product_id` varchar(32) NOT NULL, `product_name` varchar(64) NOT NULL COMMENT '商品名称', `product_model` varchar(50) DEFAULT NULL COMMENT '型号', `product_spec` varchar(50) DEFAULT NULL COMMENT '规格', `group_price` decimal(21,2) DEFAULT NULL COMMENT '团购价', `product_price` decimal(21,2) NOT NULL COMMENT '当前价格,单位分', `product_quantity` int(11) NOT NULL COMMENT '数量', `product_icon` varchar(512) DEFAULT NULL COMMENT '小图', `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`detail_id`), KEY `idx_order_id` (`order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Table structure for order_master -- ---------------------------- DROP TABLE IF EXISTS `order_master`; CREATE TABLE `order_master` ( `order_id` varchar(32) NOT NULL, `buyer_name` varchar(32) NOT NULL COMMENT '买家名字', `buyer_phone` varchar(32) NOT NULL COMMENT '买家电话', `buyer_address` varchar(128) NOT NULL COMMENT '买家地址', `buyer_id` varchar(64) NOT NULL COMMENT '买家id', `need_invoice` smallint(1) DEFAULT NULL COMMENT '是否需要开票 0-不需要 1-需要', `invoice_type` smallint(1) DEFAULT NULL COMMENT '发票类型 0-单位 1-个人', `groupon` smallint(1) DEFAULT NULL COMMENT '拼团', `groupon_id` varchar(50) DEFAULT NULL COMMENT '拼团id', `groupon_count` int(11) DEFAULT NULL COMMENT '拼团人数', `title` varchar(255) DEFAULT NULL COMMENT '发票抬头', `tax_number` varchar(255) DEFAULT NULL COMMENT '抬头税号', `company_address` varchar(255) DEFAULT NULL COMMENT '单位地址', `telephone` varchar(255) DEFAULT NULL COMMENT '开票手机号码', `bank_name` varchar(255) DEFAULT NULL COMMENT '银行名称', `bank_account` varchar(255) DEFAULT NULL COMMENT '银行账号', `order_amount` decimal(21,2) NOT NULL COMMENT '订单总金额', `order_status` tinyint(3) NOT NULL DEFAULT '0' COMMENT '订单状态, 默认为新下单', `tracking_number` varchar(255) DEFAULT NULL COMMENT '快递单号', `delivery_code` varchar(255) DEFAULT NULL COMMENT '快递公司代码', `refund_trade_no` varchar(255) DEFAULT NULL COMMENT '退款交易流水号', `pay_trade_no` varchar(255) DEFAULT NULL COMMENT '支付交易流水号', `pay_status` tinyint(3) NOT NULL DEFAULT '0' COMMENT '支付状态, 默认未支付', `remark` varchar(255) DEFAULT NULL COMMENT ' 买家备注', `contract` varchar(255) DEFAULT NULL COMMENT '合同', `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`order_id`), KEY `idx_buyer_id` (`buyer_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Table structure for product -- ---------------------------- DROP TABLE IF EXISTS `product`; CREATE TABLE `product` ( `sn` varchar(255) NOT NULL COMMENT '商品编号', `price` decimal(21,2) NOT NULL DEFAULT '0.00' COMMENT '销售价', `group_price` decimal(21,2) NOT NULL DEFAULT '0.00' COMMENT '拼团价', `cost` decimal(21,2) NOT NULL DEFAULT '0.00' COMMENT '成本价', `is_default` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否默认', `specification_values` longtext COMMENT '规格值', `stock` int(11) NOT NULL DEFAULT '0' COMMENT '库存', `goods_sn` varchar(255) NOT NULL COMMENT '货品编号', `enable` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否启用', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改日期', PRIMARY KEY (`sn`), KEY `ind_product_goods` (`goods_sn`), KEY `ind_product_is_default` (`is_default`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for product_category -- ---------------------------- DROP TABLE IF EXISTS `product_category`; CREATE TABLE `product_category` ( `id` bigint(20) NOT NULL COMMENT 'ID', `name` varchar(255) NOT NULL COMMENT '名称', `parent_id` bigint(20) DEFAULT NULL COMMENT '父节点', `tree_path` varchar(255) DEFAULT NULL COMMENT '全路径', `order` int(11) NOT NULL DEFAULT '99' COMMENT '优先级 值小在前面 值大的在后面', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新日期', PRIMARY KEY (`id`), KEY `ind_product_category_parent` (`parent_id`), KEY `idx_order` (`order`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for receiver -- ---------------------------- DROP TABLE IF EXISTS `receiver`; CREATE TABLE `receiver` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `address` varchar(255) NOT NULL, `area_name` varchar(255) NOT NULL, `consignee` varchar(255) NOT NULL, `is_default` tinyint(1) NOT NULL, `phone` varchar(255) NOT NULL, `zip_code` varchar(255) DEFAULT NULL, `area_id` bigint(20) NOT NULL, `member_id` varchar(50) NOT NULL, `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新日期', PRIMARY KEY (`id`), KEY `ind_receiver_area` (`area_id`), KEY `ind_receiver_member` (`member_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for schedule_job -- ---------------------------- DROP TABLE IF EXISTS `schedule_job`; CREATE TABLE `schedule_job` ( `job_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务id', `bean_name` varchar(200) DEFAULT NULL COMMENT 'spring bean名称', `method_name` varchar(100) DEFAULT NULL COMMENT '方法名', `params` varchar(2000) DEFAULT NULL COMMENT '参数', `cron_expression` varchar(100) DEFAULT NULL COMMENT 'cron表达式', `status` tinyint(4) DEFAULT NULL COMMENT '任务状态 0:正常 1:暂停', `remark` varchar(255) DEFAULT NULL COMMENT '备注', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`job_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='定时任务'; -- ---------------------------- -- Table structure for schedule_job_log -- ---------------------------- DROP TABLE IF EXISTS `schedule_job_log`; CREATE TABLE `schedule_job_log` ( `log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务日志id', `job_id` bigint(20) NOT NULL COMMENT '任务id', `bean_name` varchar(200) DEFAULT NULL COMMENT 'spring bean名称', `method_name` varchar(100) DEFAULT NULL COMMENT '方法名', `params` varchar(2000) DEFAULT NULL COMMENT '参数', `status` tinyint(4) NOT NULL COMMENT '任务状态 0:成功 1:失败', `error` varchar(2000) DEFAULT NULL COMMENT '失败信息', `times` int(11) NOT NULL COMMENT '耗时(单位:毫秒)', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`log_id`), KEY `job_id` (`job_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='定时任务日志'; -- ---------------------------- -- Table structure for sn -- ---------------------------- DROP TABLE IF EXISTS `sn`; CREATE TABLE `sn` ( `type` int(11) NOT NULL COMMENT '类型', `last_value` bigint(20) NOT NULL COMMENT '末值', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `modify_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改日期', PRIMARY KEY (`type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='序列号'; -- ---------------------------- -- Table structure for specification -- ---------------------------- DROP TABLE IF EXISTS `specification`; CREATE TABLE `specification` ( `id` bigint(20) NOT NULL COMMENT 'id', `parent_id` bigint(20) DEFAULT NULL COMMENT '父节点', `type` int(11) NOT NULL COMMENT '0-规格组 1-规格参数', `order` int(11) NOT NULL DEFAULT '0' COMMENT '排序', `name` varchar(50) NOT NULL COMMENT '名称', `category_id` bigint(20) DEFAULT NULL COMMENT '分类id', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Table structure for sys_captcha -- ---------------------------- DROP TABLE IF EXISTS `sys_captcha`; CREATE TABLE `sys_captcha` ( `uuid` char(36) NOT NULL COMMENT 'uuid', `code` varchar(6) NOT NULL COMMENT '验证码', `expire_time` datetime DEFAULT NULL COMMENT '过期时间', PRIMARY KEY (`uuid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统验证码'; -- ---------------------------- -- Table structure for sys_config -- ---------------------------- DROP TABLE IF EXISTS `sys_config`; CREATE TABLE `sys_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `param_key` varchar(50) DEFAULT NULL COMMENT 'key', `param_value` varchar(2000) DEFAULT NULL COMMENT 'value', `status` tinyint(4) DEFAULT '1' COMMENT '状态 0:隐藏 1:显示', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`), UNIQUE KEY `param_key` (`param_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统配置信息表'; -- ---------------------------- -- Table structure for sys_log -- ---------------------------- DROP TABLE IF EXISTS `sys_log`; CREATE TABLE `sys_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL COMMENT '用户名', `operation` varchar(50) DEFAULT NULL COMMENT '用户操作', `method` varchar(200) DEFAULT NULL COMMENT '请求方法', `params` varchar(5000) DEFAULT NULL COMMENT '请求参数', `time` bigint(20) NOT NULL COMMENT '执行时长(毫秒)', `ip` varchar(64) DEFAULT NULL COMMENT 'IP地址', `create_date` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统日志'; -- ---------------------------- -- Table structure for sys_menu -- ---------------------------- DROP TABLE IF EXISTS `sys_menu`; CREATE TABLE `sys_menu` ( `menu_id` bigint(20) NOT NULL AUTO_INCREMENT, `parent_id` bigint(20) DEFAULT NULL COMMENT '父菜单ID,一级菜单为0', `name` varchar(50) DEFAULT NULL COMMENT '菜单名称', `url` varchar(200) DEFAULT NULL COMMENT '菜单URL', `perms` varchar(500) DEFAULT NULL COMMENT '授权(多个用逗号分隔,如:user:list,user:create)', `type` int(11) DEFAULT NULL COMMENT '类型 0:目录 1:菜单 2:按钮', `icon` varchar(50) DEFAULT NULL COMMENT '菜单图标', `order_num` int(11) DEFAULT NULL COMMENT '排序', PRIMARY KEY (`menu_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='菜单管理'; -- ---------------------------- -- Table structure for sys_oss -- ---------------------------- DROP TABLE IF EXISTS `sys_oss`; CREATE TABLE `sys_oss` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `url` varchar(200) DEFAULT NULL COMMENT 'URL地址', `create_date` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文件上传'; -- ---------------------------- -- Table structure for sys_role -- ---------------------------- DROP TABLE IF EXISTS `sys_role`; CREATE TABLE `sys_role` ( `role_id` bigint(20) NOT NULL AUTO_INCREMENT, `role_name` varchar(100) DEFAULT NULL COMMENT '角色名称', `remark` varchar(100) DEFAULT NULL COMMENT '备注', `create_user_id` bigint(20) DEFAULT NULL COMMENT '创建者ID', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色'; -- ---------------------------- -- Table structure for sys_role_menu -- ---------------------------- DROP TABLE IF EXISTS `sys_role_menu`; CREATE TABLE `sys_role_menu` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `role_id` bigint(20) DEFAULT NULL COMMENT '角色ID', `menu_id` bigint(20) DEFAULT NULL COMMENT '菜单ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色与菜单对应关系'; -- ---------------------------- -- Table structure for sys_user -- ---------------------------- DROP TABLE IF EXISTS `sys_user`; CREATE TABLE `sys_user` ( `user_id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL COMMENT '用户名', `password` varchar(100) DEFAULT NULL COMMENT '密码', `salt` varchar(20) DEFAULT NULL COMMENT '盐', `email` varchar(100) DEFAULT NULL COMMENT '邮箱', `mobile` varchar(100) DEFAULT NULL COMMENT '手机号', `status` tinyint(4) DEFAULT NULL COMMENT '状态 0:禁用 1:正常', `create_user_id` bigint(20) DEFAULT NULL COMMENT '创建者ID', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`user_id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统用户'; -- ---------------------------- -- Table structure for sys_user_role -- ---------------------------- DROP TABLE IF EXISTS `sys_user_role`; CREATE TABLE `sys_user_role` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` bigint(20) DEFAULT NULL COMMENT '用户ID', `role_id` bigint(20) DEFAULT NULL COMMENT '角色ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户与角色对应关系'; -- ---------------------------- -- Table structure for sys_user_token -- ---------------------------- DROP TABLE IF EXISTS `sys_user_token`; CREATE TABLE `sys_user_token` ( `user_id` bigint(20) NOT NULL, `token` varchar(100) NOT NULL COMMENT 'token', `expire_time` datetime DEFAULT NULL COMMENT '过期时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`user_id`), UNIQUE KEY `token` (`token`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统用户Token'; -- ---------------------------- -- Table structure for test_table -- ---------------------------- DROP TABLE IF EXISTS `test_table`; CREATE TABLE `test_table` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '[ID]', `name` varchar(255) DEFAULT NULL COMMENT '[姓名]', `sex` smallint(2) DEFAULT NULL COMMENT '[性别] 1-男 2-女', `create_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '[创建时间]', `update_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '[更新时间]', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `user_id` varchar(50) NOT NULL COMMENT 'ID', `username` varchar(50) DEFAULT NULL COMMENT '用户名', `ma_open_id` varchar(100) DEFAULT NULL COMMENT '小程序openid', `union_id` varchar(100) DEFAULT NULL COMMENT '开放平台id', `nickname` varchar(50) DEFAULT NULL COMMENT '昵称', `name` varchar(50) DEFAULT NULL COMMENT '真实姓名', `email` varchar(50) DEFAULT NULL COMMENT '邮箱', `gender` smallint(1) DEFAULT NULL COMMENT '性别 1-男 2-女', `area_id` smallint(10) DEFAULT NULL COMMENT '地区id', `language` smallint(1) DEFAULT NULL COMMENT '语言 1-中文 2-英文', `volunteer` smallint(4) DEFAULT NULL COMMENT '是否志愿者', `avatar` varchar(255) DEFAULT NULL COMMENT '头像', `mobile` varchar(20) DEFAULT NULL COMMENT '手机号', `password` varchar(64) DEFAULT NULL COMMENT '密码', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`user_id`), UNIQUE KEY `idx_username` (`username`) USING BTREE, KEY `idx_maopenid` (`ma_open_id`), KEY `idx_unionid` (`union_id`), KEY `idx_createdate` (`create_date`), KEY `idx_nickname` (`nickname`), KEY `idx_name` (`name`), KEY `idex_mobile` (`mobile`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户'; -- ---------------------------- -- 拼团 -- ---------------------------- DROP TABLE IF EXISTS `groupon`; CREATE TABLE `groupon` ( `id` varchar(50) NOT NULL, `goods_id` varchar(50) NOT NULL, `count` int(11) NOT NULL, `status` smallint(1) NOT NULL DEFAULT '0' COMMENT '0-等待开团 1-已开团 2-取消', `expire_date` datetime NOT NULL, `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- 拼团队伍 -- ---------------------------- DROP TABLE IF EXISTS `groupon_team`; CREATE TABLE `groupon_team` ( `groupon_id` varchar(50) NOT NULL, `user_id` varchar(50) NOT NULL, `captain` smallint(1) NOT NULL DEFAULT '0', `create_date` datetime DEFAULT CURRENT_TIMESTAMP, `update_date` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`groupon_id`,`user_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 初始数据 INSERT INTO `sys_user` (`user_id`, `username`, `password`, `salt`, `email`, `mobile`, `status`, `create_user_id`, `create_time`) VALUES ('1', 'admin', '9ec9750e709431dad22365cabc5c625482e574c74adaebba7dd02f1129e4ce1d', 'YzcmCZNvbXocrsz9dm8e', 'root@sdb.io', '13612345678', '1', '1', '2016-11-11 11:11:11'); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (1, 0, '系统管理', NULL, NULL, 0, 'system', 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (2, 1, '管理员列表', 'sys/user', NULL, 1, 'admin', 1); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (3, 1, '角色管理', 'sys/role', NULL, 1, 'role', 2); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (4, 1, '菜单管理', 'sys/menu', NULL, 1, 'menu', 3); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (5, 1, 'SQL监控', 'http://localhost:8080/sdb/druid/sql.html', NULL, 1, 'sql', 4); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (6, 1, '定时任务', 'job/schedule', NULL, 1, 'job', 5); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (7, 6, '查看', NULL, 'sys:schedule:list,sys:schedule:info', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (8, 6, '新增', NULL, 'sys:schedule:save', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (9, 6, '修改', NULL, 'sys:schedule:update', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (10, 6, '删除', NULL, 'sys:schedule:delete', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (11, 6, '暂停', NULL, 'sys:schedule:pause', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (12, 6, '恢复', NULL, 'sys:schedule:resume', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (13, 6, '立即执行', NULL, 'sys:schedule:run', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (14, 6, '日志列表', NULL, 'sys:schedule:log', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (15, 2, '查看', NULL, 'sys:user:list,sys:user:info', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (16, 2, '新增', NULL, 'sys:user:save,sys:role:select', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (17, 2, '修改', NULL, 'sys:user:update,sys:role:select', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (18, 2, '删除', NULL, 'sys:user:delete', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (19, 3, '查看', NULL, 'sys:role:list,sys:role:info', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (20, 3, '新增', NULL, 'sys:role:save,sys:menu:list', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (21, 3, '修改', NULL, 'sys:role:update,sys:menu:list', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (22, 3, '删除', NULL, 'sys:role:delete', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (23, 4, '查看', NULL, 'sys:menu:list,sys:menu:info', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (24, 4, '新增', NULL, 'sys:menu:save,sys:menu:select', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (25, 4, '修改', NULL, 'sys:menu:update,sys:menu:select', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (26, 4, '删除', NULL, 'sys:menu:delete', 2, NULL, 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (27, 1, '参数管理', 'sys/config', 'sys:config:list,sys:config:info,sys:config:save,sys:config:update,sys:config:delete', 1, 'config', 6); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (29, 1, '系统日志', 'sys/log', 'sys:log:list', 1, 'log', 7); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (30, 1, '文件上传', 'oss/oss', 'sys:oss:all', 1, 'oss', 6); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (31, 0, '业务管理', '', '', 0, 'config', 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (42, 31, '商品管理', 'sys/goods', '', 1, 'editor', 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (43, 31, '订单管理', 'sys/order', '', 1, 'bianji', 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (45, 31, '商品分类', 'sys/productCategory', '', 1, 'log', 0); INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (46, 31, '规格管理', 'sys/specification', '', 1, 'menu', 0); INSERT INTO `sys_config` (`param_key`, `param_value`, `status`, `remark`) VALUES ('CLOUD_STORAGE_CONFIG_KEY', '{\"aliyunAccessKeyId\":\"\",\"aliyunAccessKeySecret\":\"\",\"aliyunBucketName\":\"\",\"aliyunDomain\":\"\",\"aliyunEndPoint\":\"\",\"aliyunPrefix\":\"\",\"qcloudBucketName\":\"\",\"qcloudDomain\":\"\",\"qcloudPrefix\":\"\",\"qcloudSecretId\":\"\",\"qcloudSecretKey\":\"\",\"qiniuAccessKey\":\"NrgMfABZxWLo5B-YYSjoE8-AZ1EISdi1Z3ubLOeZ\",\"qiniuBucketName\":\"ios-app\",\"qiniuDomain\":\"http://7xqbwh.dl1.z0.glb.clouddn.com\",\"qiniuPrefix\":\"upload\",\"qiniuSecretKey\":\"uIwJHevMRWU0VLxFvgy0tAcOdGqasdtVlJkdy6vV\",\"type\":1}', '0', '云存储配置信息'); INSERT INTO `schedule_job` (`bean_name`, `method_name`, `params`, `cron_expression`, `status`, `remark`, `create_time`) VALUES ('testTask', 'test', 'sdb', '0 0/30 * * * ?', '0', '有参数测试', '2016-12-01 23:16:46'); INSERT INTO `schedule_job` (`bean_name`, `method_name`, `params`, `cron_expression`, `status`, `remark`, `create_time`) VALUES ('testTask', 'test2', NULL, '0 0/30 * * * ?', '1', '无参数测试', '2016-12-03 14:55:56'); INSERT INTO `sn`(`type`, `last_value`, `create_date`, `modify_date`) VALUES (1, 100, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); INSERT INTO `sn`(`type`, `last_value`, `create_date`, `modify_date`) VALUES (2, 100, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); INSERT INTO `sn`(`type`, `last_value`, `create_date`, `modify_date`) VALUES (3, 100, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); INSERT INTO `sn`(`type`, `last_value`, `create_date`, `modify_date`) VALUES (4, 100, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); INSERT INTO `sn`(`type`, `last_value`, `create_date`, `modify_date`) VALUES (5, 100, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); INSERT INTO `sn`(`type`, `last_value`, `create_date`, `modify_date`) VALUES (6, 100, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); ================================================ FILE: db/sdb_带测试数据.sql ================================================ /* Navicat Premium Data Transfer Source Server : localhost Source Server Type : MySQL Source Server Version : 50639 Source Host : 127.0.0.1:3306 Source Schema : sdb Target Server Type : MySQL Target Server Version : 50639 File Encoding : 65001 Date: 18/11/2018 14:28:13 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for QRTZ_BLOB_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_BLOB_TRIGGERS`; CREATE TABLE `QRTZ_BLOB_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `BLOB_DATA` blob, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), KEY `SCHED_NAME` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_CALENDARS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_CALENDARS`; CREATE TABLE `QRTZ_CALENDARS` ( `SCHED_NAME` varchar(120) NOT NULL, `CALENDAR_NAME` varchar(200) NOT NULL, `CALENDAR` blob NOT NULL, PRIMARY KEY (`SCHED_NAME`,`CALENDAR_NAME`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_CRON_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_CRON_TRIGGERS`; CREATE TABLE `QRTZ_CRON_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `CRON_EXPRESSION` varchar(120) NOT NULL, `TIME_ZONE_ID` varchar(80) DEFAULT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of QRTZ_CRON_TRIGGERS -- ---------------------------- BEGIN; INSERT INTO `QRTZ_CRON_TRIGGERS` VALUES ('RenrenScheduler', 'TASK_1', 'DEFAULT', '0 0/30 * * * ?', 'Asia/Shanghai'); INSERT INTO `QRTZ_CRON_TRIGGERS` VALUES ('RenrenScheduler', 'TASK_2', 'DEFAULT', '0 0/30 * * * ?', 'Asia/Shanghai'); INSERT INTO `QRTZ_CRON_TRIGGERS` VALUES ('SdbScheduler', 'TASK_1', 'DEFAULT', '0 0/30 * * * ?', 'Asia/Shanghai'); INSERT INTO `QRTZ_CRON_TRIGGERS` VALUES ('SdbScheduler', 'TASK_2', 'DEFAULT', '0 0/30 * * * ?', 'Asia/Shanghai'); COMMIT; -- ---------------------------- -- Table structure for QRTZ_FIRED_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_FIRED_TRIGGERS`; CREATE TABLE `QRTZ_FIRED_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `ENTRY_ID` varchar(95) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `INSTANCE_NAME` varchar(200) NOT NULL, `FIRED_TIME` bigint(13) NOT NULL, `SCHED_TIME` bigint(13) NOT NULL, `PRIORITY` int(11) NOT NULL, `STATE` varchar(16) NOT NULL, `JOB_NAME` varchar(200) DEFAULT NULL, `JOB_GROUP` varchar(200) DEFAULT NULL, `IS_NONCONCURRENT` varchar(1) DEFAULT NULL, `REQUESTS_RECOVERY` varchar(1) DEFAULT NULL, PRIMARY KEY (`SCHED_NAME`,`ENTRY_ID`), KEY `IDX_QRTZ_FT_TRIG_INST_NAME` (`SCHED_NAME`,`INSTANCE_NAME`), KEY `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY` (`SCHED_NAME`,`INSTANCE_NAME`,`REQUESTS_RECOVERY`), KEY `IDX_QRTZ_FT_J_G` (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_FT_JG` (`SCHED_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_FT_T_G` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), KEY `IDX_QRTZ_FT_TG` (`SCHED_NAME`,`TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_JOB_DETAILS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_JOB_DETAILS`; CREATE TABLE `QRTZ_JOB_DETAILS` ( `SCHED_NAME` varchar(120) NOT NULL, `JOB_NAME` varchar(200) NOT NULL, `JOB_GROUP` varchar(200) NOT NULL, `DESCRIPTION` varchar(250) DEFAULT NULL, `JOB_CLASS_NAME` varchar(250) NOT NULL, `IS_DURABLE` varchar(1) NOT NULL, `IS_NONCONCURRENT` varchar(1) NOT NULL, `IS_UPDATE_DATA` varchar(1) NOT NULL, `REQUESTS_RECOVERY` varchar(1) NOT NULL, `JOB_DATA` blob, PRIMARY KEY (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_J_REQ_RECOVERY` (`SCHED_NAME`,`REQUESTS_RECOVERY`), KEY `IDX_QRTZ_J_GRP` (`SCHED_NAME`,`JOB_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of QRTZ_JOB_DETAILS -- ---------------------------- BEGIN; INSERT INTO `QRTZ_JOB_DETAILS` VALUES ('RenrenScheduler', 'TASK_1', 'DEFAULT', NULL, 'io.sdb.job.utils.ScheduleJob', '0', '0', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B455973720018696F2E7364622E6D6F64656C2E5363686564756C654A6F62B511FC0B16515A6A02000078720021696F2E7364622E6D6F64656C2E626173652E426173655363686564756C654A6F628688DB292DD3709202000078720024636F6D2E6A66696E616C2E706C7567696E2E6163746976657265636F72642E4D6F64656CF241A000649E44110200034C0005617474727371007E00034C000A636F6E6669674E616D657400124C6A6176612F6C616E672F537472696E673B4C000A6D6F64696679466C616774000F4C6A6176612F7574696C2F5365743B78707371007E00053F4000000000000C770800000010000000087400096265616E5F6E616D65740008746573745461736B74000B6372656174655F74696D65737200126A6176612E73716C2E54696D657374616D702618D5C80153BF650200014900056E616E6F737872000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000158BAF59330780000000074000B6D6574686F645F6E616D657400047465737474000F63726F6E5F65787072657373696F6E74000E3020302F3330202A202A202A203F7400066A6F625F69647372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000174000672656D61726B74000FE69C89E58F82E695B0E6B58BE8AF95740006706172616D73740009766F6C756E74656572740006737461747573737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C75657871007E001B000000007870707800); INSERT INTO `QRTZ_JOB_DETAILS` VALUES ('RenrenScheduler', 'TASK_2', 'DEFAULT', NULL, 'io.sdb.job.utils.ScheduleJob', '0', '0', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B455973720018696F2E7364622E6D6F64656C2E5363686564756C654A6F62B511FC0B16515A6A02000078720021696F2E7364622E6D6F64656C2E626173652E426173655363686564756C654A6F628688DB292DD3709202000078720024636F6D2E6A66696E616C2E706C7567696E2E6163746976657265636F72642E4D6F64656CF241A000649E44110200034C0005617474727371007E00034C000A636F6E6669674E616D657400124C6A6176612F6C616E672F537472696E673B4C000A6D6F64696679466C616774000F4C6A6176612F7574696C2F5365743B78707371007E00053F4000000000000C770800000010000000087400096265616E5F6E616D65740008746573745461736B74000B6372656174655F74696D65737200126A6176612E73716C2E54696D657374616D702618D5C80153BF650200014900056E616E6F737872000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000158C377C460780000000074000B6D6574686F645F6E616D65740005746573743274000F63726F6E5F65787072657373696F6E74000E3020302F3330202A202A202A203F7400066A6F625F69647372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000274000672656D61726B74000FE697A0E58F82E695B0E6B58BE8AF95740006706172616D7370740006737461747573737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C75657871007E001B000000017870707800); INSERT INTO `QRTZ_JOB_DETAILS` VALUES ('SdbScheduler', 'TASK_1', 'DEFAULT', NULL, 'io.sdb.job.utils.ScheduleJob', '0', '0', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B455973720018696F2E7364622E6D6F64656C2E5363686564756C654A6F62B511FC0B16515A6A02000078720021696F2E7364622E6D6F64656C2E626173652E426173655363686564756C654A6F628688DB292DD3709202000078720024636F6D2E6A66696E616C2E706C7567696E2E6163746976657265636F72642E4D6F64656CF241A000649E44110200034C0005617474727371007E00034C000A636F6E6669674E616D657400124C6A6176612F6C616E672F537472696E673B4C000A6D6F64696679466C616774000F4C6A6176612F7574696C2F5365743B78707371007E00053F4000000000000C770800000010000000087400096265616E5F6E616D65740008746573745461736B74000B6372656174655F74696D65737200126A6176612E73716C2E54696D657374616D702618D5C80153BF650200014900056E616E6F737872000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000158BAF59330780000000074000B6D6574686F645F6E616D657400047465737474000F63726F6E5F65787072657373696F6E74000E3020302F3330202A202A202A203F7400066A6F625F69647372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000174000672656D61726B74000FE69C89E58F82E695B0E6B58BE8AF95740006706172616D73740009766F6C756E74656572740006737461747573737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C75657871007E001B000000007870707800); INSERT INTO `QRTZ_JOB_DETAILS` VALUES ('SdbScheduler', 'TASK_2', 'DEFAULT', NULL, 'io.sdb.job.utils.ScheduleJob', '0', '0', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B455973720018696F2E7364622E6D6F64656C2E5363686564756C654A6F62B511FC0B16515A6A02000078720021696F2E7364622E6D6F64656C2E626173652E426173655363686564756C654A6F628688DB292DD3709202000078720024636F6D2E6A66696E616C2E706C7567696E2E6163746976657265636F72642E4D6F64656CF241A000649E44110200034C0005617474727371007E00034C000A636F6E6669674E616D657400124C6A6176612F6C616E672F537472696E673B4C000A6D6F64696679466C616774000F4C6A6176612F7574696C2F5365743B78707371007E00053F4000000000000C770800000010000000087400096265616E5F6E616D65740008746573745461736B74000B6372656174655F74696D65737200126A6176612E73716C2E54696D657374616D702618D5C80153BF650200014900056E616E6F737872000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000158C377C460780000000074000B6D6574686F645F6E616D65740005746573743274000F63726F6E5F65787072657373696F6E74000E3020302F3330202A202A202A203F7400066A6F625F69647372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000274000672656D61726B74000FE697A0E58F82E695B0E6B58BE8AF95740006706172616D7370740006737461747573737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C75657871007E001B000000017870707800); COMMIT; -- ---------------------------- -- Table structure for QRTZ_LOCKS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_LOCKS`; CREATE TABLE `QRTZ_LOCKS` ( `SCHED_NAME` varchar(120) NOT NULL, `LOCK_NAME` varchar(40) NOT NULL, PRIMARY KEY (`SCHED_NAME`,`LOCK_NAME`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of QRTZ_LOCKS -- ---------------------------- BEGIN; INSERT INTO `QRTZ_LOCKS` VALUES ('RenrenScheduler', 'STATE_ACCESS'); INSERT INTO `QRTZ_LOCKS` VALUES ('RenrenScheduler', 'TRIGGER_ACCESS'); COMMIT; -- ---------------------------- -- Table structure for QRTZ_PAUSED_TRIGGER_GRPS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_PAUSED_TRIGGER_GRPS`; CREATE TABLE `QRTZ_PAUSED_TRIGGER_GRPS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_SCHEDULER_STATE -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_SCHEDULER_STATE`; CREATE TABLE `QRTZ_SCHEDULER_STATE` ( `SCHED_NAME` varchar(120) NOT NULL, `INSTANCE_NAME` varchar(200) NOT NULL, `LAST_CHECKIN_TIME` bigint(13) NOT NULL, `CHECKIN_INTERVAL` bigint(13) NOT NULL, PRIMARY KEY (`SCHED_NAME`,`INSTANCE_NAME`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of QRTZ_SCHEDULER_STATE -- ---------------------------- BEGIN; INSERT INTO `QRTZ_SCHEDULER_STATE` VALUES ('RenrenScheduler', 'yjjdick.local1539833998504', 1539834505666, 15000); INSERT INTO `QRTZ_SCHEDULER_STATE` VALUES ('SdbScheduler', '801920efd2ee1541730145340', 1541730279149, 15000); INSERT INTO `QRTZ_SCHEDULER_STATE` VALUES ('SdbScheduler', 'ef296fde8d1b1541730144235', 1541730278904, 15000); COMMIT; -- ---------------------------- -- Table structure for QRTZ_SIMPLE_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_SIMPLE_TRIGGERS`; CREATE TABLE `QRTZ_SIMPLE_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `REPEAT_COUNT` bigint(7) NOT NULL, `REPEAT_INTERVAL` bigint(12) NOT NULL, `TIMES_TRIGGERED` bigint(10) NOT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_SIMPROP_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_SIMPROP_TRIGGERS`; CREATE TABLE `QRTZ_SIMPROP_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `STR_PROP_1` varchar(512) DEFAULT NULL, `STR_PROP_2` varchar(512) DEFAULT NULL, `STR_PROP_3` varchar(512) DEFAULT NULL, `INT_PROP_1` int(11) DEFAULT NULL, `INT_PROP_2` int(11) DEFAULT NULL, `LONG_PROP_1` bigint(20) DEFAULT NULL, `LONG_PROP_2` bigint(20) DEFAULT NULL, `DEC_PROP_1` decimal(13,4) DEFAULT NULL, `DEC_PROP_2` decimal(13,4) DEFAULT NULL, `BOOL_PROP_1` varchar(1) DEFAULT NULL, `BOOL_PROP_2` varchar(1) DEFAULT NULL, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for QRTZ_TRIGGERS -- ---------------------------- DROP TABLE IF EXISTS `QRTZ_TRIGGERS`; CREATE TABLE `QRTZ_TRIGGERS` ( `SCHED_NAME` varchar(120) NOT NULL, `TRIGGER_NAME` varchar(200) NOT NULL, `TRIGGER_GROUP` varchar(200) NOT NULL, `JOB_NAME` varchar(200) NOT NULL, `JOB_GROUP` varchar(200) NOT NULL, `DESCRIPTION` varchar(250) DEFAULT NULL, `NEXT_FIRE_TIME` bigint(13) DEFAULT NULL, `PREV_FIRE_TIME` bigint(13) DEFAULT NULL, `PRIORITY` int(11) DEFAULT NULL, `TRIGGER_STATE` varchar(16) NOT NULL, `TRIGGER_TYPE` varchar(8) NOT NULL, `START_TIME` bigint(13) NOT NULL, `END_TIME` bigint(13) DEFAULT NULL, `CALENDAR_NAME` varchar(200) DEFAULT NULL, `MISFIRE_INSTR` smallint(2) DEFAULT NULL, `JOB_DATA` blob, PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`), KEY `IDX_QRTZ_T_J` (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_T_JG` (`SCHED_NAME`,`JOB_GROUP`), KEY `IDX_QRTZ_T_C` (`SCHED_NAME`,`CALENDAR_NAME`), KEY `IDX_QRTZ_T_G` (`SCHED_NAME`,`TRIGGER_GROUP`), KEY `IDX_QRTZ_T_STATE` (`SCHED_NAME`,`TRIGGER_STATE`), KEY `IDX_QRTZ_T_N_STATE` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`,`TRIGGER_STATE`), KEY `IDX_QRTZ_T_N_G_STATE` (`SCHED_NAME`,`TRIGGER_GROUP`,`TRIGGER_STATE`), KEY `IDX_QRTZ_T_NEXT_FIRE_TIME` (`SCHED_NAME`,`NEXT_FIRE_TIME`), KEY `IDX_QRTZ_T_NFT_ST` (`SCHED_NAME`,`TRIGGER_STATE`,`NEXT_FIRE_TIME`), KEY `IDX_QRTZ_T_NFT_MISFIRE` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`), KEY `IDX_QRTZ_T_NFT_ST_MISFIRE` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`,`TRIGGER_STATE`), KEY `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`,`TRIGGER_GROUP`,`TRIGGER_STATE`), CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `QRTZ_JOB_DETAILS` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of QRTZ_TRIGGERS -- ---------------------------- BEGIN; INSERT INTO `QRTZ_TRIGGERS` VALUES ('RenrenScheduler', 'TASK_1', 'DEFAULT', 'TASK_1', 'DEFAULT', NULL, 1541086200000, -1, 5, 'WAITING', 'CRON', 1541085179000, 0, NULL, 2, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B455973720018696F2E7364622E6D6F64656C2E5363686564756C654A6F62B511FC0B16515A6A02000078720021696F2E7364622E6D6F64656C2E626173652E426173655363686564756C654A6F628688DB292DD3709202000078720024636F6D2E6A66696E616C2E706C7567696E2E6163746976657265636F72642E4D6F64656CF241A000649E44110200034C0005617474727371007E00034C000A636F6E6669674E616D657400124C6A6176612F6C616E672F537472696E673B4C000A6D6F64696679466C616774000F4C6A6176612F7574696C2F5365743B78707371007E00053F4000000000000C770800000010000000087400096265616E5F6E616D65740008746573745461736B74000B6372656174655F74696D65737200126A6176612E73716C2E54696D657374616D702618D5C80153BF650200014900056E616E6F737872000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000158BAF59330780000000074000B6D6574686F645F6E616D657400047465737474000F63726F6E5F65787072657373696F6E74000E3020302F3330202A202A202A203F7400066A6F625F69647372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000174000672656D61726B74000FE69C89E58F82E695B0E6B58BE8AF95740006706172616D73740009766F6C756E74656572740006737461747573737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C75657871007E001B000000007870707800); INSERT INTO `QRTZ_TRIGGERS` VALUES ('RenrenScheduler', 'TASK_2', 'DEFAULT', 'TASK_2', 'DEFAULT', NULL, 1541086200000, -1, 5, 'PAUSED', 'CRON', 1541085179000, 0, NULL, 2, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B455973720018696F2E7364622E6D6F64656C2E5363686564756C654A6F62B511FC0B16515A6A02000078720021696F2E7364622E6D6F64656C2E626173652E426173655363686564756C654A6F628688DB292DD3709202000078720024636F6D2E6A66696E616C2E706C7567696E2E6163746976657265636F72642E4D6F64656CF241A000649E44110200034C0005617474727371007E00034C000A636F6E6669674E616D657400124C6A6176612F6C616E672F537472696E673B4C000A6D6F64696679466C616774000F4C6A6176612F7574696C2F5365743B78707371007E00053F4000000000000C770800000010000000087400096265616E5F6E616D65740008746573745461736B74000B6372656174655F74696D65737200126A6176612E73716C2E54696D657374616D702618D5C80153BF650200014900056E616E6F737872000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000158C377C460780000000074000B6D6574686F645F6E616D65740005746573743274000F63726F6E5F65787072657373696F6E74000E3020302F3330202A202A202A203F7400066A6F625F69647372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000274000672656D61726B74000FE697A0E58F82E695B0E6B58BE8AF95740006706172616D7370740006737461747573737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C75657871007E001B000000017870707800); INSERT INTO `QRTZ_TRIGGERS` VALUES ('SdbScheduler', 'TASK_1', 'DEFAULT', 'TASK_1', 'DEFAULT', NULL, 1541089800000, -1, 5, 'WAITING', 'CRON', 1541088959000, 0, NULL, 2, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B455973720018696F2E7364622E6D6F64656C2E5363686564756C654A6F62B511FC0B16515A6A02000078720021696F2E7364622E6D6F64656C2E626173652E426173655363686564756C654A6F628688DB292DD3709202000078720024636F6D2E6A66696E616C2E706C7567696E2E6163746976657265636F72642E4D6F64656CF241A000649E44110200034C0005617474727371007E00034C000A636F6E6669674E616D657400124C6A6176612F6C616E672F537472696E673B4C000A6D6F64696679466C616774000F4C6A6176612F7574696C2F5365743B78707371007E00053F4000000000000C770800000010000000087400096265616E5F6E616D65740008746573745461736B74000B6372656174655F74696D65737200126A6176612E73716C2E54696D657374616D702618D5C80153BF650200014900056E616E6F737872000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000158BAF59330780000000074000B6D6574686F645F6E616D657400047465737474000F63726F6E5F65787072657373696F6E74000E3020302F3330202A202A202A203F7400066A6F625F69647372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000174000672656D61726B74000FE69C89E58F82E695B0E6B58BE8AF95740006706172616D73740003736462740006737461747573737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C75657871007E001B000000007870707800); INSERT INTO `QRTZ_TRIGGERS` VALUES ('SdbScheduler', 'TASK_2', 'DEFAULT', 'TASK_2', 'DEFAULT', NULL, 1541089800000, -1, 5, 'PAUSED', 'CRON', 1541088959000, 0, NULL, 2, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B455973720018696F2E7364622E6D6F64656C2E5363686564756C654A6F62B511FC0B16515A6A02000078720021696F2E7364622E6D6F64656C2E626173652E426173655363686564756C654A6F628688DB292DD3709202000078720024636F6D2E6A66696E616C2E706C7567696E2E6163746976657265636F72642E4D6F64656CF241A000649E44110200034C0005617474727371007E00034C000A636F6E6669674E616D657400124C6A6176612F6C616E672F537472696E673B4C000A6D6F64696679466C616774000F4C6A6176612F7574696C2F5365743B78707371007E00053F4000000000000C770800000010000000087400096265616E5F6E616D65740008746573745461736B74000B6372656174655F74696D65737200126A6176612E73716C2E54696D657374616D702618D5C80153BF650200014900056E616E6F737872000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000158C377C460780000000074000B6D6574686F645F6E616D65740005746573743274000F63726F6E5F65787072657373696F6E74000E3020302F3330202A202A202A203F7400066A6F625F69647372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000274000672656D61726B74000FE697A0E58F82E695B0E6B58BE8AF95740006706172616D7370740006737461747573737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C75657871007E001B000000017870707800); COMMIT; -- ---------------------------- -- Table structure for area -- ---------------------------- DROP TABLE IF EXISTS `area`; CREATE TABLE `area` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `modify_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新日期', `version` bigint(20) NOT NULL DEFAULT '0', `orders` int(11) DEFAULT NULL, `full_name` longtext NOT NULL, `grade` int(11) NOT NULL, `name` varchar(255) NOT NULL, `tree_path` varchar(255) NOT NULL, `parent_id` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `ind_area_parent` (`parent_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3223 DEFAULT CHARSET=utf8 COMMENT='地区'; -- ---------------------------- -- Records of area -- ---------------------------- BEGIN; INSERT INTO `area` VALUES (1, '2015-10-19 00:03:53', '2017-01-11 14:43:59', 2, 1, '北京市', 0, '北京市', ',', NULL); INSERT INTO `area` VALUES (2, '2015-10-19 00:03:54', '2015-10-19 00:03:54', 0, 1, '北京市东城区', 1, '东城区', ',1,', 1); INSERT INTO `area` VALUES (3, '2015-10-19 00:03:55', '2015-10-19 00:03:55', 0, 2, '北京市西城区', 1, '西城区', ',1,', 1); INSERT INTO `area` VALUES (4, '2015-10-19 00:03:56', '2015-10-19 00:03:56', 0, 3, '北京市朝阳区', 1, '朝阳区', ',1,', 1); INSERT INTO `area` VALUES (5, '2015-10-19 00:03:57', '2015-10-19 00:03:57', 0, 4, '北京市丰台区', 1, '丰台区', ',1,', 1); INSERT INTO `area` VALUES (6, '2015-10-19 00:03:58', '2015-10-19 00:03:58', 0, 5, '北京市石景山区', 1, '石景山区', ',1,', 1); INSERT INTO `area` VALUES (7, '2015-10-19 00:03:59', '2015-10-19 00:03:59', 0, 6, '北京市海淀区', 1, '海淀区', ',1,', 1); INSERT INTO `area` VALUES (8, '2015-10-19 00:04:00', '2015-10-19 00:04:00', 0, 7, '北京市门头沟区', 1, '门头沟区', ',1,', 1); INSERT INTO `area` VALUES (9, '2015-10-19 00:04:01', '2015-10-19 00:04:01', 0, 8, '北京市房山区', 1, '房山区', ',1,', 1); INSERT INTO `area` VALUES (10, '2015-10-19 00:04:02', '2015-10-19 00:04:02', 0, 9, '北京市通州区', 1, '通州区', ',1,', 1); INSERT INTO `area` VALUES (11, '2015-10-19 00:04:03', '2015-10-19 00:04:03', 0, 10, '北京市顺义区', 1, '顺义区', ',1,', 1); INSERT INTO `area` VALUES (12, '2015-10-19 00:04:04', '2015-10-19 00:04:04', 0, 11, '北京市昌平区', 1, '昌平区', ',1,', 1); INSERT INTO `area` VALUES (13, '2015-10-19 00:04:05', '2015-10-19 00:04:05', 0, 12, '北京市大兴区', 1, '大兴区', ',1,', 1); INSERT INTO `area` VALUES (14, '2015-10-19 00:04:06', '2015-10-19 00:04:06', 0, 13, '北京市怀柔区', 1, '怀柔区', ',1,', 1); INSERT INTO `area` VALUES (15, '2015-10-19 00:04:07', '2015-10-19 00:04:07', 0, 14, '北京市平谷区', 1, '平谷区', ',1,', 1); INSERT INTO `area` VALUES (16, '2015-10-19 00:04:08', '2015-10-19 00:04:08', 0, 15, '北京市密云县', 1, '密云县', ',1,', 1); INSERT INTO `area` VALUES (17, '2015-10-19 00:04:09', '2015-10-19 00:04:09', 0, 16, '北京市延庆县', 1, '延庆县', ',1,', 1); INSERT INTO `area` VALUES (18, '2015-10-19 00:04:10', '2015-10-19 00:04:10', 0, 2, '天津市', 0, '天津市', ',', NULL); INSERT INTO `area` VALUES (19, '2015-10-19 00:04:11', '2015-10-19 00:04:11', 0, 1, '天津市和平区', 1, '和平区', ',18,', 18); INSERT INTO `area` VALUES (20, '2015-10-19 00:04:12', '2015-10-19 00:04:12', 0, 2, '天津市河东区', 1, '河东区', ',18,', 18); INSERT INTO `area` VALUES (21, '2015-10-19 00:04:13', '2015-10-19 00:04:13', 0, 3, '天津市河西区', 1, '河西区', ',18,', 18); INSERT INTO `area` VALUES (22, '2015-10-19 00:04:14', '2015-10-19 00:04:14', 0, 4, '天津市南开区', 1, '南开区', ',18,', 18); INSERT INTO `area` VALUES (23, '2015-10-19 00:04:15', '2015-10-19 00:04:15', 0, 5, '天津市河北区', 1, '河北区', ',18,', 18); INSERT INTO `area` VALUES (24, '2015-10-19 00:04:16', '2015-10-19 00:04:16', 0, 6, '天津市红桥区', 1, '红桥区', ',18,', 18); INSERT INTO `area` VALUES (25, '2015-10-19 00:04:17', '2015-10-19 00:04:17', 0, 7, '天津市东丽区', 1, '东丽区', ',18,', 18); INSERT INTO `area` VALUES (26, '2015-10-19 00:04:18', '2015-10-19 00:04:18', 0, 8, '天津市西青区', 1, '西青区', ',18,', 18); INSERT INTO `area` VALUES (27, '2015-10-19 00:04:19', '2015-10-19 00:04:19', 0, 9, '天津市津南区', 1, '津南区', ',18,', 18); INSERT INTO `area` VALUES (28, '2015-10-19 00:04:20', '2015-10-19 00:04:20', 0, 10, '天津市北辰区', 1, '北辰区', ',18,', 18); INSERT INTO `area` VALUES (29, '2015-10-19 00:04:21', '2015-10-19 00:04:21', 0, 11, '天津市武清区', 1, '武清区', ',18,', 18); INSERT INTO `area` VALUES (30, '2015-10-19 00:04:22', '2015-10-19 00:04:22', 0, 12, '天津市宝坻区', 1, '宝坻区', ',18,', 18); INSERT INTO `area` VALUES (31, '2015-10-19 00:04:23', '2015-10-19 00:04:23', 0, 13, '天津市滨海新区', 1, '滨海新区', ',18,', 18); INSERT INTO `area` VALUES (32, '2015-10-19 00:04:24', '2015-10-19 00:04:24', 0, 14, '天津市宁河县', 1, '宁河县', ',18,', 18); INSERT INTO `area` VALUES (33, '2015-10-19 00:04:25', '2015-10-19 00:04:25', 0, 15, '天津市静海县', 1, '静海县', ',18,', 18); INSERT INTO `area` VALUES (34, '2015-10-19 00:04:26', '2015-10-19 00:04:26', 0, 16, '天津市蓟县', 1, '蓟县', ',18,', 18); INSERT INTO `area` VALUES (35, '2015-10-19 00:04:27', '2015-10-19 00:04:27', 0, 3, '河北省', 0, '河北省', ',', NULL); INSERT INTO `area` VALUES (36, '2015-10-19 00:04:28', '2015-10-19 00:04:28', 0, 1, '河北省石家庄市', 1, '石家庄市', ',35,', 35); INSERT INTO `area` VALUES (37, '2015-10-19 00:04:29', '2015-10-19 00:04:29', 0, 1, '河北省石家庄市长安区', 2, '长安区', ',35,36,', 36); INSERT INTO `area` VALUES (38, '2015-10-19 00:04:30', '2015-10-19 00:04:30', 0, 2, '河北省石家庄市桥东区', 2, '桥东区', ',35,36,', 36); INSERT INTO `area` VALUES (39, '2015-10-19 00:04:31', '2015-10-19 00:04:31', 0, 3, '河北省石家庄市桥西区', 2, '桥西区', ',35,36,', 36); INSERT INTO `area` VALUES (40, '2015-10-19 00:04:32', '2015-10-19 00:04:32', 0, 4, '河北省石家庄市新华区', 2, '新华区', ',35,36,', 36); INSERT INTO `area` VALUES (41, '2015-10-19 00:04:33', '2015-10-19 00:04:33', 0, 5, '河北省石家庄市井陉矿区', 2, '井陉矿区', ',35,36,', 36); INSERT INTO `area` VALUES (42, '2015-10-19 00:04:34', '2015-10-19 00:04:34', 0, 6, '河北省石家庄市裕华区', 2, '裕华区', ',35,36,', 36); INSERT INTO `area` VALUES (43, '2015-10-19 00:04:35', '2015-10-19 00:04:35', 0, 7, '河北省石家庄市井陉县', 2, '井陉县', ',35,36,', 36); INSERT INTO `area` VALUES (44, '2015-10-19 00:04:36', '2015-10-19 00:04:36', 0, 8, '河北省石家庄市正定县', 2, '正定县', ',35,36,', 36); INSERT INTO `area` VALUES (45, '2015-10-19 00:04:37', '2015-10-19 00:04:37', 0, 9, '河北省石家庄市栾城县', 2, '栾城县', ',35,36,', 36); INSERT INTO `area` VALUES (46, '2015-10-19 00:04:38', '2015-10-19 00:04:38', 0, 10, '河北省石家庄市行唐县', 2, '行唐县', ',35,36,', 36); INSERT INTO `area` VALUES (47, '2015-10-19 00:04:39', '2015-10-19 00:04:39', 0, 11, '河北省石家庄市灵寿县', 2, '灵寿县', ',35,36,', 36); INSERT INTO `area` VALUES (48, '2015-10-19 00:04:40', '2015-10-19 00:04:40', 0, 12, '河北省石家庄市高邑县', 2, '高邑县', ',35,36,', 36); INSERT INTO `area` VALUES (49, '2015-10-19 00:04:41', '2015-10-19 00:04:41', 0, 13, '河北省石家庄市深泽县', 2, '深泽县', ',35,36,', 36); INSERT INTO `area` VALUES (50, '2015-10-19 00:04:42', '2015-10-19 00:04:42', 0, 14, '河北省石家庄市赞皇县', 2, '赞皇县', ',35,36,', 36); INSERT INTO `area` VALUES (51, '2015-10-19 00:04:43', '2015-10-19 00:04:43', 0, 15, '河北省石家庄市无极县', 2, '无极县', ',35,36,', 36); INSERT INTO `area` VALUES (52, '2015-10-19 00:04:44', '2015-10-19 00:04:44', 0, 16, '河北省石家庄市平山县', 2, '平山县', ',35,36,', 36); INSERT INTO `area` VALUES (53, '2015-10-19 00:04:45', '2015-10-19 00:04:45', 0, 17, '河北省石家庄市元氏县', 2, '元氏县', ',35,36,', 36); INSERT INTO `area` VALUES (54, '2015-10-19 00:04:46', '2015-10-19 00:04:46', 0, 18, '河北省石家庄市赵县', 2, '赵县', ',35,36,', 36); INSERT INTO `area` VALUES (55, '2015-10-19 00:04:47', '2015-10-19 00:04:47', 0, 19, '河北省石家庄市辛集市', 2, '辛集市', ',35,36,', 36); INSERT INTO `area` VALUES (56, '2015-10-19 00:04:48', '2015-10-19 00:04:48', 0, 20, '河北省石家庄市藁城市', 2, '藁城市', ',35,36,', 36); INSERT INTO `area` VALUES (57, '2015-10-19 00:04:49', '2015-10-19 00:04:49', 0, 21, '河北省石家庄市晋州市', 2, '晋州市', ',35,36,', 36); INSERT INTO `area` VALUES (58, '2015-10-19 00:04:50', '2015-10-19 00:04:50', 0, 22, '河北省石家庄市新乐市', 2, '新乐市', ',35,36,', 36); INSERT INTO `area` VALUES (59, '2015-10-19 00:04:51', '2015-10-19 00:04:51', 0, 23, '河北省石家庄市鹿泉市', 2, '鹿泉市', ',35,36,', 36); INSERT INTO `area` VALUES (60, '2015-10-19 00:04:52', '2015-10-19 00:04:52', 0, 2, '河北省唐山市', 1, '唐山市', ',35,', 35); INSERT INTO `area` VALUES (61, '2015-10-19 00:04:53', '2015-10-19 00:04:53', 0, 1, '河北省唐山市路南区', 2, '路南区', ',35,60,', 60); INSERT INTO `area` VALUES (62, '2015-10-19 00:04:54', '2015-10-19 00:04:54', 0, 2, '河北省唐山市路北区', 2, '路北区', ',35,60,', 60); INSERT INTO `area` VALUES (63, '2015-10-19 00:04:55', '2015-10-19 00:04:55', 0, 3, '河北省唐山市古冶区', 2, '古冶区', ',35,60,', 60); INSERT INTO `area` VALUES (64, '2015-10-19 00:04:56', '2015-10-19 00:04:56', 0, 4, '河北省唐山市开平区', 2, '开平区', ',35,60,', 60); INSERT INTO `area` VALUES (65, '2015-10-19 00:04:57', '2015-10-19 00:04:57', 0, 5, '河北省唐山市丰南区', 2, '丰南区', ',35,60,', 60); INSERT INTO `area` VALUES (66, '2015-10-19 00:04:58', '2015-10-19 00:04:58', 0, 6, '河北省唐山市丰润区', 2, '丰润区', ',35,60,', 60); INSERT INTO `area` VALUES (67, '2015-10-19 00:04:59', '2015-10-19 00:04:59', 0, 7, '河北省唐山市曹妃甸区', 2, '曹妃甸区', ',35,60,', 60); INSERT INTO `area` VALUES (68, '2015-10-19 00:05:00', '2015-10-19 00:05:00', 0, 8, '河北省唐山市滦县', 2, '滦县', ',35,60,', 60); INSERT INTO `area` VALUES (69, '2015-10-19 00:05:01', '2015-10-19 00:05:01', 0, 9, '河北省唐山市滦南县', 2, '滦南县', ',35,60,', 60); INSERT INTO `area` VALUES (70, '2015-10-19 00:05:02', '2015-10-19 00:05:02', 0, 10, '河北省唐山市乐亭县', 2, '乐亭县', ',35,60,', 60); INSERT INTO `area` VALUES (71, '2015-10-19 00:05:03', '2015-10-19 00:05:03', 0, 11, '河北省唐山市迁西县', 2, '迁西县', ',35,60,', 60); INSERT INTO `area` VALUES (72, '2015-10-19 00:05:04', '2015-10-19 00:05:04', 0, 12, '河北省唐山市玉田县', 2, '玉田县', ',35,60,', 60); INSERT INTO `area` VALUES (73, '2015-10-19 00:05:05', '2015-10-19 00:05:05', 0, 13, '河北省唐山市遵化市', 2, '遵化市', ',35,60,', 60); INSERT INTO `area` VALUES (74, '2015-10-19 00:05:06', '2015-10-19 00:05:06', 0, 14, '河北省唐山市迁安市', 2, '迁安市', ',35,60,', 60); INSERT INTO `area` VALUES (75, '2015-10-19 00:05:07', '2015-10-19 00:05:07', 0, 3, '河北省秦皇岛市', 1, '秦皇岛市', ',35,', 35); INSERT INTO `area` VALUES (76, '2015-10-19 00:05:08', '2015-10-19 00:05:08', 0, 1, '河北省秦皇岛市海港区', 2, '海港区', ',35,75,', 75); INSERT INTO `area` VALUES (77, '2015-10-19 00:05:09', '2015-10-19 00:05:09', 0, 2, '河北省秦皇岛市山海关区', 2, '山海关区', ',35,75,', 75); INSERT INTO `area` VALUES (78, '2015-10-19 00:05:10', '2015-10-19 00:05:10', 0, 3, '河北省秦皇岛市北戴河区', 2, '北戴河区', ',35,75,', 75); INSERT INTO `area` VALUES (79, '2015-10-19 00:05:11', '2015-10-19 00:05:11', 0, 4, '河北省秦皇岛市青龙满族自治县', 2, '青龙满族自治县', ',35,75,', 75); INSERT INTO `area` VALUES (80, '2015-10-19 00:05:12', '2015-10-19 00:05:12', 0, 5, '河北省秦皇岛市昌黎县', 2, '昌黎县', ',35,75,', 75); INSERT INTO `area` VALUES (81, '2015-10-19 00:05:13', '2015-10-19 00:05:13', 0, 6, '河北省秦皇岛市抚宁县', 2, '抚宁县', ',35,75,', 75); INSERT INTO `area` VALUES (82, '2015-10-19 00:05:14', '2015-10-19 00:05:14', 0, 7, '河北省秦皇岛市卢龙县', 2, '卢龙县', ',35,75,', 75); INSERT INTO `area` VALUES (83, '2015-10-19 00:05:15', '2015-10-19 00:05:15', 0, 4, '河北省邯郸市', 1, '邯郸市', ',35,', 35); INSERT INTO `area` VALUES (84, '2015-10-19 00:05:16', '2015-10-19 00:05:16', 0, 1, '河北省邯郸市邯山区', 2, '邯山区', ',35,83,', 83); INSERT INTO `area` VALUES (85, '2015-10-19 00:05:17', '2015-10-19 00:05:17', 0, 2, '河北省邯郸市丛台区', 2, '丛台区', ',35,83,', 83); INSERT INTO `area` VALUES (86, '2015-10-19 00:05:18', '2015-10-19 00:05:18', 0, 3, '河北省邯郸市复兴区', 2, '复兴区', ',35,83,', 83); INSERT INTO `area` VALUES (87, '2015-10-19 00:05:19', '2015-10-19 00:05:19', 0, 4, '河北省邯郸市峰峰矿区', 2, '峰峰矿区', ',35,83,', 83); INSERT INTO `area` VALUES (88, '2015-10-19 00:05:20', '2015-10-19 00:05:20', 0, 5, '河北省邯郸市邯郸县', 2, '邯郸县', ',35,83,', 83); INSERT INTO `area` VALUES (89, '2015-10-19 00:05:21', '2015-10-19 00:05:21', 0, 6, '河北省邯郸市临漳县', 2, '临漳县', ',35,83,', 83); INSERT INTO `area` VALUES (90, '2015-10-19 00:05:22', '2015-10-19 00:05:22', 0, 7, '河北省邯郸市成安县', 2, '成安县', ',35,83,', 83); INSERT INTO `area` VALUES (91, '2015-10-19 00:05:23', '2015-10-19 00:05:23', 0, 8, '河北省邯郸市大名县', 2, '大名县', ',35,83,', 83); INSERT INTO `area` VALUES (92, '2015-10-19 00:05:24', '2015-10-19 00:05:24', 0, 9, '河北省邯郸市涉县', 2, '涉县', ',35,83,', 83); INSERT INTO `area` VALUES (93, '2015-10-19 00:05:25', '2015-10-19 00:05:25', 0, 10, '河北省邯郸市磁县', 2, '磁县', ',35,83,', 83); INSERT INTO `area` VALUES (94, '2015-10-19 00:05:26', '2015-10-19 00:05:26', 0, 11, '河北省邯郸市肥乡县', 2, '肥乡县', ',35,83,', 83); INSERT INTO `area` VALUES (95, '2015-10-19 00:05:27', '2015-10-19 00:05:27', 0, 12, '河北省邯郸市永年县', 2, '永年县', ',35,83,', 83); INSERT INTO `area` VALUES (96, '2015-10-19 00:05:28', '2015-10-19 00:05:28', 0, 13, '河北省邯郸市邱县', 2, '邱县', ',35,83,', 83); INSERT INTO `area` VALUES (97, '2015-10-19 00:05:29', '2015-10-19 00:05:29', 0, 14, '河北省邯郸市鸡泽县', 2, '鸡泽县', ',35,83,', 83); INSERT INTO `area` VALUES (98, '2015-10-19 00:05:30', '2015-10-19 00:05:30', 0, 15, '河北省邯郸市广平县', 2, '广平县', ',35,83,', 83); INSERT INTO `area` VALUES (99, '2015-10-19 00:05:31', '2015-10-19 00:05:31', 0, 16, '河北省邯郸市馆陶县', 2, '馆陶县', ',35,83,', 83); INSERT INTO `area` VALUES (100, '2015-10-19 00:05:32', '2015-10-19 00:05:32', 0, 17, '河北省邯郸市魏县', 2, '魏县', ',35,83,', 83); INSERT INTO `area` VALUES (101, '2015-10-19 00:05:33', '2015-10-19 00:05:33', 0, 18, '河北省邯郸市曲周县', 2, '曲周县', ',35,83,', 83); INSERT INTO `area` VALUES (102, '2015-10-19 00:05:34', '2015-10-19 00:05:34', 0, 19, '河北省邯郸市武安市', 2, '武安市', ',35,83,', 83); INSERT INTO `area` VALUES (103, '2015-10-19 00:05:35', '2015-10-19 00:05:35', 0, 5, '河北省邢台市', 1, '邢台市', ',35,', 35); INSERT INTO `area` VALUES (104, '2015-10-19 00:05:36', '2015-10-19 00:05:36', 0, 1, '河北省邢台市桥东区', 2, '桥东区', ',35,103,', 103); INSERT INTO `area` VALUES (105, '2015-10-19 00:05:37', '2015-10-19 00:05:37', 0, 2, '河北省邢台市桥西区', 2, '桥西区', ',35,103,', 103); INSERT INTO `area` VALUES (106, '2015-10-19 00:05:38', '2015-10-19 00:05:38', 0, 3, '河北省邢台市邢台县', 2, '邢台县', ',35,103,', 103); INSERT INTO `area` VALUES (107, '2015-10-19 00:05:39', '2015-10-19 00:05:39', 0, 4, '河北省邢台市临城县', 2, '临城县', ',35,103,', 103); INSERT INTO `area` VALUES (108, '2015-10-19 00:05:40', '2015-10-19 00:05:40', 0, 5, '河北省邢台市内丘县', 2, '内丘县', ',35,103,', 103); INSERT INTO `area` VALUES (109, '2015-10-19 00:05:41', '2015-10-19 00:05:41', 0, 6, '河北省邢台市柏乡县', 2, '柏乡县', ',35,103,', 103); INSERT INTO `area` VALUES (110, '2015-10-19 00:05:42', '2015-10-19 00:05:42', 0, 7, '河北省邢台市隆尧县', 2, '隆尧县', ',35,103,', 103); INSERT INTO `area` VALUES (111, '2015-10-19 00:05:43', '2015-10-19 00:05:43', 0, 8, '河北省邢台市任县', 2, '任县', ',35,103,', 103); INSERT INTO `area` VALUES (112, '2015-10-19 00:05:44', '2015-10-19 00:05:44', 0, 9, '河北省邢台市南和县', 2, '南和县', ',35,103,', 103); INSERT INTO `area` VALUES (113, '2015-10-19 00:05:45', '2015-10-19 00:05:45', 0, 10, '河北省邢台市宁晋县', 2, '宁晋县', ',35,103,', 103); INSERT INTO `area` VALUES (114, '2015-10-19 00:05:46', '2015-10-19 00:05:46', 0, 11, '河北省邢台市巨鹿县', 2, '巨鹿县', ',35,103,', 103); INSERT INTO `area` VALUES (115, '2015-10-19 00:05:47', '2015-10-19 00:05:47', 0, 12, '河北省邢台市新河县', 2, '新河县', ',35,103,', 103); INSERT INTO `area` VALUES (116, '2015-10-19 00:05:48', '2015-10-19 00:05:48', 0, 13, '河北省邢台市广宗县', 2, '广宗县', ',35,103,', 103); INSERT INTO `area` VALUES (117, '2015-10-19 00:05:49', '2015-10-19 00:05:49', 0, 14, '河北省邢台市平乡县', 2, '平乡县', ',35,103,', 103); INSERT INTO `area` VALUES (118, '2015-10-19 00:05:50', '2015-10-19 00:05:50', 0, 15, '河北省邢台市威县', 2, '威县', ',35,103,', 103); INSERT INTO `area` VALUES (119, '2015-10-19 00:05:51', '2015-10-19 00:05:51', 0, 16, '河北省邢台市清河县', 2, '清河县', ',35,103,', 103); INSERT INTO `area` VALUES (120, '2015-10-19 00:05:52', '2015-10-19 00:05:52', 0, 17, '河北省邢台市临西县', 2, '临西县', ',35,103,', 103); INSERT INTO `area` VALUES (121, '2015-10-19 00:05:53', '2015-10-19 00:05:53', 0, 18, '河北省邢台市南宫市', 2, '南宫市', ',35,103,', 103); INSERT INTO `area` VALUES (122, '2015-10-19 00:05:54', '2015-10-19 00:05:54', 0, 19, '河北省邢台市沙河市', 2, '沙河市', ',35,103,', 103); INSERT INTO `area` VALUES (123, '2015-10-19 00:05:55', '2015-10-19 00:05:55', 0, 6, '河北省保定市', 1, '保定市', ',35,', 35); INSERT INTO `area` VALUES (124, '2015-10-19 00:05:56', '2015-10-19 00:05:56', 0, 1, '河北省保定市新市区', 2, '新市区', ',35,123,', 123); INSERT INTO `area` VALUES (125, '2015-10-19 00:05:57', '2015-10-19 00:05:57', 0, 2, '河北省保定市北市区', 2, '北市区', ',35,123,', 123); INSERT INTO `area` VALUES (126, '2015-10-19 00:05:58', '2015-10-19 00:05:58', 0, 3, '河北省保定市南市区', 2, '南市区', ',35,123,', 123); INSERT INTO `area` VALUES (127, '2015-10-19 00:05:59', '2015-10-19 00:05:59', 0, 4, '河北省保定市满城县', 2, '满城县', ',35,123,', 123); INSERT INTO `area` VALUES (128, '2015-10-19 00:06:00', '2015-10-19 00:06:00', 0, 5, '河北省保定市清苑县', 2, '清苑县', ',35,123,', 123); INSERT INTO `area` VALUES (129, '2015-10-19 00:06:01', '2015-10-19 00:06:01', 0, 6, '河北省保定市涞水县', 2, '涞水县', ',35,123,', 123); INSERT INTO `area` VALUES (130, '2015-10-19 00:06:02', '2015-10-19 00:06:02', 0, 7, '河北省保定市阜平县', 2, '阜平县', ',35,123,', 123); INSERT INTO `area` VALUES (131, '2015-10-19 00:06:03', '2015-10-19 00:06:03', 0, 8, '河北省保定市徐水县', 2, '徐水县', ',35,123,', 123); INSERT INTO `area` VALUES (132, '2015-10-19 00:06:04', '2015-10-19 00:06:04', 0, 9, '河北省保定市定兴县', 2, '定兴县', ',35,123,', 123); INSERT INTO `area` VALUES (133, '2015-10-19 00:06:05', '2015-10-19 00:06:05', 0, 10, '河北省保定市唐县', 2, '唐县', ',35,123,', 123); INSERT INTO `area` VALUES (134, '2015-10-19 00:06:06', '2015-10-19 00:06:06', 0, 11, '河北省保定市高阳县', 2, '高阳县', ',35,123,', 123); INSERT INTO `area` VALUES (135, '2015-10-19 00:06:07', '2015-10-19 00:06:07', 0, 12, '河北省保定市容城县', 2, '容城县', ',35,123,', 123); INSERT INTO `area` VALUES (136, '2015-10-19 00:06:08', '2015-10-19 00:06:08', 0, 13, '河北省保定市涞源县', 2, '涞源县', ',35,123,', 123); INSERT INTO `area` VALUES (137, '2015-10-19 00:06:09', '2015-10-19 00:06:09', 0, 14, '河北省保定市望都县', 2, '望都县', ',35,123,', 123); INSERT INTO `area` VALUES (138, '2015-10-19 00:06:10', '2015-10-19 00:06:10', 0, 15, '河北省保定市安新县', 2, '安新县', ',35,123,', 123); INSERT INTO `area` VALUES (139, '2015-10-19 00:06:11', '2015-10-19 00:06:11', 0, 16, '河北省保定市易县', 2, '易县', ',35,123,', 123); INSERT INTO `area` VALUES (140, '2015-10-19 00:06:12', '2015-10-19 00:06:12', 0, 17, '河北省保定市曲阳县', 2, '曲阳县', ',35,123,', 123); INSERT INTO `area` VALUES (141, '2015-10-19 00:06:13', '2015-10-19 00:06:13', 0, 18, '河北省保定市蠡县', 2, '蠡县', ',35,123,', 123); INSERT INTO `area` VALUES (142, '2015-10-19 00:06:14', '2015-10-19 00:06:14', 0, 19, '河北省保定市顺平县', 2, '顺平县', ',35,123,', 123); INSERT INTO `area` VALUES (143, '2015-10-19 00:06:15', '2015-10-19 00:06:15', 0, 20, '河北省保定市博野县', 2, '博野县', ',35,123,', 123); INSERT INTO `area` VALUES (144, '2015-10-19 00:06:16', '2015-10-19 00:06:16', 0, 21, '河北省保定市雄县', 2, '雄县', ',35,123,', 123); INSERT INTO `area` VALUES (145, '2015-10-19 00:06:17', '2015-10-19 00:06:17', 0, 22, '河北省保定市涿州市', 2, '涿州市', ',35,123,', 123); INSERT INTO `area` VALUES (146, '2015-10-19 00:06:18', '2015-10-19 00:06:18', 0, 23, '河北省保定市定州市', 2, '定州市', ',35,123,', 123); INSERT INTO `area` VALUES (147, '2015-10-19 00:06:19', '2015-10-19 00:06:19', 0, 24, '河北省保定市安国市', 2, '安国市', ',35,123,', 123); INSERT INTO `area` VALUES (148, '2015-10-19 00:06:20', '2015-10-19 00:06:20', 0, 25, '河北省保定市高碑店市', 2, '高碑店市', ',35,123,', 123); INSERT INTO `area` VALUES (149, '2015-10-19 00:06:21', '2015-10-19 00:06:21', 0, 7, '河北省张家口市', 1, '张家口市', ',35,', 35); INSERT INTO `area` VALUES (150, '2015-10-19 00:06:22', '2015-10-19 00:06:22', 0, 1, '河北省张家口市桥东区', 2, '桥东区', ',35,149,', 149); INSERT INTO `area` VALUES (151, '2015-10-19 00:06:23', '2015-10-19 00:06:23', 0, 2, '河北省张家口市桥西区', 2, '桥西区', ',35,149,', 149); INSERT INTO `area` VALUES (152, '2015-10-19 00:06:24', '2015-10-19 00:06:24', 0, 3, '河北省张家口市宣化区', 2, '宣化区', ',35,149,', 149); INSERT INTO `area` VALUES (153, '2015-10-19 00:06:25', '2015-10-19 00:06:25', 0, 4, '河北省张家口市下花园区', 2, '下花园区', ',35,149,', 149); INSERT INTO `area` VALUES (154, '2015-10-19 00:06:26', '2015-10-19 00:06:26', 0, 5, '河北省张家口市宣化县', 2, '宣化县', ',35,149,', 149); INSERT INTO `area` VALUES (155, '2015-10-19 00:06:27', '2015-10-19 00:06:27', 0, 6, '河北省张家口市张北县', 2, '张北县', ',35,149,', 149); INSERT INTO `area` VALUES (156, '2015-10-19 00:06:28', '2015-10-19 00:06:28', 0, 7, '河北省张家口市康保县', 2, '康保县', ',35,149,', 149); INSERT INTO `area` VALUES (157, '2015-10-19 00:06:29', '2015-10-19 00:06:29', 0, 8, '河北省张家口市沽源县', 2, '沽源县', ',35,149,', 149); INSERT INTO `area` VALUES (158, '2015-10-19 00:06:30', '2015-10-19 00:06:30', 0, 9, '河北省张家口市尚义县', 2, '尚义县', ',35,149,', 149); INSERT INTO `area` VALUES (159, '2015-10-19 00:06:31', '2015-10-19 00:06:31', 0, 10, '河北省张家口市蔚县', 2, '蔚县', ',35,149,', 149); INSERT INTO `area` VALUES (160, '2015-10-19 00:06:32', '2015-10-19 00:06:32', 0, 11, '河北省张家口市阳原县', 2, '阳原县', ',35,149,', 149); INSERT INTO `area` VALUES (161, '2015-10-19 00:06:33', '2015-10-19 00:06:33', 0, 12, '河北省张家口市怀安县', 2, '怀安县', ',35,149,', 149); INSERT INTO `area` VALUES (162, '2015-10-19 00:06:34', '2015-10-19 00:06:34', 0, 13, '河北省张家口市万全县', 2, '万全县', ',35,149,', 149); INSERT INTO `area` VALUES (163, '2015-10-19 00:06:35', '2015-10-19 00:06:35', 0, 14, '河北省张家口市怀来县', 2, '怀来县', ',35,149,', 149); INSERT INTO `area` VALUES (164, '2015-10-19 00:06:36', '2015-10-19 00:06:36', 0, 15, '河北省张家口市涿鹿县', 2, '涿鹿县', ',35,149,', 149); INSERT INTO `area` VALUES (165, '2015-10-19 00:06:37', '2015-10-19 00:06:37', 0, 16, '河北省张家口市赤城县', 2, '赤城县', ',35,149,', 149); INSERT INTO `area` VALUES (166, '2015-10-19 00:06:38', '2015-10-19 00:06:38', 0, 17, '河北省张家口市崇礼县', 2, '崇礼县', ',35,149,', 149); INSERT INTO `area` VALUES (167, '2015-10-19 00:06:39', '2015-10-19 00:06:39', 0, 8, '河北省承德市', 1, '承德市', ',35,', 35); INSERT INTO `area` VALUES (168, '2015-10-19 00:06:40', '2015-10-19 00:06:40', 0, 1, '河北省承德市双桥区', 2, '双桥区', ',35,167,', 167); INSERT INTO `area` VALUES (169, '2015-10-19 00:06:41', '2015-10-19 00:06:41', 0, 2, '河北省承德市双滦区', 2, '双滦区', ',35,167,', 167); INSERT INTO `area` VALUES (170, '2015-10-19 00:06:42', '2015-10-19 00:06:42', 0, 3, '河北省承德市鹰手营子矿区', 2, '鹰手营子矿区', ',35,167,', 167); INSERT INTO `area` VALUES (171, '2015-10-19 00:06:43', '2015-10-19 00:06:43', 0, 4, '河北省承德市承德县', 2, '承德县', ',35,167,', 167); INSERT INTO `area` VALUES (172, '2015-10-19 00:06:44', '2015-10-19 00:06:44', 0, 5, '河北省承德市兴隆县', 2, '兴隆县', ',35,167,', 167); INSERT INTO `area` VALUES (173, '2015-10-19 00:06:45', '2015-10-19 00:06:45', 0, 6, '河北省承德市平泉县', 2, '平泉县', ',35,167,', 167); INSERT INTO `area` VALUES (174, '2015-10-19 00:06:46', '2015-10-19 00:06:46', 0, 7, '河北省承德市滦平县', 2, '滦平县', ',35,167,', 167); INSERT INTO `area` VALUES (175, '2015-10-19 00:06:47', '2015-10-19 00:06:47', 0, 8, '河北省承德市隆化县', 2, '隆化县', ',35,167,', 167); INSERT INTO `area` VALUES (176, '2015-10-19 00:06:48', '2015-10-19 00:06:48', 0, 9, '河北省承德市丰宁满族自治县', 2, '丰宁满族自治县', ',35,167,', 167); INSERT INTO `area` VALUES (177, '2015-10-19 00:06:49', '2015-10-19 00:06:49', 0, 10, '河北省承德市宽城满族自治县', 2, '宽城满族自治县', ',35,167,', 167); INSERT INTO `area` VALUES (178, '2015-10-19 00:06:50', '2015-10-19 00:06:50', 0, 11, '河北省承德市围场满族蒙古族自治县', 2, '围场满族蒙古族自治县', ',35,167,', 167); INSERT INTO `area` VALUES (179, '2015-10-19 00:06:51', '2015-10-19 00:06:51', 0, 9, '河北省沧州市', 1, '沧州市', ',35,', 35); INSERT INTO `area` VALUES (180, '2015-10-19 00:06:52', '2015-10-19 00:06:52', 0, 1, '河北省沧州市新华区', 2, '新华区', ',35,179,', 179); INSERT INTO `area` VALUES (181, '2015-10-19 00:06:53', '2015-10-19 00:06:53', 0, 2, '河北省沧州市运河区', 2, '运河区', ',35,179,', 179); INSERT INTO `area` VALUES (182, '2015-10-19 00:06:54', '2015-10-19 00:06:54', 0, 3, '河北省沧州市沧县', 2, '沧县', ',35,179,', 179); INSERT INTO `area` VALUES (183, '2015-10-19 00:06:55', '2015-10-19 00:06:55', 0, 4, '河北省沧州市青县', 2, '青县', ',35,179,', 179); INSERT INTO `area` VALUES (184, '2015-10-19 00:06:56', '2015-10-19 00:06:56', 0, 5, '河北省沧州市东光县', 2, '东光县', ',35,179,', 179); INSERT INTO `area` VALUES (185, '2015-10-19 00:06:57', '2015-10-19 00:06:57', 0, 6, '河北省沧州市海兴县', 2, '海兴县', ',35,179,', 179); INSERT INTO `area` VALUES (186, '2015-10-19 00:06:58', '2015-10-19 00:06:58', 0, 7, '河北省沧州市盐山县', 2, '盐山县', ',35,179,', 179); INSERT INTO `area` VALUES (187, '2015-10-19 00:06:59', '2015-10-19 00:06:59', 0, 8, '河北省沧州市肃宁县', 2, '肃宁县', ',35,179,', 179); INSERT INTO `area` VALUES (188, '2015-10-19 00:07:00', '2015-10-19 00:07:00', 0, 9, '河北省沧州市南皮县', 2, '南皮县', ',35,179,', 179); INSERT INTO `area` VALUES (189, '2015-10-19 00:07:01', '2015-10-19 00:07:01', 0, 10, '河北省沧州市吴桥县', 2, '吴桥县', ',35,179,', 179); INSERT INTO `area` VALUES (190, '2015-10-19 00:07:02', '2015-10-19 00:07:02', 0, 11, '河北省沧州市献县', 2, '献县', ',35,179,', 179); INSERT INTO `area` VALUES (191, '2015-10-19 00:07:03', '2015-10-19 00:07:03', 0, 12, '河北省沧州市孟村回族自治县', 2, '孟村回族自治县', ',35,179,', 179); INSERT INTO `area` VALUES (192, '2015-10-19 00:07:04', '2015-10-19 00:07:04', 0, 13, '河北省沧州市泊头市', 2, '泊头市', ',35,179,', 179); INSERT INTO `area` VALUES (193, '2015-10-19 00:07:05', '2015-10-19 00:07:05', 0, 14, '河北省沧州市任丘市', 2, '任丘市', ',35,179,', 179); INSERT INTO `area` VALUES (194, '2015-10-19 00:07:06', '2015-10-19 00:07:06', 0, 15, '河北省沧州市黄骅市', 2, '黄骅市', ',35,179,', 179); INSERT INTO `area` VALUES (195, '2015-10-19 00:07:07', '2015-10-19 00:07:07', 0, 16, '河北省沧州市河间市', 2, '河间市', ',35,179,', 179); INSERT INTO `area` VALUES (196, '2015-10-19 00:07:08', '2015-10-19 00:07:08', 0, 10, '河北省廊坊市', 1, '廊坊市', ',35,', 35); INSERT INTO `area` VALUES (197, '2015-10-19 00:07:09', '2015-10-19 00:07:09', 0, 1, '河北省廊坊市安次区', 2, '安次区', ',35,196,', 196); INSERT INTO `area` VALUES (198, '2015-10-19 00:07:10', '2015-10-19 00:07:10', 0, 2, '河北省廊坊市广阳区', 2, '广阳区', ',35,196,', 196); INSERT INTO `area` VALUES (199, '2015-10-19 00:07:11', '2015-10-19 00:07:11', 0, 3, '河北省廊坊市固安县', 2, '固安县', ',35,196,', 196); INSERT INTO `area` VALUES (200, '2015-10-19 00:07:12', '2015-10-19 00:07:12', 0, 4, '河北省廊坊市永清县', 2, '永清县', ',35,196,', 196); INSERT INTO `area` VALUES (201, '2015-10-19 00:07:13', '2015-10-19 00:07:13', 0, 5, '河北省廊坊市香河县', 2, '香河县', ',35,196,', 196); INSERT INTO `area` VALUES (202, '2015-10-19 00:07:14', '2015-10-19 00:07:14', 0, 6, '河北省廊坊市大城县', 2, '大城县', ',35,196,', 196); INSERT INTO `area` VALUES (203, '2015-10-19 00:07:15', '2015-10-19 00:07:15', 0, 7, '河北省廊坊市文安县', 2, '文安县', ',35,196,', 196); INSERT INTO `area` VALUES (204, '2015-10-19 00:07:16', '2015-10-19 00:07:16', 0, 8, '河北省廊坊市大厂回族自治县', 2, '大厂回族自治县', ',35,196,', 196); INSERT INTO `area` VALUES (205, '2015-10-19 00:07:17', '2015-10-19 00:07:17', 0, 9, '河北省廊坊市霸州市', 2, '霸州市', ',35,196,', 196); INSERT INTO `area` VALUES (206, '2015-10-19 00:07:18', '2015-10-19 00:07:18', 0, 10, '河北省廊坊市三河市', 2, '三河市', ',35,196,', 196); INSERT INTO `area` VALUES (207, '2015-10-19 00:07:19', '2015-10-19 00:07:19', 0, 11, '河北省衡水市', 1, '衡水市', ',35,', 35); INSERT INTO `area` VALUES (208, '2015-10-19 00:07:20', '2015-10-19 00:07:20', 0, 1, '河北省衡水市桃城区', 2, '桃城区', ',35,207,', 207); INSERT INTO `area` VALUES (209, '2015-10-19 00:07:21', '2015-10-19 00:07:21', 0, 2, '河北省衡水市枣强县', 2, '枣强县', ',35,207,', 207); INSERT INTO `area` VALUES (210, '2015-10-19 00:07:22', '2015-10-19 00:07:22', 0, 3, '河北省衡水市武邑县', 2, '武邑县', ',35,207,', 207); INSERT INTO `area` VALUES (211, '2015-10-19 00:07:23', '2015-10-19 00:07:23', 0, 4, '河北省衡水市武强县', 2, '武强县', ',35,207,', 207); INSERT INTO `area` VALUES (212, '2015-10-19 00:07:24', '2015-10-19 00:07:24', 0, 5, '河北省衡水市饶阳县', 2, '饶阳县', ',35,207,', 207); INSERT INTO `area` VALUES (213, '2015-10-19 00:07:25', '2015-10-19 00:07:25', 0, 6, '河北省衡水市安平县', 2, '安平县', ',35,207,', 207); INSERT INTO `area` VALUES (214, '2015-10-19 00:07:26', '2015-10-19 00:07:26', 0, 7, '河北省衡水市故城县', 2, '故城县', ',35,207,', 207); INSERT INTO `area` VALUES (215, '2015-10-19 00:07:27', '2015-10-19 00:07:27', 0, 8, '河北省衡水市景县', 2, '景县', ',35,207,', 207); INSERT INTO `area` VALUES (216, '2015-10-19 00:07:28', '2015-10-19 00:07:28', 0, 9, '河北省衡水市阜城县', 2, '阜城县', ',35,207,', 207); INSERT INTO `area` VALUES (217, '2015-10-19 00:07:29', '2015-10-19 00:07:29', 0, 10, '河北省衡水市冀州市', 2, '冀州市', ',35,207,', 207); INSERT INTO `area` VALUES (218, '2015-10-19 00:07:30', '2015-10-19 00:07:30', 0, 11, '河北省衡水市深州市', 2, '深州市', ',35,207,', 207); INSERT INTO `area` VALUES (219, '2015-10-19 00:07:31', '2015-10-19 00:07:31', 0, 4, '山西省', 0, '山西省', ',', NULL); INSERT INTO `area` VALUES (220, '2015-10-19 00:07:32', '2015-10-19 00:07:32', 0, 1, '山西省太原市', 1, '太原市', ',219,', 219); INSERT INTO `area` VALUES (221, '2015-10-19 00:07:33', '2015-10-19 00:07:33', 0, 1, '山西省太原市小店区', 2, '小店区', ',219,220,', 220); INSERT INTO `area` VALUES (222, '2015-10-19 00:07:34', '2015-10-19 00:07:34', 0, 2, '山西省太原市迎泽区', 2, '迎泽区', ',219,220,', 220); INSERT INTO `area` VALUES (223, '2015-10-19 00:07:35', '2015-10-19 00:07:35', 0, 3, '山西省太原市杏花岭区', 2, '杏花岭区', ',219,220,', 220); INSERT INTO `area` VALUES (224, '2015-10-19 00:07:36', '2015-10-19 00:07:36', 0, 4, '山西省太原市尖草坪区', 2, '尖草坪区', ',219,220,', 220); INSERT INTO `area` VALUES (225, '2015-10-19 00:07:37', '2015-10-19 00:07:37', 0, 5, '山西省太原市万柏林区', 2, '万柏林区', ',219,220,', 220); INSERT INTO `area` VALUES (226, '2015-10-19 00:07:38', '2015-10-19 00:07:38', 0, 6, '山西省太原市晋源区', 2, '晋源区', ',219,220,', 220); INSERT INTO `area` VALUES (227, '2015-10-19 00:07:39', '2015-10-19 00:07:39', 0, 7, '山西省太原市清徐县', 2, '清徐县', ',219,220,', 220); INSERT INTO `area` VALUES (228, '2015-10-19 00:07:40', '2015-10-19 00:07:40', 0, 8, '山西省太原市阳曲县', 2, '阳曲县', ',219,220,', 220); INSERT INTO `area` VALUES (229, '2015-10-19 00:07:41', '2015-10-19 00:07:41', 0, 9, '山西省太原市娄烦县', 2, '娄烦县', ',219,220,', 220); INSERT INTO `area` VALUES (230, '2015-10-19 00:07:42', '2015-10-19 00:07:42', 0, 10, '山西省太原市古交市', 2, '古交市', ',219,220,', 220); INSERT INTO `area` VALUES (231, '2015-10-19 00:07:43', '2015-10-19 00:07:43', 0, 2, '山西省大同市', 1, '大同市', ',219,', 219); INSERT INTO `area` VALUES (232, '2015-10-19 00:07:44', '2015-10-19 00:07:44', 0, 1, '山西省大同市城区', 2, '城区', ',219,231,', 231); INSERT INTO `area` VALUES (233, '2015-10-19 00:07:45', '2015-10-19 00:07:45', 0, 2, '山西省大同市矿区', 2, '矿区', ',219,231,', 231); INSERT INTO `area` VALUES (234, '2015-10-19 00:07:46', '2015-10-19 00:07:46', 0, 3, '山西省大同市南郊区', 2, '南郊区', ',219,231,', 231); INSERT INTO `area` VALUES (235, '2015-10-19 00:07:47', '2015-10-19 00:07:47', 0, 4, '山西省大同市新荣区', 2, '新荣区', ',219,231,', 231); INSERT INTO `area` VALUES (236, '2015-10-19 00:07:48', '2015-10-19 00:07:48', 0, 5, '山西省大同市阳高县', 2, '阳高县', ',219,231,', 231); INSERT INTO `area` VALUES (237, '2015-10-19 00:07:49', '2015-10-19 00:07:49', 0, 6, '山西省大同市天镇县', 2, '天镇县', ',219,231,', 231); INSERT INTO `area` VALUES (238, '2015-10-19 00:07:50', '2015-10-19 00:07:50', 0, 7, '山西省大同市广灵县', 2, '广灵县', ',219,231,', 231); INSERT INTO `area` VALUES (239, '2015-10-19 00:07:51', '2015-10-19 00:07:51', 0, 8, '山西省大同市灵丘县', 2, '灵丘县', ',219,231,', 231); INSERT INTO `area` VALUES (240, '2015-10-19 00:07:52', '2015-10-19 00:07:52', 0, 9, '山西省大同市浑源县', 2, '浑源县', ',219,231,', 231); INSERT INTO `area` VALUES (241, '2015-10-19 00:07:53', '2015-10-19 00:07:53', 0, 10, '山西省大同市左云县', 2, '左云县', ',219,231,', 231); INSERT INTO `area` VALUES (242, '2015-10-19 00:07:54', '2015-10-19 00:07:54', 0, 11, '山西省大同市大同县', 2, '大同县', ',219,231,', 231); INSERT INTO `area` VALUES (243, '2015-10-19 00:07:55', '2015-10-19 00:07:55', 0, 3, '山西省阳泉市', 1, '阳泉市', ',219,', 219); INSERT INTO `area` VALUES (244, '2015-10-19 00:07:56', '2015-10-19 00:07:56', 0, 1, '山西省阳泉市城区', 2, '城区', ',219,243,', 243); INSERT INTO `area` VALUES (245, '2015-10-19 00:07:57', '2015-10-19 00:07:57', 0, 2, '山西省阳泉市矿区', 2, '矿区', ',219,243,', 243); INSERT INTO `area` VALUES (246, '2015-10-19 00:07:58', '2015-10-19 00:07:58', 0, 3, '山西省阳泉市郊区', 2, '郊区', ',219,243,', 243); INSERT INTO `area` VALUES (247, '2015-10-19 00:07:59', '2015-10-19 00:07:59', 0, 4, '山西省阳泉市平定县', 2, '平定县', ',219,243,', 243); INSERT INTO `area` VALUES (248, '2015-10-19 00:08:00', '2015-10-19 00:08:00', 0, 5, '山西省阳泉市盂县', 2, '盂县', ',219,243,', 243); INSERT INTO `area` VALUES (249, '2015-10-19 00:08:01', '2015-10-19 00:08:01', 0, 4, '山西省长治市', 1, '长治市', ',219,', 219); INSERT INTO `area` VALUES (250, '2015-10-19 00:08:02', '2015-10-19 00:08:02', 0, 1, '山西省长治市城区', 2, '城区', ',219,249,', 249); INSERT INTO `area` VALUES (251, '2015-10-19 00:08:03', '2015-10-19 00:08:03', 0, 2, '山西省长治市郊区', 2, '郊区', ',219,249,', 249); INSERT INTO `area` VALUES (252, '2015-10-19 00:08:04', '2015-10-19 00:08:04', 0, 3, '山西省长治市长治县', 2, '长治县', ',219,249,', 249); INSERT INTO `area` VALUES (253, '2015-10-19 00:08:05', '2015-10-19 00:08:05', 0, 4, '山西省长治市襄垣县', 2, '襄垣县', ',219,249,', 249); INSERT INTO `area` VALUES (254, '2015-10-19 00:08:06', '2015-10-19 00:08:06', 0, 5, '山西省长治市屯留县', 2, '屯留县', ',219,249,', 249); INSERT INTO `area` VALUES (255, '2015-10-19 00:08:07', '2015-10-19 00:08:07', 0, 6, '山西省长治市平顺县', 2, '平顺县', ',219,249,', 249); INSERT INTO `area` VALUES (256, '2015-10-19 00:08:08', '2015-10-19 00:08:08', 0, 7, '山西省长治市黎城县', 2, '黎城县', ',219,249,', 249); INSERT INTO `area` VALUES (257, '2015-10-19 00:08:09', '2015-10-19 00:08:09', 0, 8, '山西省长治市壶关县', 2, '壶关县', ',219,249,', 249); INSERT INTO `area` VALUES (258, '2015-10-19 00:08:10', '2015-10-19 00:08:10', 0, 9, '山西省长治市长子县', 2, '长子县', ',219,249,', 249); INSERT INTO `area` VALUES (259, '2015-10-19 00:08:11', '2015-10-19 00:08:11', 0, 10, '山西省长治市武乡县', 2, '武乡县', ',219,249,', 249); INSERT INTO `area` VALUES (260, '2015-10-19 00:08:12', '2015-10-19 00:08:12', 0, 11, '山西省长治市沁县', 2, '沁县', ',219,249,', 249); INSERT INTO `area` VALUES (261, '2015-10-19 00:08:13', '2015-10-19 00:08:13', 0, 12, '山西省长治市沁源县', 2, '沁源县', ',219,249,', 249); INSERT INTO `area` VALUES (262, '2015-10-19 00:08:14', '2015-10-19 00:08:14', 0, 13, '山西省长治市潞城市', 2, '潞城市', ',219,249,', 249); INSERT INTO `area` VALUES (263, '2015-10-19 00:08:15', '2015-10-19 00:08:15', 0, 5, '山西省晋城市', 1, '晋城市', ',219,', 219); INSERT INTO `area` VALUES (264, '2015-10-19 00:08:16', '2015-10-19 00:08:16', 0, 1, '山西省晋城市城区', 2, '城区', ',219,263,', 263); INSERT INTO `area` VALUES (265, '2015-10-19 00:08:17', '2015-10-19 00:08:17', 0, 2, '山西省晋城市沁水县', 2, '沁水县', ',219,263,', 263); INSERT INTO `area` VALUES (266, '2015-10-19 00:08:18', '2015-10-19 00:08:18', 0, 3, '山西省晋城市阳城县', 2, '阳城县', ',219,263,', 263); INSERT INTO `area` VALUES (267, '2015-10-19 00:08:19', '2015-10-19 00:08:19', 0, 4, '山西省晋城市陵川县', 2, '陵川县', ',219,263,', 263); INSERT INTO `area` VALUES (268, '2015-10-19 00:08:20', '2015-10-19 00:08:20', 0, 5, '山西省晋城市泽州县', 2, '泽州县', ',219,263,', 263); INSERT INTO `area` VALUES (269, '2015-10-19 00:08:21', '2015-10-19 00:08:21', 0, 6, '山西省晋城市高平市', 2, '高平市', ',219,263,', 263); INSERT INTO `area` VALUES (270, '2015-10-19 00:08:22', '2015-10-19 00:08:22', 0, 6, '山西省朔州市', 1, '朔州市', ',219,', 219); INSERT INTO `area` VALUES (271, '2015-10-19 00:08:23', '2015-10-19 00:08:23', 0, 1, '山西省朔州市朔城区', 2, '朔城区', ',219,270,', 270); INSERT INTO `area` VALUES (272, '2015-10-19 00:08:24', '2015-10-19 00:08:24', 0, 2, '山西省朔州市平鲁区', 2, '平鲁区', ',219,270,', 270); INSERT INTO `area` VALUES (273, '2015-10-19 00:08:25', '2015-10-19 00:08:25', 0, 3, '山西省朔州市山阴县', 2, '山阴县', ',219,270,', 270); INSERT INTO `area` VALUES (274, '2015-10-19 00:08:26', '2015-10-19 00:08:26', 0, 4, '山西省朔州市应县', 2, '应县', ',219,270,', 270); INSERT INTO `area` VALUES (275, '2015-10-19 00:08:27', '2015-10-19 00:08:27', 0, 5, '山西省朔州市右玉县', 2, '右玉县', ',219,270,', 270); INSERT INTO `area` VALUES (276, '2015-10-19 00:08:28', '2015-10-19 00:08:28', 0, 6, '山西省朔州市怀仁县', 2, '怀仁县', ',219,270,', 270); INSERT INTO `area` VALUES (277, '2015-10-19 00:08:29', '2015-10-19 00:08:29', 0, 7, '山西省晋中市', 1, '晋中市', ',219,', 219); INSERT INTO `area` VALUES (278, '2015-10-19 00:08:30', '2015-10-19 00:08:30', 0, 1, '山西省晋中市榆次区', 2, '榆次区', ',219,277,', 277); INSERT INTO `area` VALUES (279, '2015-10-19 00:08:31', '2015-10-19 00:08:31', 0, 2, '山西省晋中市榆社县', 2, '榆社县', ',219,277,', 277); INSERT INTO `area` VALUES (280, '2015-10-19 00:08:32', '2015-10-19 00:08:32', 0, 3, '山西省晋中市左权县', 2, '左权县', ',219,277,', 277); INSERT INTO `area` VALUES (281, '2015-10-19 00:08:33', '2015-10-19 00:08:33', 0, 4, '山西省晋中市和顺县', 2, '和顺县', ',219,277,', 277); INSERT INTO `area` VALUES (282, '2015-10-19 00:08:34', '2015-10-19 00:08:34', 0, 5, '山西省晋中市昔阳县', 2, '昔阳县', ',219,277,', 277); INSERT INTO `area` VALUES (283, '2015-10-19 00:08:35', '2015-10-19 00:08:35', 0, 6, '山西省晋中市寿阳县', 2, '寿阳县', ',219,277,', 277); INSERT INTO `area` VALUES (284, '2015-10-19 00:08:36', '2015-10-19 00:08:36', 0, 7, '山西省晋中市太谷县', 2, '太谷县', ',219,277,', 277); INSERT INTO `area` VALUES (285, '2015-10-19 00:08:37', '2015-10-19 00:08:37', 0, 8, '山西省晋中市祁县', 2, '祁县', ',219,277,', 277); INSERT INTO `area` VALUES (286, '2015-10-19 00:08:38', '2015-10-19 00:08:38', 0, 9, '山西省晋中市平遥县', 2, '平遥县', ',219,277,', 277); INSERT INTO `area` VALUES (287, '2015-10-19 00:08:39', '2015-10-19 00:08:39', 0, 10, '山西省晋中市灵石县', 2, '灵石县', ',219,277,', 277); INSERT INTO `area` VALUES (288, '2015-10-19 00:08:40', '2015-10-19 00:08:40', 0, 11, '山西省晋中市介休市', 2, '介休市', ',219,277,', 277); INSERT INTO `area` VALUES (289, '2015-10-19 00:08:41', '2015-10-19 00:08:41', 0, 8, '山西省运城市', 1, '运城市', ',219,', 219); INSERT INTO `area` VALUES (290, '2015-10-19 00:08:42', '2015-10-19 00:08:42', 0, 1, '山西省运城市盐湖区', 2, '盐湖区', ',219,289,', 289); INSERT INTO `area` VALUES (291, '2015-10-19 00:08:43', '2015-10-19 00:08:43', 0, 2, '山西省运城市临猗县', 2, '临猗县', ',219,289,', 289); INSERT INTO `area` VALUES (292, '2015-10-19 00:08:44', '2015-10-19 00:08:44', 0, 3, '山西省运城市万荣县', 2, '万荣县', ',219,289,', 289); INSERT INTO `area` VALUES (293, '2015-10-19 00:08:45', '2015-10-19 00:08:45', 0, 4, '山西省运城市闻喜县', 2, '闻喜县', ',219,289,', 289); INSERT INTO `area` VALUES (294, '2015-10-19 00:08:46', '2015-10-19 00:08:46', 0, 5, '山西省运城市稷山县', 2, '稷山县', ',219,289,', 289); INSERT INTO `area` VALUES (295, '2015-10-19 00:08:47', '2015-10-19 00:08:47', 0, 6, '山西省运城市新绛县', 2, '新绛县', ',219,289,', 289); INSERT INTO `area` VALUES (296, '2015-10-19 00:08:48', '2015-10-19 00:08:48', 0, 7, '山西省运城市绛县', 2, '绛县', ',219,289,', 289); INSERT INTO `area` VALUES (297, '2015-10-19 00:08:49', '2015-10-19 00:08:49', 0, 8, '山西省运城市垣曲县', 2, '垣曲县', ',219,289,', 289); INSERT INTO `area` VALUES (298, '2015-10-19 00:08:50', '2015-10-19 00:08:50', 0, 9, '山西省运城市夏县', 2, '夏县', ',219,289,', 289); INSERT INTO `area` VALUES (299, '2015-10-19 00:08:51', '2015-10-19 00:08:51', 0, 10, '山西省运城市平陆县', 2, '平陆县', ',219,289,', 289); INSERT INTO `area` VALUES (300, '2015-10-19 00:08:52', '2015-10-19 00:08:52', 0, 11, '山西省运城市芮城县', 2, '芮城县', ',219,289,', 289); INSERT INTO `area` VALUES (301, '2015-10-19 00:08:53', '2015-10-19 00:08:53', 0, 12, '山西省运城市永济市', 2, '永济市', ',219,289,', 289); INSERT INTO `area` VALUES (302, '2015-10-19 00:08:54', '2015-10-19 00:08:54', 0, 13, '山西省运城市河津市', 2, '河津市', ',219,289,', 289); INSERT INTO `area` VALUES (303, '2015-10-19 00:08:55', '2015-10-19 00:08:55', 0, 9, '山西省忻州市', 1, '忻州市', ',219,', 219); INSERT INTO `area` VALUES (304, '2015-10-19 00:08:56', '2015-10-19 00:08:56', 0, 1, '山西省忻州市忻府区', 2, '忻府区', ',219,303,', 303); INSERT INTO `area` VALUES (305, '2015-10-19 00:08:57', '2015-10-19 00:08:57', 0, 2, '山西省忻州市定襄县', 2, '定襄县', ',219,303,', 303); INSERT INTO `area` VALUES (306, '2015-10-19 00:08:58', '2015-10-19 00:08:58', 0, 3, '山西省忻州市五台县', 2, '五台县', ',219,303,', 303); INSERT INTO `area` VALUES (307, '2015-10-19 00:08:59', '2015-10-19 00:08:59', 0, 4, '山西省忻州市代县', 2, '代县', ',219,303,', 303); INSERT INTO `area` VALUES (308, '2015-10-19 00:09:00', '2015-10-19 00:09:00', 0, 5, '山西省忻州市繁峙县', 2, '繁峙县', ',219,303,', 303); INSERT INTO `area` VALUES (309, '2015-10-19 00:09:01', '2015-10-19 00:09:01', 0, 6, '山西省忻州市宁武县', 2, '宁武县', ',219,303,', 303); INSERT INTO `area` VALUES (310, '2015-10-19 00:09:02', '2015-10-19 00:09:02', 0, 7, '山西省忻州市静乐县', 2, '静乐县', ',219,303,', 303); INSERT INTO `area` VALUES (311, '2015-10-19 00:09:03', '2015-10-19 00:09:03', 0, 8, '山西省忻州市神池县', 2, '神池县', ',219,303,', 303); INSERT INTO `area` VALUES (312, '2015-10-19 00:09:04', '2015-10-19 00:09:04', 0, 9, '山西省忻州市五寨县', 2, '五寨县', ',219,303,', 303); INSERT INTO `area` VALUES (313, '2015-10-19 00:09:05', '2015-10-19 00:09:05', 0, 10, '山西省忻州市岢岚县', 2, '岢岚县', ',219,303,', 303); INSERT INTO `area` VALUES (314, '2015-10-19 00:09:06', '2015-10-19 00:09:06', 0, 11, '山西省忻州市河曲县', 2, '河曲县', ',219,303,', 303); INSERT INTO `area` VALUES (315, '2015-10-19 00:09:07', '2015-10-19 00:09:07', 0, 12, '山西省忻州市保德县', 2, '保德县', ',219,303,', 303); INSERT INTO `area` VALUES (316, '2015-10-19 00:09:08', '2015-10-19 00:09:08', 0, 13, '山西省忻州市偏关县', 2, '偏关县', ',219,303,', 303); INSERT INTO `area` VALUES (317, '2015-10-19 00:09:09', '2015-10-19 00:09:09', 0, 14, '山西省忻州市原平市', 2, '原平市', ',219,303,', 303); INSERT INTO `area` VALUES (318, '2015-10-19 00:09:10', '2015-10-19 00:09:10', 0, 10, '山西省临汾市', 1, '临汾市', ',219,', 219); INSERT INTO `area` VALUES (319, '2015-10-19 00:09:11', '2015-10-19 00:09:11', 0, 1, '山西省临汾市尧都区', 2, '尧都区', ',219,318,', 318); INSERT INTO `area` VALUES (320, '2015-10-19 00:09:12', '2015-10-19 00:09:12', 0, 2, '山西省临汾市曲沃县', 2, '曲沃县', ',219,318,', 318); INSERT INTO `area` VALUES (321, '2015-10-19 00:09:13', '2015-10-19 00:09:13', 0, 3, '山西省临汾市翼城县', 2, '翼城县', ',219,318,', 318); INSERT INTO `area` VALUES (322, '2015-10-19 00:09:14', '2015-10-19 00:09:14', 0, 4, '山西省临汾市襄汾县', 2, '襄汾县', ',219,318,', 318); INSERT INTO `area` VALUES (323, '2015-10-19 00:09:15', '2015-10-19 00:09:15', 0, 5, '山西省临汾市洪洞县', 2, '洪洞县', ',219,318,', 318); INSERT INTO `area` VALUES (324, '2015-10-19 00:09:16', '2015-10-19 00:09:16', 0, 6, '山西省临汾市古县', 2, '古县', ',219,318,', 318); INSERT INTO `area` VALUES (325, '2015-10-19 00:09:17', '2015-10-19 00:09:17', 0, 7, '山西省临汾市安泽县', 2, '安泽县', ',219,318,', 318); INSERT INTO `area` VALUES (326, '2015-10-19 00:09:18', '2015-10-19 00:09:18', 0, 8, '山西省临汾市浮山县', 2, '浮山县', ',219,318,', 318); INSERT INTO `area` VALUES (327, '2015-10-19 00:09:19', '2015-10-19 00:09:19', 0, 9, '山西省临汾市吉县', 2, '吉县', ',219,318,', 318); INSERT INTO `area` VALUES (328, '2015-10-19 00:09:20', '2015-10-19 00:09:20', 0, 10, '山西省临汾市乡宁县', 2, '乡宁县', ',219,318,', 318); INSERT INTO `area` VALUES (329, '2015-10-19 00:09:21', '2015-10-19 00:09:21', 0, 11, '山西省临汾市大宁县', 2, '大宁县', ',219,318,', 318); INSERT INTO `area` VALUES (330, '2015-10-19 00:09:22', '2015-10-19 00:09:22', 0, 12, '山西省临汾市隰县', 2, '隰县', ',219,318,', 318); INSERT INTO `area` VALUES (331, '2015-10-19 00:09:23', '2015-10-19 00:09:23', 0, 13, '山西省临汾市永和县', 2, '永和县', ',219,318,', 318); INSERT INTO `area` VALUES (332, '2015-10-19 00:09:24', '2015-10-19 00:09:24', 0, 14, '山西省临汾市蒲县', 2, '蒲县', ',219,318,', 318); INSERT INTO `area` VALUES (333, '2015-10-19 00:09:25', '2015-10-19 00:09:25', 0, 15, '山西省临汾市汾西县', 2, '汾西县', ',219,318,', 318); INSERT INTO `area` VALUES (334, '2015-10-19 00:09:26', '2015-10-19 00:09:26', 0, 16, '山西省临汾市侯马市', 2, '侯马市', ',219,318,', 318); INSERT INTO `area` VALUES (335, '2015-10-19 00:09:27', '2015-10-19 00:09:27', 0, 17, '山西省临汾市霍州市', 2, '霍州市', ',219,318,', 318); INSERT INTO `area` VALUES (336, '2015-10-19 00:09:28', '2015-10-19 00:09:28', 0, 11, '山西省吕梁市', 1, '吕梁市', ',219,', 219); INSERT INTO `area` VALUES (337, '2015-10-19 00:09:29', '2015-10-19 00:09:29', 0, 1, '山西省吕梁市离石区', 2, '离石区', ',219,336,', 336); INSERT INTO `area` VALUES (338, '2015-10-19 00:09:30', '2015-10-19 00:09:30', 0, 2, '山西省吕梁市文水县', 2, '文水县', ',219,336,', 336); INSERT INTO `area` VALUES (339, '2015-10-19 00:09:31', '2015-10-19 00:09:31', 0, 3, '山西省吕梁市交城县', 2, '交城县', ',219,336,', 336); INSERT INTO `area` VALUES (340, '2015-10-19 00:09:32', '2015-10-19 00:09:32', 0, 4, '山西省吕梁市兴县', 2, '兴县', ',219,336,', 336); INSERT INTO `area` VALUES (341, '2015-10-19 00:09:33', '2015-10-19 00:09:33', 0, 5, '山西省吕梁市临县', 2, '临县', ',219,336,', 336); INSERT INTO `area` VALUES (342, '2015-10-19 00:09:34', '2015-10-19 00:09:34', 0, 6, '山西省吕梁市柳林县', 2, '柳林县', ',219,336,', 336); INSERT INTO `area` VALUES (343, '2015-10-19 00:09:35', '2015-10-19 00:09:35', 0, 7, '山西省吕梁市石楼县', 2, '石楼县', ',219,336,', 336); INSERT INTO `area` VALUES (344, '2015-10-19 00:09:36', '2015-10-19 00:09:36', 0, 8, '山西省吕梁市岚县', 2, '岚县', ',219,336,', 336); INSERT INTO `area` VALUES (345, '2015-10-19 00:09:37', '2015-10-19 00:09:37', 0, 9, '山西省吕梁市方山县', 2, '方山县', ',219,336,', 336); INSERT INTO `area` VALUES (346, '2015-10-19 00:09:38', '2015-10-19 00:09:38', 0, 10, '山西省吕梁市中阳县', 2, '中阳县', ',219,336,', 336); INSERT INTO `area` VALUES (347, '2015-10-19 00:09:39', '2015-10-19 00:09:39', 0, 11, '山西省吕梁市交口县', 2, '交口县', ',219,336,', 336); INSERT INTO `area` VALUES (348, '2015-10-19 00:09:40', '2015-10-19 00:09:40', 0, 12, '山西省吕梁市孝义市', 2, '孝义市', ',219,336,', 336); INSERT INTO `area` VALUES (349, '2015-10-19 00:09:41', '2015-10-19 00:09:41', 0, 13, '山西省吕梁市汾阳市', 2, '汾阳市', ',219,336,', 336); INSERT INTO `area` VALUES (350, '2015-10-19 00:09:42', '2015-10-19 00:09:42', 0, 5, '内蒙古自治区', 0, '内蒙古自治区', ',', NULL); INSERT INTO `area` VALUES (351, '2015-10-19 00:09:43', '2015-10-19 00:09:43', 0, 1, '内蒙古自治区呼和浩特市', 1, '呼和浩特市', ',350,', 350); INSERT INTO `area` VALUES (352, '2015-10-19 00:09:44', '2015-10-19 00:09:44', 0, 1, '内蒙古自治区呼和浩特市新城区', 2, '新城区', ',350,351,', 351); INSERT INTO `area` VALUES (353, '2015-10-19 00:09:45', '2015-10-19 00:09:45', 0, 2, '内蒙古自治区呼和浩特市回民区', 2, '回民区', ',350,351,', 351); INSERT INTO `area` VALUES (354, '2015-10-19 00:09:46', '2015-10-19 00:09:46', 0, 3, '内蒙古自治区呼和浩特市玉泉区', 2, '玉泉区', ',350,351,', 351); INSERT INTO `area` VALUES (355, '2015-10-19 00:09:47', '2015-10-19 00:09:47', 0, 4, '内蒙古自治区呼和浩特市赛罕区', 2, '赛罕区', ',350,351,', 351); INSERT INTO `area` VALUES (356, '2015-10-19 00:09:48', '2015-10-19 00:09:48', 0, 5, '内蒙古自治区呼和浩特市土默特左旗', 2, '土默特左旗', ',350,351,', 351); INSERT INTO `area` VALUES (357, '2015-10-19 00:09:49', '2015-10-19 00:09:49', 0, 6, '内蒙古自治区呼和浩特市托克托县', 2, '托克托县', ',350,351,', 351); INSERT INTO `area` VALUES (358, '2015-10-19 00:09:50', '2015-10-19 00:09:50', 0, 7, '内蒙古自治区呼和浩特市和林格尔县', 2, '和林格尔县', ',350,351,', 351); INSERT INTO `area` VALUES (359, '2015-10-19 00:09:51', '2015-10-19 00:09:51', 0, 8, '内蒙古自治区呼和浩特市清水河县', 2, '清水河县', ',350,351,', 351); INSERT INTO `area` VALUES (360, '2015-10-19 00:09:52', '2015-10-19 00:09:52', 0, 9, '内蒙古自治区呼和浩特市武川县', 2, '武川县', ',350,351,', 351); INSERT INTO `area` VALUES (361, '2015-10-19 00:09:53', '2015-10-19 00:09:53', 0, 2, '内蒙古自治区包头市', 1, '包头市', ',350,', 350); INSERT INTO `area` VALUES (362, '2015-10-19 00:09:54', '2015-10-19 00:09:54', 0, 1, '内蒙古自治区包头市东河区', 2, '东河区', ',350,361,', 361); INSERT INTO `area` VALUES (363, '2015-10-19 00:09:55', '2015-10-19 00:09:55', 0, 2, '内蒙古自治区包头市昆都仑区', 2, '昆都仑区', ',350,361,', 361); INSERT INTO `area` VALUES (364, '2015-10-19 00:09:56', '2015-10-19 00:09:56', 0, 3, '内蒙古自治区包头市青山区', 2, '青山区', ',350,361,', 361); INSERT INTO `area` VALUES (365, '2015-10-19 00:09:57', '2015-10-19 00:09:57', 0, 4, '内蒙古自治区包头市石拐区', 2, '石拐区', ',350,361,', 361); INSERT INTO `area` VALUES (366, '2015-10-19 00:09:58', '2015-10-19 00:09:58', 0, 5, '内蒙古自治区包头市白云鄂博矿区', 2, '白云鄂博矿区', ',350,361,', 361); INSERT INTO `area` VALUES (367, '2015-10-19 00:09:59', '2015-10-19 00:09:59', 0, 6, '内蒙古自治区包头市九原区', 2, '九原区', ',350,361,', 361); INSERT INTO `area` VALUES (368, '2015-10-19 00:10:00', '2015-10-19 00:10:00', 0, 7, '内蒙古自治区包头市土默特右旗', 2, '土默特右旗', ',350,361,', 361); INSERT INTO `area` VALUES (369, '2015-10-19 00:10:01', '2015-10-19 00:10:01', 0, 8, '内蒙古自治区包头市固阳县', 2, '固阳县', ',350,361,', 361); INSERT INTO `area` VALUES (370, '2015-10-19 00:10:02', '2015-10-19 00:10:02', 0, 9, '内蒙古自治区包头市达尔罕茂明安联合旗', 2, '达尔罕茂明安联合旗', ',350,361,', 361); INSERT INTO `area` VALUES (371, '2015-10-19 00:10:03', '2015-10-19 00:10:03', 0, 3, '内蒙古自治区乌海市', 1, '乌海市', ',350,', 350); INSERT INTO `area` VALUES (372, '2015-10-19 00:10:04', '2015-10-19 00:10:04', 0, 1, '内蒙古自治区乌海市海勃湾区', 2, '海勃湾区', ',350,371,', 371); INSERT INTO `area` VALUES (373, '2015-10-19 00:10:05', '2015-10-19 00:10:05', 0, 2, '内蒙古自治区乌海市海南区', 2, '海南区', ',350,371,', 371); INSERT INTO `area` VALUES (374, '2015-10-19 00:10:06', '2015-10-19 00:10:06', 0, 3, '内蒙古自治区乌海市乌达区', 2, '乌达区', ',350,371,', 371); INSERT INTO `area` VALUES (375, '2015-10-19 00:10:07', '2015-10-19 00:10:07', 0, 4, '内蒙古自治区赤峰市', 1, '赤峰市', ',350,', 350); INSERT INTO `area` VALUES (376, '2015-10-19 00:10:08', '2015-10-19 00:10:08', 0, 1, '内蒙古自治区赤峰市红山区', 2, '红山区', ',350,375,', 375); INSERT INTO `area` VALUES (377, '2015-10-19 00:10:09', '2015-10-19 00:10:09', 0, 2, '内蒙古自治区赤峰市元宝山区', 2, '元宝山区', ',350,375,', 375); INSERT INTO `area` VALUES (378, '2015-10-19 00:10:10', '2015-10-19 00:10:10', 0, 3, '内蒙古自治区赤峰市松山区', 2, '松山区', ',350,375,', 375); INSERT INTO `area` VALUES (379, '2015-10-19 00:10:11', '2015-10-19 00:10:11', 0, 4, '内蒙古自治区赤峰市阿鲁科尔沁旗', 2, '阿鲁科尔沁旗', ',350,375,', 375); INSERT INTO `area` VALUES (380, '2015-10-19 00:10:12', '2015-10-19 00:10:12', 0, 5, '内蒙古自治区赤峰市巴林左旗', 2, '巴林左旗', ',350,375,', 375); INSERT INTO `area` VALUES (381, '2015-10-19 00:10:13', '2015-10-19 00:10:13', 0, 6, '内蒙古自治区赤峰市巴林右旗', 2, '巴林右旗', ',350,375,', 375); INSERT INTO `area` VALUES (382, '2015-10-19 00:10:14', '2015-10-19 00:10:14', 0, 7, '内蒙古自治区赤峰市林西县', 2, '林西县', ',350,375,', 375); INSERT INTO `area` VALUES (383, '2015-10-19 00:10:15', '2015-10-19 00:10:15', 0, 8, '内蒙古自治区赤峰市克什克腾旗', 2, '克什克腾旗', ',350,375,', 375); INSERT INTO `area` VALUES (384, '2015-10-19 00:10:16', '2015-10-19 00:10:16', 0, 9, '内蒙古自治区赤峰市翁牛特旗', 2, '翁牛特旗', ',350,375,', 375); INSERT INTO `area` VALUES (385, '2015-10-19 00:10:17', '2015-10-19 00:10:17', 0, 10, '内蒙古自治区赤峰市喀喇沁旗', 2, '喀喇沁旗', ',350,375,', 375); INSERT INTO `area` VALUES (386, '2015-10-19 00:10:18', '2015-10-19 00:10:18', 0, 11, '内蒙古自治区赤峰市宁城县', 2, '宁城县', ',350,375,', 375); INSERT INTO `area` VALUES (387, '2015-10-19 00:10:19', '2015-10-19 00:10:19', 0, 12, '内蒙古自治区赤峰市敖汉旗', 2, '敖汉旗', ',350,375,', 375); INSERT INTO `area` VALUES (388, '2015-10-19 00:10:20', '2015-10-19 00:10:20', 0, 5, '内蒙古自治区通辽市', 1, '通辽市', ',350,', 350); INSERT INTO `area` VALUES (389, '2015-10-19 00:10:21', '2015-10-19 00:10:21', 0, 1, '内蒙古自治区通辽市科尔沁区', 2, '科尔沁区', ',350,388,', 388); INSERT INTO `area` VALUES (390, '2015-10-19 00:10:22', '2015-10-19 00:10:22', 0, 2, '内蒙古自治区通辽市科尔沁左翼中旗', 2, '科尔沁左翼中旗', ',350,388,', 388); INSERT INTO `area` VALUES (391, '2015-10-19 00:10:23', '2015-10-19 00:10:23', 0, 3, '内蒙古自治区通辽市科尔沁左翼后旗', 2, '科尔沁左翼后旗', ',350,388,', 388); INSERT INTO `area` VALUES (392, '2015-10-19 00:10:24', '2015-10-19 00:10:24', 0, 4, '内蒙古自治区通辽市开鲁县', 2, '开鲁县', ',350,388,', 388); INSERT INTO `area` VALUES (393, '2015-10-19 00:10:25', '2015-10-19 00:10:25', 0, 5, '内蒙古自治区通辽市库伦旗', 2, '库伦旗', ',350,388,', 388); INSERT INTO `area` VALUES (394, '2015-10-19 00:10:26', '2015-10-19 00:10:26', 0, 6, '内蒙古自治区通辽市奈曼旗', 2, '奈曼旗', ',350,388,', 388); INSERT INTO `area` VALUES (395, '2015-10-19 00:10:27', '2015-10-19 00:10:27', 0, 7, '内蒙古自治区通辽市扎鲁特旗', 2, '扎鲁特旗', ',350,388,', 388); INSERT INTO `area` VALUES (396, '2015-10-19 00:10:28', '2015-10-19 00:10:28', 0, 8, '内蒙古自治区通辽市霍林郭勒市', 2, '霍林郭勒市', ',350,388,', 388); INSERT INTO `area` VALUES (397, '2015-10-19 00:10:29', '2015-10-19 00:10:29', 0, 6, '内蒙古自治区鄂尔多斯市', 1, '鄂尔多斯市', ',350,', 350); INSERT INTO `area` VALUES (398, '2015-10-19 00:10:30', '2015-10-19 00:10:30', 0, 1, '内蒙古自治区鄂尔多斯市东胜区', 2, '东胜区', ',350,397,', 397); INSERT INTO `area` VALUES (399, '2015-10-19 00:10:31', '2015-10-19 00:10:31', 0, 2, '内蒙古自治区鄂尔多斯市达拉特旗', 2, '达拉特旗', ',350,397,', 397); INSERT INTO `area` VALUES (400, '2015-10-19 00:10:32', '2015-10-19 00:10:32', 0, 3, '内蒙古自治区鄂尔多斯市准格尔旗', 2, '准格尔旗', ',350,397,', 397); INSERT INTO `area` VALUES (401, '2015-10-19 00:10:33', '2015-10-19 00:10:33', 0, 4, '内蒙古自治区鄂尔多斯市鄂托克前旗', 2, '鄂托克前旗', ',350,397,', 397); INSERT INTO `area` VALUES (402, '2015-10-19 00:10:34', '2015-10-19 00:10:34', 0, 5, '内蒙古自治区鄂尔多斯市鄂托克旗', 2, '鄂托克旗', ',350,397,', 397); INSERT INTO `area` VALUES (403, '2015-10-19 00:10:35', '2015-10-19 00:10:35', 0, 6, '内蒙古自治区鄂尔多斯市杭锦旗', 2, '杭锦旗', ',350,397,', 397); INSERT INTO `area` VALUES (404, '2015-10-19 00:10:36', '2015-10-19 00:10:36', 0, 7, '内蒙古自治区鄂尔多斯市乌审旗', 2, '乌审旗', ',350,397,', 397); INSERT INTO `area` VALUES (405, '2015-10-19 00:10:37', '2015-10-19 00:10:37', 0, 8, '内蒙古自治区鄂尔多斯市伊金霍洛旗', 2, '伊金霍洛旗', ',350,397,', 397); INSERT INTO `area` VALUES (406, '2015-10-19 00:10:38', '2015-10-19 00:10:38', 0, 7, '内蒙古自治区呼伦贝尔市', 1, '呼伦贝尔市', ',350,', 350); INSERT INTO `area` VALUES (407, '2015-10-19 00:10:39', '2015-10-19 00:10:39', 0, 1, '内蒙古自治区呼伦贝尔市海拉尔区', 2, '海拉尔区', ',350,406,', 406); INSERT INTO `area` VALUES (408, '2015-10-19 00:10:40', '2015-10-19 00:10:40', 0, 2, '内蒙古自治区呼伦贝尔市扎赉诺尔区', 2, '扎赉诺尔区', ',350,406,', 406); INSERT INTO `area` VALUES (409, '2015-10-19 00:10:41', '2015-10-19 00:10:41', 0, 3, '内蒙古自治区呼伦贝尔市阿荣旗', 2, '阿荣旗', ',350,406,', 406); INSERT INTO `area` VALUES (410, '2015-10-19 00:10:42', '2015-10-19 00:10:42', 0, 4, '内蒙古自治区呼伦贝尔市莫力达瓦达斡尔族自治旗', 2, '莫力达瓦达斡尔族自治旗', ',350,406,', 406); INSERT INTO `area` VALUES (411, '2015-10-19 00:10:43', '2015-10-19 00:10:43', 0, 5, '内蒙古自治区呼伦贝尔市鄂伦春自治旗', 2, '鄂伦春自治旗', ',350,406,', 406); INSERT INTO `area` VALUES (412, '2015-10-19 00:10:44', '2015-10-19 00:10:44', 0, 6, '内蒙古自治区呼伦贝尔市鄂温克族自治旗', 2, '鄂温克族自治旗', ',350,406,', 406); INSERT INTO `area` VALUES (413, '2015-10-19 00:10:45', '2015-10-19 00:10:45', 0, 7, '内蒙古自治区呼伦贝尔市陈巴尔虎旗', 2, '陈巴尔虎旗', ',350,406,', 406); INSERT INTO `area` VALUES (414, '2015-10-19 00:10:46', '2015-10-19 00:10:46', 0, 8, '内蒙古自治区呼伦贝尔市新巴尔虎左旗', 2, '新巴尔虎左旗', ',350,406,', 406); INSERT INTO `area` VALUES (415, '2015-10-19 00:10:47', '2015-10-19 00:10:47', 0, 9, '内蒙古自治区呼伦贝尔市新巴尔虎右旗', 2, '新巴尔虎右旗', ',350,406,', 406); INSERT INTO `area` VALUES (416, '2015-10-19 00:10:48', '2015-10-19 00:10:48', 0, 10, '内蒙古自治区呼伦贝尔市满洲里市', 2, '满洲里市', ',350,406,', 406); INSERT INTO `area` VALUES (417, '2015-10-19 00:10:49', '2015-10-19 00:10:49', 0, 11, '内蒙古自治区呼伦贝尔市牙克石市', 2, '牙克石市', ',350,406,', 406); INSERT INTO `area` VALUES (418, '2015-10-19 00:10:50', '2015-10-19 00:10:50', 0, 12, '内蒙古自治区呼伦贝尔市扎兰屯市', 2, '扎兰屯市', ',350,406,', 406); INSERT INTO `area` VALUES (419, '2015-10-19 00:10:51', '2015-10-19 00:10:51', 0, 13, '内蒙古自治区呼伦贝尔市额尔古纳市', 2, '额尔古纳市', ',350,406,', 406); INSERT INTO `area` VALUES (420, '2015-10-19 00:10:52', '2015-10-19 00:10:52', 0, 14, '内蒙古自治区呼伦贝尔市根河市', 2, '根河市', ',350,406,', 406); INSERT INTO `area` VALUES (421, '2015-10-19 00:10:53', '2015-10-19 00:10:53', 0, 8, '内蒙古自治区巴彦淖尔市', 1, '巴彦淖尔市', ',350,', 350); INSERT INTO `area` VALUES (422, '2015-10-19 00:10:54', '2015-10-19 00:10:54', 0, 1, '内蒙古自治区巴彦淖尔市临河区', 2, '临河区', ',350,421,', 421); INSERT INTO `area` VALUES (423, '2015-10-19 00:10:55', '2015-10-19 00:10:55', 0, 2, '内蒙古自治区巴彦淖尔市五原县', 2, '五原县', ',350,421,', 421); INSERT INTO `area` VALUES (424, '2015-10-19 00:10:56', '2015-10-19 00:10:56', 0, 3, '内蒙古自治区巴彦淖尔市磴口县', 2, '磴口县', ',350,421,', 421); INSERT INTO `area` VALUES (425, '2015-10-19 00:10:57', '2015-10-19 00:10:57', 0, 4, '内蒙古自治区巴彦淖尔市乌拉特前旗', 2, '乌拉特前旗', ',350,421,', 421); INSERT INTO `area` VALUES (426, '2015-10-19 00:10:58', '2015-10-19 00:10:58', 0, 5, '内蒙古自治区巴彦淖尔市乌拉特中旗', 2, '乌拉特中旗', ',350,421,', 421); INSERT INTO `area` VALUES (427, '2015-10-19 00:10:59', '2015-10-19 00:10:59', 0, 6, '内蒙古自治区巴彦淖尔市乌拉特后旗', 2, '乌拉特后旗', ',350,421,', 421); INSERT INTO `area` VALUES (428, '2015-10-19 00:11:00', '2015-10-19 00:11:00', 0, 7, '内蒙古自治区巴彦淖尔市杭锦后旗', 2, '杭锦后旗', ',350,421,', 421); INSERT INTO `area` VALUES (429, '2015-10-19 00:11:01', '2015-10-19 00:11:01', 0, 9, '内蒙古自治区乌兰察布市', 1, '乌兰察布市', ',350,', 350); INSERT INTO `area` VALUES (430, '2015-10-19 00:11:02', '2015-10-19 00:11:02', 0, 1, '内蒙古自治区乌兰察布市集宁区', 2, '集宁区', ',350,429,', 429); INSERT INTO `area` VALUES (431, '2015-10-19 00:11:03', '2015-10-19 00:11:03', 0, 2, '内蒙古自治区乌兰察布市卓资县', 2, '卓资县', ',350,429,', 429); INSERT INTO `area` VALUES (432, '2015-10-19 00:11:04', '2015-10-19 00:11:04', 0, 3, '内蒙古自治区乌兰察布市化德县', 2, '化德县', ',350,429,', 429); INSERT INTO `area` VALUES (433, '2015-10-19 00:11:05', '2015-10-19 00:11:05', 0, 4, '内蒙古自治区乌兰察布市商都县', 2, '商都县', ',350,429,', 429); INSERT INTO `area` VALUES (434, '2015-10-19 00:11:06', '2015-10-19 00:11:06', 0, 5, '内蒙古自治区乌兰察布市兴和县', 2, '兴和县', ',350,429,', 429); INSERT INTO `area` VALUES (435, '2015-10-19 00:11:07', '2015-10-19 00:11:07', 0, 6, '内蒙古自治区乌兰察布市凉城县', 2, '凉城县', ',350,429,', 429); INSERT INTO `area` VALUES (436, '2015-10-19 00:11:08', '2015-10-19 00:11:08', 0, 7, '内蒙古自治区乌兰察布市察哈尔右翼前旗', 2, '察哈尔右翼前旗', ',350,429,', 429); INSERT INTO `area` VALUES (437, '2015-10-19 00:11:09', '2015-10-19 00:11:09', 0, 8, '内蒙古自治区乌兰察布市察哈尔右翼中旗', 2, '察哈尔右翼中旗', ',350,429,', 429); INSERT INTO `area` VALUES (438, '2015-10-19 00:11:10', '2015-10-19 00:11:10', 0, 9, '内蒙古自治区乌兰察布市察哈尔右翼后旗', 2, '察哈尔右翼后旗', ',350,429,', 429); INSERT INTO `area` VALUES (439, '2015-10-19 00:11:11', '2015-10-19 00:11:11', 0, 10, '内蒙古自治区乌兰察布市四子王旗', 2, '四子王旗', ',350,429,', 429); INSERT INTO `area` VALUES (440, '2015-10-19 00:11:12', '2015-10-19 00:11:12', 0, 11, '内蒙古自治区乌兰察布市丰镇市', 2, '丰镇市', ',350,429,', 429); INSERT INTO `area` VALUES (441, '2015-10-19 00:11:13', '2015-10-19 00:11:13', 0, 10, '内蒙古自治区兴安盟', 1, '兴安盟', ',350,', 350); INSERT INTO `area` VALUES (442, '2015-10-19 00:11:14', '2015-10-19 00:11:14', 0, 1, '内蒙古自治区兴安盟乌兰浩特市', 2, '乌兰浩特市', ',350,441,', 441); INSERT INTO `area` VALUES (443, '2015-10-19 00:11:15', '2015-10-19 00:11:15', 0, 2, '内蒙古自治区兴安盟阿尔山市', 2, '阿尔山市', ',350,441,', 441); INSERT INTO `area` VALUES (444, '2015-10-19 00:11:16', '2015-10-19 00:11:16', 0, 3, '内蒙古自治区兴安盟科尔沁右翼前旗', 2, '科尔沁右翼前旗', ',350,441,', 441); INSERT INTO `area` VALUES (445, '2015-10-19 00:11:17', '2015-10-19 00:11:17', 0, 4, '内蒙古自治区兴安盟科尔沁右翼中旗', 2, '科尔沁右翼中旗', ',350,441,', 441); INSERT INTO `area` VALUES (446, '2015-10-19 00:11:18', '2015-10-19 00:11:18', 0, 5, '内蒙古自治区兴安盟扎赉特旗', 2, '扎赉特旗', ',350,441,', 441); INSERT INTO `area` VALUES (447, '2015-10-19 00:11:19', '2015-10-19 00:11:19', 0, 6, '内蒙古自治区兴安盟突泉县', 2, '突泉县', ',350,441,', 441); INSERT INTO `area` VALUES (448, '2015-10-19 00:11:20', '2015-10-19 00:11:20', 0, 11, '内蒙古自治区锡林郭勒盟', 1, '锡林郭勒盟', ',350,', 350); INSERT INTO `area` VALUES (449, '2015-10-19 00:11:21', '2015-10-19 00:11:21', 0, 1, '内蒙古自治区锡林郭勒盟二连浩特市', 2, '二连浩特市', ',350,448,', 448); INSERT INTO `area` VALUES (450, '2015-10-19 00:11:22', '2015-10-19 00:11:22', 0, 2, '内蒙古自治区锡林郭勒盟锡林浩特市', 2, '锡林浩特市', ',350,448,', 448); INSERT INTO `area` VALUES (451, '2015-10-19 00:11:23', '2015-10-19 00:11:23', 0, 3, '内蒙古自治区锡林郭勒盟阿巴嘎旗', 2, '阿巴嘎旗', ',350,448,', 448); INSERT INTO `area` VALUES (452, '2015-10-19 00:11:24', '2015-10-19 00:11:24', 0, 4, '内蒙古自治区锡林郭勒盟苏尼特左旗', 2, '苏尼特左旗', ',350,448,', 448); INSERT INTO `area` VALUES (453, '2015-10-19 00:11:25', '2015-10-19 00:11:25', 0, 5, '内蒙古自治区锡林郭勒盟苏尼特右旗', 2, '苏尼特右旗', ',350,448,', 448); INSERT INTO `area` VALUES (454, '2015-10-19 00:11:26', '2015-10-19 00:11:26', 0, 6, '内蒙古自治区锡林郭勒盟东乌珠穆沁旗', 2, '东乌珠穆沁旗', ',350,448,', 448); INSERT INTO `area` VALUES (455, '2015-10-19 00:11:27', '2015-10-19 00:11:27', 0, 7, '内蒙古自治区锡林郭勒盟西乌珠穆沁旗', 2, '西乌珠穆沁旗', ',350,448,', 448); INSERT INTO `area` VALUES (456, '2015-10-19 00:11:28', '2015-10-19 00:11:28', 0, 8, '内蒙古自治区锡林郭勒盟太仆寺旗', 2, '太仆寺旗', ',350,448,', 448); INSERT INTO `area` VALUES (457, '2015-10-19 00:11:29', '2015-10-19 00:11:29', 0, 9, '内蒙古自治区锡林郭勒盟镶黄旗', 2, '镶黄旗', ',350,448,', 448); INSERT INTO `area` VALUES (458, '2015-10-19 00:11:30', '2015-10-19 00:11:30', 0, 10, '内蒙古自治区锡林郭勒盟正镶白旗', 2, '正镶白旗', ',350,448,', 448); INSERT INTO `area` VALUES (459, '2015-10-19 00:11:31', '2015-10-19 00:11:31', 0, 11, '内蒙古自治区锡林郭勒盟正蓝旗', 2, '正蓝旗', ',350,448,', 448); INSERT INTO `area` VALUES (460, '2015-10-19 00:11:32', '2015-10-19 00:11:32', 0, 12, '内蒙古自治区锡林郭勒盟多伦县', 2, '多伦县', ',350,448,', 448); INSERT INTO `area` VALUES (461, '2015-10-19 00:11:33', '2015-10-19 00:11:33', 0, 12, '内蒙古自治区阿拉善盟', 1, '阿拉善盟', ',350,', 350); INSERT INTO `area` VALUES (462, '2015-10-19 00:11:34', '2015-10-19 00:11:34', 0, 1, '内蒙古自治区阿拉善盟阿拉善左旗', 2, '阿拉善左旗', ',350,461,', 461); INSERT INTO `area` VALUES (463, '2015-10-19 00:11:35', '2015-10-19 00:11:35', 0, 2, '内蒙古自治区阿拉善盟阿拉善右旗', 2, '阿拉善右旗', ',350,461,', 461); INSERT INTO `area` VALUES (464, '2015-10-19 00:11:36', '2015-10-19 00:11:36', 0, 3, '内蒙古自治区阿拉善盟额济纳旗', 2, '额济纳旗', ',350,461,', 461); INSERT INTO `area` VALUES (465, '2015-10-19 00:11:37', '2015-10-19 00:11:37', 0, 6, '辽宁省', 0, '辽宁省', ',', NULL); INSERT INTO `area` VALUES (466, '2015-10-19 00:11:38', '2015-10-19 00:11:38', 0, 1, '辽宁省沈阳市', 1, '沈阳市', ',465,', 465); INSERT INTO `area` VALUES (467, '2015-10-19 00:11:39', '2015-10-19 00:11:39', 0, 1, '辽宁省沈阳市和平区', 2, '和平区', ',465,466,', 466); INSERT INTO `area` VALUES (468, '2015-10-19 00:11:40', '2015-10-19 00:11:40', 0, 2, '辽宁省沈阳市沈河区', 2, '沈河区', ',465,466,', 466); INSERT INTO `area` VALUES (469, '2015-10-19 00:11:41', '2015-10-19 00:11:41', 0, 3, '辽宁省沈阳市大东区', 2, '大东区', ',465,466,', 466); INSERT INTO `area` VALUES (470, '2015-10-19 00:11:42', '2015-10-19 00:11:42', 0, 4, '辽宁省沈阳市皇姑区', 2, '皇姑区', ',465,466,', 466); INSERT INTO `area` VALUES (471, '2015-10-19 00:11:43', '2015-10-19 00:11:43', 0, 5, '辽宁省沈阳市铁西区', 2, '铁西区', ',465,466,', 466); INSERT INTO `area` VALUES (472, '2015-10-19 00:11:44', '2015-10-19 00:11:44', 0, 6, '辽宁省沈阳市苏家屯区', 2, '苏家屯区', ',465,466,', 466); INSERT INTO `area` VALUES (473, '2015-10-19 00:11:45', '2015-10-19 00:11:45', 0, 7, '辽宁省沈阳市东陵区', 2, '东陵区', ',465,466,', 466); INSERT INTO `area` VALUES (474, '2015-10-19 00:11:46', '2015-10-19 00:11:46', 0, 8, '辽宁省沈阳市沈北新区', 2, '沈北新区', ',465,466,', 466); INSERT INTO `area` VALUES (475, '2015-10-19 00:11:47', '2015-10-19 00:11:47', 0, 9, '辽宁省沈阳市于洪区', 2, '于洪区', ',465,466,', 466); INSERT INTO `area` VALUES (476, '2015-10-19 00:11:48', '2015-10-19 00:11:48', 0, 10, '辽宁省沈阳市辽中县', 2, '辽中县', ',465,466,', 466); INSERT INTO `area` VALUES (477, '2015-10-19 00:11:49', '2015-10-19 00:11:49', 0, 11, '辽宁省沈阳市康平县', 2, '康平县', ',465,466,', 466); INSERT INTO `area` VALUES (478, '2015-10-19 00:11:50', '2015-10-19 00:11:50', 0, 12, '辽宁省沈阳市法库县', 2, '法库县', ',465,466,', 466); INSERT INTO `area` VALUES (479, '2015-10-19 00:11:51', '2015-10-19 00:11:51', 0, 13, '辽宁省沈阳市新民市', 2, '新民市', ',465,466,', 466); INSERT INTO `area` VALUES (480, '2015-10-19 00:11:52', '2015-10-19 00:11:52', 0, 2, '辽宁省大连市', 1, '大连市', ',465,', 465); INSERT INTO `area` VALUES (481, '2015-10-19 00:11:53', '2015-10-19 00:11:53', 0, 1, '辽宁省大连市中山区', 2, '中山区', ',465,480,', 480); INSERT INTO `area` VALUES (482, '2015-10-19 00:11:54', '2015-10-19 00:11:54', 0, 2, '辽宁省大连市西岗区', 2, '西岗区', ',465,480,', 480); INSERT INTO `area` VALUES (483, '2015-10-19 00:11:55', '2015-10-19 00:11:55', 0, 3, '辽宁省大连市沙河口区', 2, '沙河口区', ',465,480,', 480); INSERT INTO `area` VALUES (484, '2015-10-19 00:11:56', '2015-10-19 00:11:56', 0, 4, '辽宁省大连市甘井子区', 2, '甘井子区', ',465,480,', 480); INSERT INTO `area` VALUES (485, '2015-10-19 00:11:57', '2015-10-19 00:11:57', 0, 5, '辽宁省大连市旅顺口区', 2, '旅顺口区', ',465,480,', 480); INSERT INTO `area` VALUES (486, '2015-10-19 00:11:58', '2015-10-19 00:11:58', 0, 6, '辽宁省大连市金州区', 2, '金州区', ',465,480,', 480); INSERT INTO `area` VALUES (487, '2015-10-19 00:11:59', '2015-10-19 00:11:59', 0, 7, '辽宁省大连市长海县', 2, '长海县', ',465,480,', 480); INSERT INTO `area` VALUES (488, '2015-10-19 00:12:00', '2015-10-19 00:12:00', 0, 8, '辽宁省大连市瓦房店市', 2, '瓦房店市', ',465,480,', 480); INSERT INTO `area` VALUES (489, '2015-10-19 00:12:01', '2015-10-19 00:12:01', 0, 9, '辽宁省大连市普兰店市', 2, '普兰店市', ',465,480,', 480); INSERT INTO `area` VALUES (490, '2015-10-19 00:12:02', '2015-10-19 00:12:02', 0, 10, '辽宁省大连市庄河市', 2, '庄河市', ',465,480,', 480); INSERT INTO `area` VALUES (491, '2015-10-19 00:12:03', '2015-10-19 00:12:03', 0, 3, '辽宁省鞍山市', 1, '鞍山市', ',465,', 465); INSERT INTO `area` VALUES (492, '2015-10-19 00:12:04', '2015-10-19 00:12:04', 0, 1, '辽宁省鞍山市铁东区', 2, '铁东区', ',465,491,', 491); INSERT INTO `area` VALUES (493, '2015-10-19 00:12:05', '2015-10-19 00:12:05', 0, 2, '辽宁省鞍山市铁西区', 2, '铁西区', ',465,491,', 491); INSERT INTO `area` VALUES (494, '2015-10-19 00:12:06', '2015-10-19 00:12:06', 0, 3, '辽宁省鞍山市立山区', 2, '立山区', ',465,491,', 491); INSERT INTO `area` VALUES (495, '2015-10-19 00:12:07', '2015-10-19 00:12:07', 0, 4, '辽宁省鞍山市千山区', 2, '千山区', ',465,491,', 491); INSERT INTO `area` VALUES (496, '2015-10-19 00:12:08', '2015-10-19 00:12:08', 0, 5, '辽宁省鞍山市台安县', 2, '台安县', ',465,491,', 491); INSERT INTO `area` VALUES (497, '2015-10-19 00:12:09', '2015-10-19 00:12:09', 0, 6, '辽宁省鞍山市岫岩满族自治县', 2, '岫岩满族自治县', ',465,491,', 491); INSERT INTO `area` VALUES (498, '2015-10-19 00:12:10', '2015-10-19 00:12:10', 0, 7, '辽宁省鞍山市海城市', 2, '海城市', ',465,491,', 491); INSERT INTO `area` VALUES (499, '2015-10-19 00:12:11', '2015-10-19 00:12:11', 0, 4, '辽宁省抚顺市', 1, '抚顺市', ',465,', 465); INSERT INTO `area` VALUES (500, '2015-10-19 00:12:12', '2015-10-19 00:12:12', 0, 1, '辽宁省抚顺市新抚区', 2, '新抚区', ',465,499,', 499); INSERT INTO `area` VALUES (501, '2015-10-19 00:12:13', '2015-10-19 00:12:13', 0, 2, '辽宁省抚顺市东洲区', 2, '东洲区', ',465,499,', 499); INSERT INTO `area` VALUES (502, '2015-10-19 00:12:14', '2015-10-19 00:12:14', 0, 3, '辽宁省抚顺市望花区', 2, '望花区', ',465,499,', 499); INSERT INTO `area` VALUES (503, '2015-10-19 00:12:15', '2015-10-19 00:12:15', 0, 4, '辽宁省抚顺市顺城区', 2, '顺城区', ',465,499,', 499); INSERT INTO `area` VALUES (504, '2015-10-19 00:12:16', '2015-10-19 00:12:16', 0, 5, '辽宁省抚顺市抚顺县', 2, '抚顺县', ',465,499,', 499); INSERT INTO `area` VALUES (505, '2015-10-19 00:12:17', '2015-10-19 00:12:17', 0, 6, '辽宁省抚顺市新宾满族自治县', 2, '新宾满族自治县', ',465,499,', 499); INSERT INTO `area` VALUES (506, '2015-10-19 00:12:18', '2015-10-19 00:12:18', 0, 7, '辽宁省抚顺市清原满族自治县', 2, '清原满族自治县', ',465,499,', 499); INSERT INTO `area` VALUES (507, '2015-10-19 00:12:19', '2015-10-19 00:12:19', 0, 5, '辽宁省本溪市', 1, '本溪市', ',465,', 465); INSERT INTO `area` VALUES (508, '2015-10-19 00:12:20', '2015-10-19 00:12:20', 0, 1, '辽宁省本溪市平山区', 2, '平山区', ',465,507,', 507); INSERT INTO `area` VALUES (509, '2015-10-19 00:12:21', '2015-10-19 00:12:21', 0, 2, '辽宁省本溪市溪湖区', 2, '溪湖区', ',465,507,', 507); INSERT INTO `area` VALUES (510, '2015-10-19 00:12:22', '2015-10-19 00:12:22', 0, 3, '辽宁省本溪市明山区', 2, '明山区', ',465,507,', 507); INSERT INTO `area` VALUES (511, '2015-10-19 00:12:23', '2015-10-19 00:12:23', 0, 4, '辽宁省本溪市南芬区', 2, '南芬区', ',465,507,', 507); INSERT INTO `area` VALUES (512, '2015-10-19 00:12:24', '2015-10-19 00:12:24', 0, 5, '辽宁省本溪市本溪满族自治县', 2, '本溪满族自治县', ',465,507,', 507); INSERT INTO `area` VALUES (513, '2015-10-19 00:12:25', '2015-10-19 00:12:25', 0, 6, '辽宁省本溪市桓仁满族自治县', 2, '桓仁满族自治县', ',465,507,', 507); INSERT INTO `area` VALUES (514, '2015-10-19 00:12:26', '2015-10-19 00:12:26', 0, 6, '辽宁省丹东市', 1, '丹东市', ',465,', 465); INSERT INTO `area` VALUES (515, '2015-10-19 00:12:27', '2015-10-19 00:12:27', 0, 1, '辽宁省丹东市元宝区', 2, '元宝区', ',465,514,', 514); INSERT INTO `area` VALUES (516, '2015-10-19 00:12:28', '2015-10-19 00:12:28', 0, 2, '辽宁省丹东市振兴区', 2, '振兴区', ',465,514,', 514); INSERT INTO `area` VALUES (517, '2015-10-19 00:12:29', '2015-10-19 00:12:29', 0, 3, '辽宁省丹东市振安区', 2, '振安区', ',465,514,', 514); INSERT INTO `area` VALUES (518, '2015-10-19 00:12:30', '2015-10-19 00:12:30', 0, 4, '辽宁省丹东市宽甸满族自治县', 2, '宽甸满族自治县', ',465,514,', 514); INSERT INTO `area` VALUES (519, '2015-10-19 00:12:31', '2015-10-19 00:12:31', 0, 5, '辽宁省丹东市东港市', 2, '东港市', ',465,514,', 514); INSERT INTO `area` VALUES (520, '2015-10-19 00:12:32', '2015-10-19 00:12:32', 0, 6, '辽宁省丹东市凤城市', 2, '凤城市', ',465,514,', 514); INSERT INTO `area` VALUES (521, '2015-10-19 00:12:33', '2015-10-19 00:12:33', 0, 7, '辽宁省锦州市', 1, '锦州市', ',465,', 465); INSERT INTO `area` VALUES (522, '2015-10-19 00:12:34', '2015-10-19 00:12:34', 0, 1, '辽宁省锦州市古塔区', 2, '古塔区', ',465,521,', 521); INSERT INTO `area` VALUES (523, '2015-10-19 00:12:35', '2015-10-19 00:12:35', 0, 2, '辽宁省锦州市凌河区', 2, '凌河区', ',465,521,', 521); INSERT INTO `area` VALUES (524, '2015-10-19 00:12:36', '2015-10-19 00:12:36', 0, 3, '辽宁省锦州市太和区', 2, '太和区', ',465,521,', 521); INSERT INTO `area` VALUES (525, '2015-10-19 00:12:37', '2015-10-19 00:12:37', 0, 4, '辽宁省锦州市黑山县', 2, '黑山县', ',465,521,', 521); INSERT INTO `area` VALUES (526, '2015-10-19 00:12:38', '2015-10-19 00:12:38', 0, 5, '辽宁省锦州市义县', 2, '义县', ',465,521,', 521); INSERT INTO `area` VALUES (527, '2015-10-19 00:12:39', '2015-10-19 00:12:39', 0, 6, '辽宁省锦州市凌海市', 2, '凌海市', ',465,521,', 521); INSERT INTO `area` VALUES (528, '2015-10-19 00:12:40', '2015-10-19 00:12:40', 0, 7, '辽宁省锦州市北镇市', 2, '北镇市', ',465,521,', 521); INSERT INTO `area` VALUES (529, '2015-10-19 00:12:41', '2015-10-19 00:12:41', 0, 8, '辽宁省营口市', 1, '营口市', ',465,', 465); INSERT INTO `area` VALUES (530, '2015-10-19 00:12:42', '2015-10-19 00:12:42', 0, 1, '辽宁省营口市站前区', 2, '站前区', ',465,529,', 529); INSERT INTO `area` VALUES (531, '2015-10-19 00:12:43', '2015-10-19 00:12:43', 0, 2, '辽宁省营口市西市区', 2, '西市区', ',465,529,', 529); INSERT INTO `area` VALUES (532, '2015-10-19 00:12:44', '2015-10-19 00:12:44', 0, 3, '辽宁省营口市鲅鱼圈区', 2, '鲅鱼圈区', ',465,529,', 529); INSERT INTO `area` VALUES (533, '2015-10-19 00:12:45', '2015-10-19 00:12:45', 0, 4, '辽宁省营口市老边区', 2, '老边区', ',465,529,', 529); INSERT INTO `area` VALUES (534, '2015-10-19 00:12:46', '2015-10-19 00:12:46', 0, 5, '辽宁省营口市盖州市', 2, '盖州市', ',465,529,', 529); INSERT INTO `area` VALUES (535, '2015-10-19 00:12:47', '2015-10-19 00:12:47', 0, 6, '辽宁省营口市大石桥市', 2, '大石桥市', ',465,529,', 529); INSERT INTO `area` VALUES (536, '2015-10-19 00:12:48', '2015-10-19 00:12:48', 0, 9, '辽宁省阜新市', 1, '阜新市', ',465,', 465); INSERT INTO `area` VALUES (537, '2015-10-19 00:12:49', '2015-10-19 00:12:49', 0, 1, '辽宁省阜新市海州区', 2, '海州区', ',465,536,', 536); INSERT INTO `area` VALUES (538, '2015-10-19 00:12:50', '2015-10-19 00:12:50', 0, 2, '辽宁省阜新市新邱区', 2, '新邱区', ',465,536,', 536); INSERT INTO `area` VALUES (539, '2015-10-19 00:12:51', '2015-10-19 00:12:51', 0, 3, '辽宁省阜新市太平区', 2, '太平区', ',465,536,', 536); INSERT INTO `area` VALUES (540, '2015-10-19 00:12:52', '2015-10-19 00:12:52', 0, 4, '辽宁省阜新市清河门区', 2, '清河门区', ',465,536,', 536); INSERT INTO `area` VALUES (541, '2015-10-19 00:12:53', '2015-10-19 00:12:53', 0, 5, '辽宁省阜新市细河区', 2, '细河区', ',465,536,', 536); INSERT INTO `area` VALUES (542, '2015-10-19 00:12:54', '2015-10-19 00:12:54', 0, 6, '辽宁省阜新市阜新蒙古族自治县', 2, '阜新蒙古族自治县', ',465,536,', 536); INSERT INTO `area` VALUES (543, '2015-10-19 00:12:55', '2015-10-19 00:12:55', 0, 7, '辽宁省阜新市彰武县', 2, '彰武县', ',465,536,', 536); INSERT INTO `area` VALUES (544, '2015-10-19 00:12:56', '2015-10-19 00:12:56', 0, 10, '辽宁省辽阳市', 1, '辽阳市', ',465,', 465); INSERT INTO `area` VALUES (545, '2015-10-19 00:12:57', '2015-10-19 00:12:57', 0, 1, '辽宁省辽阳市白塔区', 2, '白塔区', ',465,544,', 544); INSERT INTO `area` VALUES (546, '2015-10-19 00:12:58', '2015-10-19 00:12:58', 0, 2, '辽宁省辽阳市文圣区', 2, '文圣区', ',465,544,', 544); INSERT INTO `area` VALUES (547, '2015-10-19 00:12:59', '2015-10-19 00:12:59', 0, 3, '辽宁省辽阳市宏伟区', 2, '宏伟区', ',465,544,', 544); INSERT INTO `area` VALUES (548, '2015-10-19 00:13:00', '2015-10-19 00:13:00', 0, 4, '辽宁省辽阳市弓长岭区', 2, '弓长岭区', ',465,544,', 544); INSERT INTO `area` VALUES (549, '2015-10-19 00:13:01', '2015-10-19 00:13:01', 0, 5, '辽宁省辽阳市太子河区', 2, '太子河区', ',465,544,', 544); INSERT INTO `area` VALUES (550, '2015-10-19 00:13:02', '2015-10-19 00:13:02', 0, 6, '辽宁省辽阳市辽阳县', 2, '辽阳县', ',465,544,', 544); INSERT INTO `area` VALUES (551, '2015-10-19 00:13:03', '2015-10-19 00:13:03', 0, 7, '辽宁省辽阳市灯塔市', 2, '灯塔市', ',465,544,', 544); INSERT INTO `area` VALUES (552, '2015-10-19 00:13:04', '2015-10-19 00:13:04', 0, 11, '辽宁省盘锦市', 1, '盘锦市', ',465,', 465); INSERT INTO `area` VALUES (553, '2015-10-19 00:13:05', '2015-10-19 00:13:05', 0, 1, '辽宁省盘锦市双台子区', 2, '双台子区', ',465,552,', 552); INSERT INTO `area` VALUES (554, '2015-10-19 00:13:06', '2015-10-19 00:13:06', 0, 2, '辽宁省盘锦市兴隆台区', 2, '兴隆台区', ',465,552,', 552); INSERT INTO `area` VALUES (555, '2015-10-19 00:13:07', '2015-10-19 00:13:07', 0, 3, '辽宁省盘锦市大洼县', 2, '大洼县', ',465,552,', 552); INSERT INTO `area` VALUES (556, '2015-10-19 00:13:08', '2015-10-19 00:13:08', 0, 4, '辽宁省盘锦市盘山县', 2, '盘山县', ',465,552,', 552); INSERT INTO `area` VALUES (557, '2015-10-19 00:13:09', '2015-10-19 00:13:09', 0, 12, '辽宁省铁岭市', 1, '铁岭市', ',465,', 465); INSERT INTO `area` VALUES (558, '2015-10-19 00:13:10', '2015-10-19 00:13:10', 0, 1, '辽宁省铁岭市银州区', 2, '银州区', ',465,557,', 557); INSERT INTO `area` VALUES (559, '2015-10-19 00:13:11', '2015-10-19 00:13:11', 0, 2, '辽宁省铁岭市清河区', 2, '清河区', ',465,557,', 557); INSERT INTO `area` VALUES (560, '2015-10-19 00:13:12', '2015-10-19 00:13:12', 0, 3, '辽宁省铁岭市铁岭县', 2, '铁岭县', ',465,557,', 557); INSERT INTO `area` VALUES (561, '2015-10-19 00:13:13', '2015-10-19 00:13:13', 0, 4, '辽宁省铁岭市西丰县', 2, '西丰县', ',465,557,', 557); INSERT INTO `area` VALUES (562, '2015-10-19 00:13:14', '2015-10-19 00:13:14', 0, 5, '辽宁省铁岭市昌图县', 2, '昌图县', ',465,557,', 557); INSERT INTO `area` VALUES (563, '2015-10-19 00:13:15', '2015-10-19 00:13:15', 0, 6, '辽宁省铁岭市调兵山市', 2, '调兵山市', ',465,557,', 557); INSERT INTO `area` VALUES (564, '2015-10-19 00:13:16', '2015-10-19 00:13:16', 0, 7, '辽宁省铁岭市开原市', 2, '开原市', ',465,557,', 557); INSERT INTO `area` VALUES (565, '2015-10-19 00:13:17', '2015-10-19 00:13:17', 0, 13, '辽宁省朝阳市', 1, '朝阳市', ',465,', 465); INSERT INTO `area` VALUES (566, '2015-10-19 00:13:18', '2015-10-19 00:13:18', 0, 1, '辽宁省朝阳市双塔区', 2, '双塔区', ',465,565,', 565); INSERT INTO `area` VALUES (567, '2015-10-19 00:13:19', '2015-10-19 00:13:19', 0, 2, '辽宁省朝阳市龙城区', 2, '龙城区', ',465,565,', 565); INSERT INTO `area` VALUES (568, '2015-10-19 00:13:20', '2015-10-19 00:13:20', 0, 3, '辽宁省朝阳市朝阳县', 2, '朝阳县', ',465,565,', 565); INSERT INTO `area` VALUES (569, '2015-10-19 00:13:21', '2015-10-19 00:13:21', 0, 4, '辽宁省朝阳市建平县', 2, '建平县', ',465,565,', 565); INSERT INTO `area` VALUES (570, '2015-10-19 00:13:22', '2015-10-19 00:13:22', 0, 5, '辽宁省朝阳市喀喇沁左翼蒙古族自治县', 2, '喀喇沁左翼蒙古族自治县', ',465,565,', 565); INSERT INTO `area` VALUES (571, '2015-10-19 00:13:23', '2015-10-19 00:13:23', 0, 6, '辽宁省朝阳市北票市', 2, '北票市', ',465,565,', 565); INSERT INTO `area` VALUES (572, '2015-10-19 00:13:24', '2015-10-19 00:13:24', 0, 7, '辽宁省朝阳市凌源市', 2, '凌源市', ',465,565,', 565); INSERT INTO `area` VALUES (573, '2015-10-19 00:13:25', '2015-10-19 00:13:25', 0, 14, '辽宁省葫芦岛市', 1, '葫芦岛市', ',465,', 465); INSERT INTO `area` VALUES (574, '2015-10-19 00:13:26', '2015-10-19 00:13:26', 0, 1, '辽宁省葫芦岛市连山区', 2, '连山区', ',465,573,', 573); INSERT INTO `area` VALUES (575, '2015-10-19 00:13:27', '2015-10-19 00:13:27', 0, 2, '辽宁省葫芦岛市龙港区', 2, '龙港区', ',465,573,', 573); INSERT INTO `area` VALUES (576, '2015-10-19 00:13:28', '2015-10-19 00:13:28', 0, 3, '辽宁省葫芦岛市南票区', 2, '南票区', ',465,573,', 573); INSERT INTO `area` VALUES (577, '2015-10-19 00:13:29', '2015-10-19 00:13:29', 0, 4, '辽宁省葫芦岛市绥中县', 2, '绥中县', ',465,573,', 573); INSERT INTO `area` VALUES (578, '2015-10-19 00:13:30', '2015-10-19 00:13:30', 0, 5, '辽宁省葫芦岛市建昌县', 2, '建昌县', ',465,573,', 573); INSERT INTO `area` VALUES (579, '2015-10-19 00:13:31', '2015-10-19 00:13:31', 0, 6, '辽宁省葫芦岛市兴城市', 2, '兴城市', ',465,573,', 573); INSERT INTO `area` VALUES (580, '2015-10-19 00:13:32', '2015-10-19 00:13:32', 0, 7, '吉林省', 0, '吉林省', ',', NULL); INSERT INTO `area` VALUES (581, '2015-10-19 00:13:33', '2015-10-19 00:13:33', 0, 1, '吉林省长春市', 1, '长春市', ',580,', 580); INSERT INTO `area` VALUES (582, '2015-10-19 00:13:34', '2015-10-19 00:13:34', 0, 1, '吉林省长春市南关区', 2, '南关区', ',580,581,', 581); INSERT INTO `area` VALUES (583, '2015-10-19 00:13:35', '2015-10-19 00:13:35', 0, 2, '吉林省长春市宽城区', 2, '宽城区', ',580,581,', 581); INSERT INTO `area` VALUES (584, '2015-10-19 00:13:36', '2015-10-19 00:13:36', 0, 3, '吉林省长春市朝阳区', 2, '朝阳区', ',580,581,', 581); INSERT INTO `area` VALUES (585, '2015-10-19 00:13:37', '2015-10-19 00:13:37', 0, 4, '吉林省长春市二道区', 2, '二道区', ',580,581,', 581); INSERT INTO `area` VALUES (586, '2015-10-19 00:13:38', '2015-10-19 00:13:38', 0, 5, '吉林省长春市绿园区', 2, '绿园区', ',580,581,', 581); INSERT INTO `area` VALUES (587, '2015-10-19 00:13:39', '2015-10-19 00:13:39', 0, 6, '吉林省长春市双阳区', 2, '双阳区', ',580,581,', 581); INSERT INTO `area` VALUES (588, '2015-10-19 00:13:40', '2015-10-19 00:13:40', 0, 7, '吉林省长春市农安县', 2, '农安县', ',580,581,', 581); INSERT INTO `area` VALUES (589, '2015-10-19 00:13:41', '2015-10-19 00:13:41', 0, 8, '吉林省长春市九台市', 2, '九台市', ',580,581,', 581); INSERT INTO `area` VALUES (590, '2015-10-19 00:13:42', '2015-10-19 00:13:42', 0, 9, '吉林省长春市榆树市', 2, '榆树市', ',580,581,', 581); INSERT INTO `area` VALUES (591, '2015-10-19 00:13:43', '2015-10-19 00:13:43', 0, 10, '吉林省长春市德惠市', 2, '德惠市', ',580,581,', 581); INSERT INTO `area` VALUES (592, '2015-10-19 00:13:44', '2015-10-19 00:13:44', 0, 2, '吉林省吉林市', 1, '吉林市', ',580,', 580); INSERT INTO `area` VALUES (593, '2015-10-19 00:13:45', '2015-10-19 00:13:45', 0, 1, '吉林省吉林市昌邑区', 2, '昌邑区', ',580,592,', 592); INSERT INTO `area` VALUES (594, '2015-10-19 00:13:46', '2015-10-19 00:13:46', 0, 2, '吉林省吉林市龙潭区', 2, '龙潭区', ',580,592,', 592); INSERT INTO `area` VALUES (595, '2015-10-19 00:13:47', '2015-10-19 00:13:47', 0, 3, '吉林省吉林市船营区', 2, '船营区', ',580,592,', 592); INSERT INTO `area` VALUES (596, '2015-10-19 00:13:48', '2015-10-19 00:13:48', 0, 4, '吉林省吉林市丰满区', 2, '丰满区', ',580,592,', 592); INSERT INTO `area` VALUES (597, '2015-10-19 00:13:49', '2015-10-19 00:13:49', 0, 5, '吉林省吉林市永吉县', 2, '永吉县', ',580,592,', 592); INSERT INTO `area` VALUES (598, '2015-10-19 00:13:50', '2015-10-19 00:13:50', 0, 6, '吉林省吉林市蛟河市', 2, '蛟河市', ',580,592,', 592); INSERT INTO `area` VALUES (599, '2015-10-19 00:13:51', '2015-10-19 00:13:51', 0, 7, '吉林省吉林市桦甸市', 2, '桦甸市', ',580,592,', 592); INSERT INTO `area` VALUES (600, '2015-10-19 00:13:52', '2015-10-19 00:13:52', 0, 8, '吉林省吉林市舒兰市', 2, '舒兰市', ',580,592,', 592); INSERT INTO `area` VALUES (601, '2015-10-19 00:13:53', '2015-10-19 00:13:53', 0, 9, '吉林省吉林市磐石市', 2, '磐石市', ',580,592,', 592); INSERT INTO `area` VALUES (602, '2015-10-19 00:13:54', '2015-10-19 00:13:54', 0, 3, '吉林省四平市', 1, '四平市', ',580,', 580); INSERT INTO `area` VALUES (603, '2015-10-19 00:13:55', '2015-10-19 00:13:55', 0, 1, '吉林省四平市铁西区', 2, '铁西区', ',580,602,', 602); INSERT INTO `area` VALUES (604, '2015-10-19 00:13:56', '2015-10-19 00:13:56', 0, 2, '吉林省四平市铁东区', 2, '铁东区', ',580,602,', 602); INSERT INTO `area` VALUES (605, '2015-10-19 00:13:57', '2015-10-19 00:13:57', 0, 3, '吉林省四平市梨树县', 2, '梨树县', ',580,602,', 602); INSERT INTO `area` VALUES (606, '2015-10-19 00:13:58', '2015-10-19 00:13:58', 0, 4, '吉林省四平市伊通满族自治县', 2, '伊通满族自治县', ',580,602,', 602); INSERT INTO `area` VALUES (607, '2015-10-19 00:13:59', '2015-10-19 00:13:59', 0, 5, '吉林省四平市公主岭市', 2, '公主岭市', ',580,602,', 602); INSERT INTO `area` VALUES (608, '2015-10-19 00:14:00', '2015-10-19 00:14:00', 0, 6, '吉林省四平市双辽市', 2, '双辽市', ',580,602,', 602); INSERT INTO `area` VALUES (609, '2015-10-19 00:14:01', '2015-10-19 00:14:01', 0, 4, '吉林省辽源市', 1, '辽源市', ',580,', 580); INSERT INTO `area` VALUES (610, '2015-10-19 00:14:02', '2015-10-19 00:14:02', 0, 1, '吉林省辽源市龙山区', 2, '龙山区', ',580,609,', 609); INSERT INTO `area` VALUES (611, '2015-10-19 00:14:03', '2015-10-19 00:14:03', 0, 2, '吉林省辽源市西安区', 2, '西安区', ',580,609,', 609); INSERT INTO `area` VALUES (612, '2015-10-19 00:14:04', '2015-10-19 00:14:04', 0, 3, '吉林省辽源市东丰县', 2, '东丰县', ',580,609,', 609); INSERT INTO `area` VALUES (613, '2015-10-19 00:14:05', '2015-10-19 00:14:05', 0, 4, '吉林省辽源市东辽县', 2, '东辽县', ',580,609,', 609); INSERT INTO `area` VALUES (614, '2015-10-19 00:14:06', '2015-10-19 00:14:06', 0, 5, '吉林省通化市', 1, '通化市', ',580,', 580); INSERT INTO `area` VALUES (615, '2015-10-19 00:14:07', '2015-10-19 00:14:07', 0, 1, '吉林省通化市东昌区', 2, '东昌区', ',580,614,', 614); INSERT INTO `area` VALUES (616, '2015-10-19 00:14:08', '2015-10-19 00:14:08', 0, 2, '吉林省通化市二道江区', 2, '二道江区', ',580,614,', 614); INSERT INTO `area` VALUES (617, '2015-10-19 00:14:09', '2015-10-19 00:14:09', 0, 3, '吉林省通化市通化县', 2, '通化县', ',580,614,', 614); INSERT INTO `area` VALUES (618, '2015-10-19 00:14:10', '2015-10-19 00:14:10', 0, 4, '吉林省通化市辉南县', 2, '辉南县', ',580,614,', 614); INSERT INTO `area` VALUES (619, '2015-10-19 00:14:11', '2015-10-19 00:14:11', 0, 5, '吉林省通化市柳河县', 2, '柳河县', ',580,614,', 614); INSERT INTO `area` VALUES (620, '2015-10-19 00:14:12', '2015-10-19 00:14:12', 0, 6, '吉林省通化市梅河口市', 2, '梅河口市', ',580,614,', 614); INSERT INTO `area` VALUES (621, '2015-10-19 00:14:13', '2015-10-19 00:14:13', 0, 7, '吉林省通化市集安市', 2, '集安市', ',580,614,', 614); INSERT INTO `area` VALUES (622, '2015-10-19 00:14:14', '2015-10-19 00:14:14', 0, 6, '吉林省白山市', 1, '白山市', ',580,', 580); INSERT INTO `area` VALUES (623, '2015-10-19 00:14:15', '2015-10-19 00:14:15', 0, 1, '吉林省白山市浑江区', 2, '浑江区', ',580,622,', 622); INSERT INTO `area` VALUES (624, '2015-10-19 00:14:16', '2015-10-19 00:14:16', 0, 2, '吉林省白山市江源区', 2, '江源区', ',580,622,', 622); INSERT INTO `area` VALUES (625, '2015-10-19 00:14:17', '2015-10-19 00:14:17', 0, 3, '吉林省白山市抚松县', 2, '抚松县', ',580,622,', 622); INSERT INTO `area` VALUES (626, '2015-10-19 00:14:18', '2015-10-19 00:14:18', 0, 4, '吉林省白山市靖宇县', 2, '靖宇县', ',580,622,', 622); INSERT INTO `area` VALUES (627, '2015-10-19 00:14:19', '2015-10-19 00:14:19', 0, 5, '吉林省白山市长白朝鲜族自治县', 2, '长白朝鲜族自治县', ',580,622,', 622); INSERT INTO `area` VALUES (628, '2015-10-19 00:14:20', '2015-10-19 00:14:20', 0, 6, '吉林省白山市临江市', 2, '临江市', ',580,622,', 622); INSERT INTO `area` VALUES (629, '2015-10-19 00:14:21', '2015-10-19 00:14:21', 0, 7, '吉林省松原市', 1, '松原市', ',580,', 580); INSERT INTO `area` VALUES (630, '2015-10-19 00:14:22', '2015-10-19 00:14:22', 0, 1, '吉林省松原市宁江区', 2, '宁江区', ',580,629,', 629); INSERT INTO `area` VALUES (631, '2015-10-19 00:14:23', '2015-10-19 00:14:23', 0, 2, '吉林省松原市前郭尔罗斯蒙古族自治县', 2, '前郭尔罗斯蒙古族自治县', ',580,629,', 629); INSERT INTO `area` VALUES (632, '2015-10-19 00:14:24', '2015-10-19 00:14:24', 0, 3, '吉林省松原市长岭县', 2, '长岭县', ',580,629,', 629); INSERT INTO `area` VALUES (633, '2015-10-19 00:14:25', '2015-10-19 00:14:25', 0, 4, '吉林省松原市乾安县', 2, '乾安县', ',580,629,', 629); INSERT INTO `area` VALUES (634, '2015-10-19 00:14:26', '2015-10-19 00:14:26', 0, 5, '吉林省松原市扶余市', 2, '扶余市', ',580,629,', 629); INSERT INTO `area` VALUES (635, '2015-10-19 00:14:27', '2015-10-19 00:14:27', 0, 8, '吉林省白城市', 1, '白城市', ',580,', 580); INSERT INTO `area` VALUES (636, '2015-10-19 00:14:28', '2015-10-19 00:14:28', 0, 1, '吉林省白城市洮北区', 2, '洮北区', ',580,635,', 635); INSERT INTO `area` VALUES (637, '2015-10-19 00:14:29', '2015-10-19 00:14:29', 0, 2, '吉林省白城市镇赉县', 2, '镇赉县', ',580,635,', 635); INSERT INTO `area` VALUES (638, '2015-10-19 00:14:30', '2015-10-19 00:14:30', 0, 3, '吉林省白城市通榆县', 2, '通榆县', ',580,635,', 635); INSERT INTO `area` VALUES (639, '2015-10-19 00:14:31', '2015-10-19 00:14:31', 0, 4, '吉林省白城市洮南市', 2, '洮南市', ',580,635,', 635); INSERT INTO `area` VALUES (640, '2015-10-19 00:14:32', '2015-10-19 00:14:32', 0, 5, '吉林省白城市大安市', 2, '大安市', ',580,635,', 635); INSERT INTO `area` VALUES (641, '2015-10-19 00:14:33', '2015-10-19 00:14:33', 0, 9, '吉林省延边朝鲜族自治州', 1, '延边朝鲜族自治州', ',580,', 580); INSERT INTO `area` VALUES (642, '2015-10-19 00:14:34', '2015-10-19 00:14:34', 0, 1, '吉林省延边朝鲜族自治州延吉市', 2, '延吉市', ',580,641,', 641); INSERT INTO `area` VALUES (643, '2015-10-19 00:14:35', '2015-10-19 00:14:35', 0, 2, '吉林省延边朝鲜族自治州图们市', 2, '图们市', ',580,641,', 641); INSERT INTO `area` VALUES (644, '2015-10-19 00:14:36', '2015-10-19 00:14:36', 0, 3, '吉林省延边朝鲜族自治州敦化市', 2, '敦化市', ',580,641,', 641); INSERT INTO `area` VALUES (645, '2015-10-19 00:14:37', '2015-10-19 00:14:37', 0, 4, '吉林省延边朝鲜族自治州珲春市', 2, '珲春市', ',580,641,', 641); INSERT INTO `area` VALUES (646, '2015-10-19 00:14:38', '2015-10-19 00:14:38', 0, 5, '吉林省延边朝鲜族自治州龙井市', 2, '龙井市', ',580,641,', 641); INSERT INTO `area` VALUES (647, '2015-10-19 00:14:39', '2015-10-19 00:14:39', 0, 6, '吉林省延边朝鲜族自治州和龙市', 2, '和龙市', ',580,641,', 641); INSERT INTO `area` VALUES (648, '2015-10-19 00:14:40', '2015-10-19 00:14:40', 0, 7, '吉林省延边朝鲜族自治州汪清县', 2, '汪清县', ',580,641,', 641); INSERT INTO `area` VALUES (649, '2015-10-19 00:14:41', '2015-10-19 00:14:41', 0, 8, '吉林省延边朝鲜族自治州安图县', 2, '安图县', ',580,641,', 641); INSERT INTO `area` VALUES (650, '2015-10-19 00:14:42', '2015-10-19 00:14:42', 0, 8, '黑龙江省', 0, '黑龙江省', ',', NULL); INSERT INTO `area` VALUES (651, '2015-10-19 00:14:43', '2015-10-19 00:14:43', 0, 1, '黑龙江省哈尔滨市', 1, '哈尔滨市', ',650,', 650); INSERT INTO `area` VALUES (652, '2015-10-19 00:14:44', '2015-10-19 00:14:44', 0, 1, '黑龙江省哈尔滨市道里区', 2, '道里区', ',650,651,', 651); INSERT INTO `area` VALUES (653, '2015-10-19 00:14:45', '2015-10-19 00:14:45', 0, 2, '黑龙江省哈尔滨市南岗区', 2, '南岗区', ',650,651,', 651); INSERT INTO `area` VALUES (654, '2015-10-19 00:14:46', '2015-10-19 00:14:46', 0, 3, '黑龙江省哈尔滨市道外区', 2, '道外区', ',650,651,', 651); INSERT INTO `area` VALUES (655, '2015-10-19 00:14:47', '2015-10-19 00:14:47', 0, 4, '黑龙江省哈尔滨市平房区', 2, '平房区', ',650,651,', 651); INSERT INTO `area` VALUES (656, '2015-10-19 00:14:48', '2015-10-19 00:14:48', 0, 5, '黑龙江省哈尔滨市松北区', 2, '松北区', ',650,651,', 651); INSERT INTO `area` VALUES (657, '2015-10-19 00:14:49', '2015-10-19 00:14:49', 0, 6, '黑龙江省哈尔滨市香坊区', 2, '香坊区', ',650,651,', 651); INSERT INTO `area` VALUES (658, '2015-10-19 00:14:50', '2015-10-19 00:14:50', 0, 7, '黑龙江省哈尔滨市呼兰区', 2, '呼兰区', ',650,651,', 651); INSERT INTO `area` VALUES (659, '2015-10-19 00:14:51', '2015-10-19 00:14:51', 0, 8, '黑龙江省哈尔滨市阿城区', 2, '阿城区', ',650,651,', 651); INSERT INTO `area` VALUES (660, '2015-10-19 00:14:52', '2015-10-19 00:14:52', 0, 9, '黑龙江省哈尔滨市依兰县', 2, '依兰县', ',650,651,', 651); INSERT INTO `area` VALUES (661, '2015-10-19 00:14:53', '2015-10-19 00:14:53', 0, 10, '黑龙江省哈尔滨市方正县', 2, '方正县', ',650,651,', 651); INSERT INTO `area` VALUES (662, '2015-10-19 00:14:54', '2015-10-19 00:14:54', 0, 11, '黑龙江省哈尔滨市宾县', 2, '宾县', ',650,651,', 651); INSERT INTO `area` VALUES (663, '2015-10-19 00:14:55', '2015-10-19 00:14:55', 0, 12, '黑龙江省哈尔滨市巴彦县', 2, '巴彦县', ',650,651,', 651); INSERT INTO `area` VALUES (664, '2015-10-19 00:14:56', '2015-10-19 00:14:56', 0, 13, '黑龙江省哈尔滨市木兰县', 2, '木兰县', ',650,651,', 651); INSERT INTO `area` VALUES (665, '2015-10-19 00:14:57', '2015-10-19 00:14:57', 0, 14, '黑龙江省哈尔滨市通河县', 2, '通河县', ',650,651,', 651); INSERT INTO `area` VALUES (666, '2015-10-19 00:14:58', '2015-10-19 00:14:58', 0, 15, '黑龙江省哈尔滨市延寿县', 2, '延寿县', ',650,651,', 651); INSERT INTO `area` VALUES (667, '2015-10-19 00:14:59', '2015-10-19 00:14:59', 0, 16, '黑龙江省哈尔滨市双城市', 2, '双城市', ',650,651,', 651); INSERT INTO `area` VALUES (668, '2015-10-19 00:15:00', '2015-10-19 00:15:00', 0, 17, '黑龙江省哈尔滨市尚志市', 2, '尚志市', ',650,651,', 651); INSERT INTO `area` VALUES (669, '2015-10-19 00:15:01', '2015-10-19 00:15:01', 0, 18, '黑龙江省哈尔滨市五常市', 2, '五常市', ',650,651,', 651); INSERT INTO `area` VALUES (670, '2015-10-19 00:15:02', '2015-10-19 00:15:02', 0, 2, '黑龙江省齐齐哈尔市', 1, '齐齐哈尔市', ',650,', 650); INSERT INTO `area` VALUES (671, '2015-10-19 00:15:03', '2015-10-19 00:15:03', 0, 1, '黑龙江省齐齐哈尔市龙沙区', 2, '龙沙区', ',650,670,', 670); INSERT INTO `area` VALUES (672, '2015-10-19 00:15:04', '2015-10-19 00:15:04', 0, 2, '黑龙江省齐齐哈尔市建华区', 2, '建华区', ',650,670,', 670); INSERT INTO `area` VALUES (673, '2015-10-19 00:15:05', '2015-10-19 00:15:05', 0, 3, '黑龙江省齐齐哈尔市铁锋区', 2, '铁锋区', ',650,670,', 670); INSERT INTO `area` VALUES (674, '2015-10-19 00:15:06', '2015-10-19 00:15:06', 0, 4, '黑龙江省齐齐哈尔市昂昂溪区', 2, '昂昂溪区', ',650,670,', 670); INSERT INTO `area` VALUES (675, '2015-10-19 00:15:07', '2015-10-19 00:15:07', 0, 5, '黑龙江省齐齐哈尔市富拉尔基区', 2, '富拉尔基区', ',650,670,', 670); INSERT INTO `area` VALUES (676, '2015-10-19 00:15:08', '2015-10-19 00:15:08', 0, 6, '黑龙江省齐齐哈尔市碾子山区', 2, '碾子山区', ',650,670,', 670); INSERT INTO `area` VALUES (677, '2015-10-19 00:15:09', '2015-10-19 00:15:09', 0, 7, '黑龙江省齐齐哈尔市梅里斯达斡尔族区', 2, '梅里斯达斡尔族区', ',650,670,', 670); INSERT INTO `area` VALUES (678, '2015-10-19 00:15:10', '2015-10-19 00:15:10', 0, 8, '黑龙江省齐齐哈尔市龙江县', 2, '龙江县', ',650,670,', 670); INSERT INTO `area` VALUES (679, '2015-10-19 00:15:11', '2015-10-19 00:15:11', 0, 9, '黑龙江省齐齐哈尔市依安县', 2, '依安县', ',650,670,', 670); INSERT INTO `area` VALUES (680, '2015-10-19 00:15:12', '2015-10-19 00:15:12', 0, 10, '黑龙江省齐齐哈尔市泰来县', 2, '泰来县', ',650,670,', 670); INSERT INTO `area` VALUES (681, '2015-10-19 00:15:13', '2015-10-19 00:15:13', 0, 11, '黑龙江省齐齐哈尔市甘南县', 2, '甘南县', ',650,670,', 670); INSERT INTO `area` VALUES (682, '2015-10-19 00:15:14', '2015-10-19 00:15:14', 0, 12, '黑龙江省齐齐哈尔市富裕县', 2, '富裕县', ',650,670,', 670); INSERT INTO `area` VALUES (683, '2015-10-19 00:15:15', '2015-10-19 00:15:15', 0, 13, '黑龙江省齐齐哈尔市克山县', 2, '克山县', ',650,670,', 670); INSERT INTO `area` VALUES (684, '2015-10-19 00:15:16', '2015-10-19 00:15:16', 0, 14, '黑龙江省齐齐哈尔市克东县', 2, '克东县', ',650,670,', 670); INSERT INTO `area` VALUES (685, '2015-10-19 00:15:17', '2015-10-19 00:15:17', 0, 15, '黑龙江省齐齐哈尔市拜泉县', 2, '拜泉县', ',650,670,', 670); INSERT INTO `area` VALUES (686, '2015-10-19 00:15:18', '2015-10-19 00:15:18', 0, 16, '黑龙江省齐齐哈尔市讷河市', 2, '讷河市', ',650,670,', 670); INSERT INTO `area` VALUES (687, '2015-10-19 00:15:19', '2015-10-19 00:15:19', 0, 3, '黑龙江省鸡西市', 1, '鸡西市', ',650,', 650); INSERT INTO `area` VALUES (688, '2015-10-19 00:15:20', '2015-10-19 00:15:20', 0, 1, '黑龙江省鸡西市鸡冠区', 2, '鸡冠区', ',650,687,', 687); INSERT INTO `area` VALUES (689, '2015-10-19 00:15:21', '2015-10-19 00:15:21', 0, 2, '黑龙江省鸡西市恒山区', 2, '恒山区', ',650,687,', 687); INSERT INTO `area` VALUES (690, '2015-10-19 00:15:22', '2015-10-19 00:15:22', 0, 3, '黑龙江省鸡西市滴道区', 2, '滴道区', ',650,687,', 687); INSERT INTO `area` VALUES (691, '2015-10-19 00:15:23', '2015-10-19 00:15:23', 0, 4, '黑龙江省鸡西市梨树区', 2, '梨树区', ',650,687,', 687); INSERT INTO `area` VALUES (692, '2015-10-19 00:15:24', '2015-10-19 00:15:24', 0, 5, '黑龙江省鸡西市城子河区', 2, '城子河区', ',650,687,', 687); INSERT INTO `area` VALUES (693, '2015-10-19 00:15:25', '2015-10-19 00:15:25', 0, 6, '黑龙江省鸡西市麻山区', 2, '麻山区', ',650,687,', 687); INSERT INTO `area` VALUES (694, '2015-10-19 00:15:26', '2015-10-19 00:15:26', 0, 7, '黑龙江省鸡西市鸡东县', 2, '鸡东县', ',650,687,', 687); INSERT INTO `area` VALUES (695, '2015-10-19 00:15:27', '2015-10-19 00:15:27', 0, 8, '黑龙江省鸡西市虎林市', 2, '虎林市', ',650,687,', 687); INSERT INTO `area` VALUES (696, '2015-10-19 00:15:28', '2015-10-19 00:15:28', 0, 9, '黑龙江省鸡西市密山市', 2, '密山市', ',650,687,', 687); INSERT INTO `area` VALUES (697, '2015-10-19 00:15:29', '2015-10-19 00:15:29', 0, 4, '黑龙江省鹤岗市', 1, '鹤岗市', ',650,', 650); INSERT INTO `area` VALUES (698, '2015-10-19 00:15:30', '2015-10-19 00:15:30', 0, 1, '黑龙江省鹤岗市向阳区', 2, '向阳区', ',650,697,', 697); INSERT INTO `area` VALUES (699, '2015-10-19 00:15:31', '2015-10-19 00:15:31', 0, 2, '黑龙江省鹤岗市工农区', 2, '工农区', ',650,697,', 697); INSERT INTO `area` VALUES (700, '2015-10-19 00:15:32', '2015-10-19 00:15:32', 0, 3, '黑龙江省鹤岗市南山区', 2, '南山区', ',650,697,', 697); INSERT INTO `area` VALUES (701, '2015-10-19 00:15:33', '2015-10-19 00:15:33', 0, 4, '黑龙江省鹤岗市兴安区', 2, '兴安区', ',650,697,', 697); INSERT INTO `area` VALUES (702, '2015-10-19 00:15:34', '2015-10-19 00:15:34', 0, 5, '黑龙江省鹤岗市东山区', 2, '东山区', ',650,697,', 697); INSERT INTO `area` VALUES (703, '2015-10-19 00:15:35', '2015-10-19 00:15:35', 0, 6, '黑龙江省鹤岗市兴山区', 2, '兴山区', ',650,697,', 697); INSERT INTO `area` VALUES (704, '2015-10-19 00:15:36', '2015-10-19 00:15:36', 0, 7, '黑龙江省鹤岗市萝北县', 2, '萝北县', ',650,697,', 697); INSERT INTO `area` VALUES (705, '2015-10-19 00:15:37', '2015-10-19 00:15:37', 0, 8, '黑龙江省鹤岗市绥滨县', 2, '绥滨县', ',650,697,', 697); INSERT INTO `area` VALUES (706, '2015-10-19 00:15:38', '2015-10-19 00:15:38', 0, 5, '黑龙江省双鸭山市', 1, '双鸭山市', ',650,', 650); INSERT INTO `area` VALUES (707, '2015-10-19 00:15:39', '2015-10-19 00:15:39', 0, 1, '黑龙江省双鸭山市尖山区', 2, '尖山区', ',650,706,', 706); INSERT INTO `area` VALUES (708, '2015-10-19 00:15:40', '2015-10-19 00:15:40', 0, 2, '黑龙江省双鸭山市岭东区', 2, '岭东区', ',650,706,', 706); INSERT INTO `area` VALUES (709, '2015-10-19 00:15:41', '2015-10-19 00:15:41', 0, 3, '黑龙江省双鸭山市四方台区', 2, '四方台区', ',650,706,', 706); INSERT INTO `area` VALUES (710, '2015-10-19 00:15:42', '2015-10-19 00:15:42', 0, 4, '黑龙江省双鸭山市宝山区', 2, '宝山区', ',650,706,', 706); INSERT INTO `area` VALUES (711, '2015-10-19 00:15:43', '2015-10-19 00:15:43', 0, 5, '黑龙江省双鸭山市集贤县', 2, '集贤县', ',650,706,', 706); INSERT INTO `area` VALUES (712, '2015-10-19 00:15:44', '2015-10-19 00:15:44', 0, 6, '黑龙江省双鸭山市友谊县', 2, '友谊县', ',650,706,', 706); INSERT INTO `area` VALUES (713, '2015-10-19 00:15:45', '2015-10-19 00:15:45', 0, 7, '黑龙江省双鸭山市宝清县', 2, '宝清县', ',650,706,', 706); INSERT INTO `area` VALUES (714, '2015-10-19 00:15:46', '2015-10-19 00:15:46', 0, 8, '黑龙江省双鸭山市饶河县', 2, '饶河县', ',650,706,', 706); INSERT INTO `area` VALUES (715, '2015-10-19 00:15:47', '2015-10-19 00:15:47', 0, 6, '黑龙江省大庆市', 1, '大庆市', ',650,', 650); INSERT INTO `area` VALUES (716, '2015-10-19 00:15:48', '2015-10-19 00:15:48', 0, 1, '黑龙江省大庆市萨尔图区', 2, '萨尔图区', ',650,715,', 715); INSERT INTO `area` VALUES (717, '2015-10-19 00:15:49', '2015-10-19 00:15:49', 0, 2, '黑龙江省大庆市龙凤区', 2, '龙凤区', ',650,715,', 715); INSERT INTO `area` VALUES (718, '2015-10-19 00:15:50', '2015-10-19 00:15:50', 0, 3, '黑龙江省大庆市让胡路区', 2, '让胡路区', ',650,715,', 715); INSERT INTO `area` VALUES (719, '2015-10-19 00:15:51', '2015-10-19 00:15:51', 0, 4, '黑龙江省大庆市红岗区', 2, '红岗区', ',650,715,', 715); INSERT INTO `area` VALUES (720, '2015-10-19 00:15:52', '2015-10-19 00:15:52', 0, 5, '黑龙江省大庆市大同区', 2, '大同区', ',650,715,', 715); INSERT INTO `area` VALUES (721, '2015-10-19 00:15:53', '2015-10-19 00:15:53', 0, 6, '黑龙江省大庆市肇州县', 2, '肇州县', ',650,715,', 715); INSERT INTO `area` VALUES (722, '2015-10-19 00:15:54', '2015-10-19 00:15:54', 0, 7, '黑龙江省大庆市肇源县', 2, '肇源县', ',650,715,', 715); INSERT INTO `area` VALUES (723, '2015-10-19 00:15:55', '2015-10-19 00:15:55', 0, 8, '黑龙江省大庆市林甸县', 2, '林甸县', ',650,715,', 715); INSERT INTO `area` VALUES (724, '2015-10-19 00:15:56', '2015-10-19 00:15:56', 0, 9, '黑龙江省大庆市杜尔伯特蒙古族自治县', 2, '杜尔伯特蒙古族自治县', ',650,715,', 715); INSERT INTO `area` VALUES (725, '2015-10-19 00:15:57', '2015-10-19 00:15:57', 0, 7, '黑龙江省伊春市', 1, '伊春市', ',650,', 650); INSERT INTO `area` VALUES (726, '2015-10-19 00:15:58', '2015-10-19 00:15:58', 0, 1, '黑龙江省伊春市伊春区', 2, '伊春区', ',650,725,', 725); INSERT INTO `area` VALUES (727, '2015-10-19 00:15:59', '2015-10-19 00:15:59', 0, 2, '黑龙江省伊春市南岔区', 2, '南岔区', ',650,725,', 725); INSERT INTO `area` VALUES (728, '2015-10-19 00:16:00', '2015-10-19 00:16:00', 0, 3, '黑龙江省伊春市友好区', 2, '友好区', ',650,725,', 725); INSERT INTO `area` VALUES (729, '2015-10-19 00:16:01', '2015-10-19 00:16:01', 0, 4, '黑龙江省伊春市西林区', 2, '西林区', ',650,725,', 725); INSERT INTO `area` VALUES (730, '2015-10-19 00:16:02', '2015-10-19 00:16:02', 0, 5, '黑龙江省伊春市翠峦区', 2, '翠峦区', ',650,725,', 725); INSERT INTO `area` VALUES (731, '2015-10-19 00:16:03', '2015-10-19 00:16:03', 0, 6, '黑龙江省伊春市新青区', 2, '新青区', ',650,725,', 725); INSERT INTO `area` VALUES (732, '2015-10-19 00:16:04', '2015-10-19 00:16:04', 0, 7, '黑龙江省伊春市美溪区', 2, '美溪区', ',650,725,', 725); INSERT INTO `area` VALUES (733, '2015-10-19 00:16:05', '2015-10-19 00:16:05', 0, 8, '黑龙江省伊春市金山屯区', 2, '金山屯区', ',650,725,', 725); INSERT INTO `area` VALUES (734, '2015-10-19 00:16:06', '2015-10-19 00:16:06', 0, 9, '黑龙江省伊春市五营区', 2, '五营区', ',650,725,', 725); INSERT INTO `area` VALUES (735, '2015-10-19 00:16:07', '2015-10-19 00:16:07', 0, 10, '黑龙江省伊春市乌马河区', 2, '乌马河区', ',650,725,', 725); INSERT INTO `area` VALUES (736, '2015-10-19 00:16:08', '2015-10-19 00:16:08', 0, 11, '黑龙江省伊春市汤旺河区', 2, '汤旺河区', ',650,725,', 725); INSERT INTO `area` VALUES (737, '2015-10-19 00:16:09', '2015-10-19 00:16:09', 0, 12, '黑龙江省伊春市带岭区', 2, '带岭区', ',650,725,', 725); INSERT INTO `area` VALUES (738, '2015-10-19 00:16:10', '2015-10-19 00:16:10', 0, 13, '黑龙江省伊春市乌伊岭区', 2, '乌伊岭区', ',650,725,', 725); INSERT INTO `area` VALUES (739, '2015-10-19 00:16:11', '2015-10-19 00:16:11', 0, 14, '黑龙江省伊春市红星区', 2, '红星区', ',650,725,', 725); INSERT INTO `area` VALUES (740, '2015-10-19 00:16:12', '2015-10-19 00:16:12', 0, 15, '黑龙江省伊春市上甘岭区', 2, '上甘岭区', ',650,725,', 725); INSERT INTO `area` VALUES (741, '2015-10-19 00:16:13', '2015-10-19 00:16:13', 0, 16, '黑龙江省伊春市嘉荫县', 2, '嘉荫县', ',650,725,', 725); INSERT INTO `area` VALUES (742, '2015-10-19 00:16:14', '2015-10-19 00:16:14', 0, 17, '黑龙江省伊春市铁力市', 2, '铁力市', ',650,725,', 725); INSERT INTO `area` VALUES (743, '2015-10-19 00:16:15', '2015-10-19 00:16:15', 0, 8, '黑龙江省佳木斯市', 1, '佳木斯市', ',650,', 650); INSERT INTO `area` VALUES (744, '2015-10-19 00:16:16', '2015-10-19 00:16:16', 0, 1, '黑龙江省佳木斯市向阳区', 2, '向阳区', ',650,743,', 743); INSERT INTO `area` VALUES (745, '2015-10-19 00:16:17', '2015-10-19 00:16:17', 0, 2, '黑龙江省佳木斯市前进区', 2, '前进区', ',650,743,', 743); INSERT INTO `area` VALUES (746, '2015-10-19 00:16:18', '2015-10-19 00:16:18', 0, 3, '黑龙江省佳木斯市东风区', 2, '东风区', ',650,743,', 743); INSERT INTO `area` VALUES (747, '2015-10-19 00:16:19', '2015-10-19 00:16:19', 0, 4, '黑龙江省佳木斯市郊区', 2, '郊区', ',650,743,', 743); INSERT INTO `area` VALUES (748, '2015-10-19 00:16:20', '2015-10-19 00:16:20', 0, 5, '黑龙江省佳木斯市桦南县', 2, '桦南县', ',650,743,', 743); INSERT INTO `area` VALUES (749, '2015-10-19 00:16:21', '2015-10-19 00:16:21', 0, 6, '黑龙江省佳木斯市桦川县', 2, '桦川县', ',650,743,', 743); INSERT INTO `area` VALUES (750, '2015-10-19 00:16:22', '2015-10-19 00:16:22', 0, 7, '黑龙江省佳木斯市汤原县', 2, '汤原县', ',650,743,', 743); INSERT INTO `area` VALUES (751, '2015-10-19 00:16:23', '2015-10-19 00:16:23', 0, 8, '黑龙江省佳木斯市抚远县', 2, '抚远县', ',650,743,', 743); INSERT INTO `area` VALUES (752, '2015-10-19 00:16:24', '2015-10-19 00:16:24', 0, 9, '黑龙江省佳木斯市同江市', 2, '同江市', ',650,743,', 743); INSERT INTO `area` VALUES (753, '2015-10-19 00:16:25', '2015-10-19 00:16:25', 0, 10, '黑龙江省佳木斯市富锦市', 2, '富锦市', ',650,743,', 743); INSERT INTO `area` VALUES (754, '2015-10-19 00:16:26', '2015-10-19 00:16:26', 0, 9, '黑龙江省七台河市', 1, '七台河市', ',650,', 650); INSERT INTO `area` VALUES (755, '2015-10-19 00:16:27', '2015-10-19 00:16:27', 0, 1, '黑龙江省七台河市新兴区', 2, '新兴区', ',650,754,', 754); INSERT INTO `area` VALUES (756, '2015-10-19 00:16:28', '2015-10-19 00:16:28', 0, 2, '黑龙江省七台河市桃山区', 2, '桃山区', ',650,754,', 754); INSERT INTO `area` VALUES (757, '2015-10-19 00:16:29', '2015-10-19 00:16:29', 0, 3, '黑龙江省七台河市茄子河区', 2, '茄子河区', ',650,754,', 754); INSERT INTO `area` VALUES (758, '2015-10-19 00:16:30', '2015-10-19 00:16:30', 0, 4, '黑龙江省七台河市勃利县', 2, '勃利县', ',650,754,', 754); INSERT INTO `area` VALUES (759, '2015-10-19 00:16:31', '2015-10-19 00:16:31', 0, 10, '黑龙江省牡丹江市', 1, '牡丹江市', ',650,', 650); INSERT INTO `area` VALUES (760, '2015-10-19 00:16:32', '2015-10-19 00:16:32', 0, 1, '黑龙江省牡丹江市东安区', 2, '东安区', ',650,759,', 759); INSERT INTO `area` VALUES (761, '2015-10-19 00:16:33', '2015-10-19 00:16:33', 0, 2, '黑龙江省牡丹江市阳明区', 2, '阳明区', ',650,759,', 759); INSERT INTO `area` VALUES (762, '2015-10-19 00:16:34', '2015-10-19 00:16:34', 0, 3, '黑龙江省牡丹江市爱民区', 2, '爱民区', ',650,759,', 759); INSERT INTO `area` VALUES (763, '2015-10-19 00:16:35', '2015-10-19 00:16:35', 0, 4, '黑龙江省牡丹江市西安区', 2, '西安区', ',650,759,', 759); INSERT INTO `area` VALUES (764, '2015-10-19 00:16:36', '2015-10-19 00:16:36', 0, 5, '黑龙江省牡丹江市东宁县', 2, '东宁县', ',650,759,', 759); INSERT INTO `area` VALUES (765, '2015-10-19 00:16:37', '2015-10-19 00:16:37', 0, 6, '黑龙江省牡丹江市林口县', 2, '林口县', ',650,759,', 759); INSERT INTO `area` VALUES (766, '2015-10-19 00:16:38', '2015-10-19 00:16:38', 0, 7, '黑龙江省牡丹江市绥芬河市', 2, '绥芬河市', ',650,759,', 759); INSERT INTO `area` VALUES (767, '2015-10-19 00:16:39', '2015-10-19 00:16:39', 0, 8, '黑龙江省牡丹江市海林市', 2, '海林市', ',650,759,', 759); INSERT INTO `area` VALUES (768, '2015-10-19 00:16:40', '2015-10-19 00:16:40', 0, 9, '黑龙江省牡丹江市宁安市', 2, '宁安市', ',650,759,', 759); INSERT INTO `area` VALUES (769, '2015-10-19 00:16:41', '2015-10-19 00:16:41', 0, 10, '黑龙江省牡丹江市穆棱市', 2, '穆棱市', ',650,759,', 759); INSERT INTO `area` VALUES (770, '2015-10-19 00:16:42', '2015-10-19 00:16:42', 0, 11, '黑龙江省黑河市', 1, '黑河市', ',650,', 650); INSERT INTO `area` VALUES (771, '2015-10-19 00:16:43', '2015-10-19 00:16:43', 0, 1, '黑龙江省黑河市爱辉区', 2, '爱辉区', ',650,770,', 770); INSERT INTO `area` VALUES (772, '2015-10-19 00:16:44', '2015-10-19 00:16:44', 0, 2, '黑龙江省黑河市嫩江县', 2, '嫩江县', ',650,770,', 770); INSERT INTO `area` VALUES (773, '2015-10-19 00:16:45', '2015-10-19 00:16:45', 0, 3, '黑龙江省黑河市逊克县', 2, '逊克县', ',650,770,', 770); INSERT INTO `area` VALUES (774, '2015-10-19 00:16:46', '2015-10-19 00:16:46', 0, 4, '黑龙江省黑河市孙吴县', 2, '孙吴县', ',650,770,', 770); INSERT INTO `area` VALUES (775, '2015-10-19 00:16:47', '2015-10-19 00:16:47', 0, 5, '黑龙江省黑河市北安市', 2, '北安市', ',650,770,', 770); INSERT INTO `area` VALUES (776, '2015-10-19 00:16:48', '2015-10-19 00:16:48', 0, 6, '黑龙江省黑河市五大连池市', 2, '五大连池市', ',650,770,', 770); INSERT INTO `area` VALUES (777, '2015-10-19 00:16:49', '2015-10-19 00:16:49', 0, 12, '黑龙江省绥化市', 1, '绥化市', ',650,', 650); INSERT INTO `area` VALUES (778, '2015-10-19 00:16:50', '2015-10-19 00:16:50', 0, 1, '黑龙江省绥化市北林区', 2, '北林区', ',650,777,', 777); INSERT INTO `area` VALUES (779, '2015-10-19 00:16:51', '2015-10-19 00:16:51', 0, 2, '黑龙江省绥化市望奎县', 2, '望奎县', ',650,777,', 777); INSERT INTO `area` VALUES (780, '2015-10-19 00:16:52', '2015-10-19 00:16:52', 0, 3, '黑龙江省绥化市兰西县', 2, '兰西县', ',650,777,', 777); INSERT INTO `area` VALUES (781, '2015-10-19 00:16:53', '2015-10-19 00:16:53', 0, 4, '黑龙江省绥化市青冈县', 2, '青冈县', ',650,777,', 777); INSERT INTO `area` VALUES (782, '2015-10-19 00:16:54', '2015-10-19 00:16:54', 0, 5, '黑龙江省绥化市庆安县', 2, '庆安县', ',650,777,', 777); INSERT INTO `area` VALUES (783, '2015-10-19 00:16:55', '2015-10-19 00:16:55', 0, 6, '黑龙江省绥化市明水县', 2, '明水县', ',650,777,', 777); INSERT INTO `area` VALUES (784, '2015-10-19 00:16:56', '2015-10-19 00:16:56', 0, 7, '黑龙江省绥化市绥棱县', 2, '绥棱县', ',650,777,', 777); INSERT INTO `area` VALUES (785, '2015-10-19 00:16:57', '2015-10-19 00:16:57', 0, 8, '黑龙江省绥化市安达市', 2, '安达市', ',650,777,', 777); INSERT INTO `area` VALUES (786, '2015-10-19 00:16:58', '2015-10-19 00:16:58', 0, 9, '黑龙江省绥化市肇东市', 2, '肇东市', ',650,777,', 777); INSERT INTO `area` VALUES (787, '2015-10-19 00:16:59', '2015-10-19 00:16:59', 0, 10, '黑龙江省绥化市海伦市', 2, '海伦市', ',650,777,', 777); INSERT INTO `area` VALUES (788, '2015-10-19 00:17:00', '2015-10-19 00:17:00', 0, 13, '黑龙江省大兴安岭地区', 1, '大兴安岭地区', ',650,', 650); INSERT INTO `area` VALUES (789, '2015-10-19 00:17:01', '2015-10-19 00:17:01', 0, 1, '黑龙江省大兴安岭地区呼玛县', 2, '呼玛县', ',650,788,', 788); INSERT INTO `area` VALUES (790, '2015-10-19 00:17:02', '2015-10-19 00:17:02', 0, 2, '黑龙江省大兴安岭地区塔河县', 2, '塔河县', ',650,788,', 788); INSERT INTO `area` VALUES (791, '2015-10-19 00:17:03', '2015-10-19 00:17:03', 0, 3, '黑龙江省大兴安岭地区漠河县', 2, '漠河县', ',650,788,', 788); INSERT INTO `area` VALUES (792, '2015-10-19 00:17:04', '2015-10-19 00:17:04', 0, 9, '上海市', 0, '上海市', ',', NULL); INSERT INTO `area` VALUES (793, '2015-10-19 00:17:05', '2015-10-19 00:17:05', 0, 1, '上海市黄浦区', 1, '黄浦区', ',792,', 792); INSERT INTO `area` VALUES (794, '2015-10-19 00:17:06', '2015-10-19 00:17:06', 0, 2, '上海市徐汇区', 1, '徐汇区', ',792,', 792); INSERT INTO `area` VALUES (795, '2015-10-19 00:17:07', '2015-10-19 00:17:07', 0, 3, '上海市长宁区', 1, '长宁区', ',792,', 792); INSERT INTO `area` VALUES (796, '2015-10-19 00:17:08', '2015-10-19 00:17:08', 0, 4, '上海市静安区', 1, '静安区', ',792,', 792); INSERT INTO `area` VALUES (797, '2015-10-19 00:17:09', '2015-10-19 00:17:09', 0, 5, '上海市普陀区', 1, '普陀区', ',792,', 792); INSERT INTO `area` VALUES (798, '2015-10-19 00:17:10', '2015-10-19 00:17:10', 0, 6, '上海市闸北区', 1, '闸北区', ',792,', 792); INSERT INTO `area` VALUES (799, '2015-10-19 00:17:11', '2015-10-19 00:17:11', 0, 7, '上海市虹口区', 1, '虹口区', ',792,', 792); INSERT INTO `area` VALUES (800, '2015-10-19 00:17:12', '2015-10-19 00:17:12', 0, 8, '上海市杨浦区', 1, '杨浦区', ',792,', 792); INSERT INTO `area` VALUES (801, '2015-10-19 00:17:13', '2015-10-19 00:17:13', 0, 9, '上海市闵行区', 1, '闵行区', ',792,', 792); INSERT INTO `area` VALUES (802, '2015-10-19 00:17:14', '2015-10-19 00:17:14', 0, 10, '上海市宝山区', 1, '宝山区', ',792,', 792); INSERT INTO `area` VALUES (803, '2015-10-19 00:17:15', '2015-10-19 00:17:15', 0, 11, '上海市嘉定区', 1, '嘉定区', ',792,', 792); INSERT INTO `area` VALUES (804, '2015-10-19 00:17:16', '2015-10-19 00:17:16', 0, 12, '上海市浦东新区', 1, '浦东新区', ',792,', 792); INSERT INTO `area` VALUES (805, '2015-10-19 00:17:17', '2015-10-19 00:17:17', 0, 13, '上海市金山区', 1, '金山区', ',792,', 792); INSERT INTO `area` VALUES (806, '2015-10-19 00:17:18', '2015-10-19 00:17:18', 0, 14, '上海市松江区', 1, '松江区', ',792,', 792); INSERT INTO `area` VALUES (807, '2015-10-19 00:17:19', '2015-10-19 00:17:19', 0, 15, '上海市青浦区', 1, '青浦区', ',792,', 792); INSERT INTO `area` VALUES (808, '2015-10-19 00:17:20', '2015-10-19 00:17:20', 0, 16, '上海市奉贤区', 1, '奉贤区', ',792,', 792); INSERT INTO `area` VALUES (809, '2015-10-19 00:17:21', '2015-10-19 00:17:21', 0, 17, '上海市崇明县', 1, '崇明县', ',792,', 792); INSERT INTO `area` VALUES (810, '2015-10-19 00:17:22', '2015-10-19 00:17:22', 0, 10, '江苏省', 0, '江苏省', ',', NULL); INSERT INTO `area` VALUES (811, '2015-10-19 00:17:23', '2015-10-19 00:17:23', 0, 1, '江苏省南京市', 1, '南京市', ',810,', 810); INSERT INTO `area` VALUES (812, '2015-10-19 00:17:24', '2015-10-19 00:17:24', 0, 1, '江苏省南京市玄武区', 2, '玄武区', ',810,811,', 811); INSERT INTO `area` VALUES (813, '2015-10-19 00:17:25', '2015-10-19 00:17:25', 0, 2, '江苏省南京市秦淮区', 2, '秦淮区', ',810,811,', 811); INSERT INTO `area` VALUES (814, '2015-10-19 00:17:26', '2015-10-19 00:17:26', 0, 3, '江苏省南京市建邺区', 2, '建邺区', ',810,811,', 811); INSERT INTO `area` VALUES (815, '2015-10-19 00:17:27', '2015-10-19 00:17:27', 0, 4, '江苏省南京市鼓楼区', 2, '鼓楼区', ',810,811,', 811); INSERT INTO `area` VALUES (816, '2015-10-19 00:17:28', '2015-10-19 00:17:28', 0, 5, '江苏省南京市浦口区', 2, '浦口区', ',810,811,', 811); INSERT INTO `area` VALUES (817, '2015-10-19 00:17:29', '2015-10-19 00:17:29', 0, 6, '江苏省南京市栖霞区', 2, '栖霞区', ',810,811,', 811); INSERT INTO `area` VALUES (818, '2015-10-19 00:17:30', '2015-10-19 00:17:30', 0, 7, '江苏省南京市雨花台区', 2, '雨花台区', ',810,811,', 811); INSERT INTO `area` VALUES (819, '2015-10-19 00:17:31', '2015-10-19 00:17:31', 0, 8, '江苏省南京市江宁区', 2, '江宁区', ',810,811,', 811); INSERT INTO `area` VALUES (820, '2015-10-19 00:17:32', '2015-10-19 00:17:32', 0, 9, '江苏省南京市六合区', 2, '六合区', ',810,811,', 811); INSERT INTO `area` VALUES (821, '2015-10-19 00:17:33', '2015-10-19 00:17:33', 0, 10, '江苏省南京市溧水区', 2, '溧水区', ',810,811,', 811); INSERT INTO `area` VALUES (822, '2015-10-19 00:17:34', '2015-10-19 00:17:34', 0, 11, '江苏省南京市高淳区', 2, '高淳区', ',810,811,', 811); INSERT INTO `area` VALUES (823, '2015-10-19 00:17:35', '2015-10-19 00:17:35', 0, 2, '江苏省无锡市', 1, '无锡市', ',810,', 810); INSERT INTO `area` VALUES (824, '2015-10-19 00:17:36', '2015-10-19 00:17:36', 0, 1, '江苏省无锡市崇安区', 2, '崇安区', ',810,823,', 823); INSERT INTO `area` VALUES (825, '2015-10-19 00:17:37', '2015-10-19 00:17:37', 0, 2, '江苏省无锡市南长区', 2, '南长区', ',810,823,', 823); INSERT INTO `area` VALUES (826, '2015-10-19 00:17:38', '2015-10-19 00:17:38', 0, 3, '江苏省无锡市北塘区', 2, '北塘区', ',810,823,', 823); INSERT INTO `area` VALUES (827, '2015-10-19 00:17:39', '2015-10-19 00:17:39', 0, 4, '江苏省无锡市锡山区', 2, '锡山区', ',810,823,', 823); INSERT INTO `area` VALUES (828, '2015-10-19 00:17:40', '2015-10-19 00:17:40', 0, 5, '江苏省无锡市惠山区', 2, '惠山区', ',810,823,', 823); INSERT INTO `area` VALUES (829, '2015-10-19 00:17:41', '2015-10-19 00:17:41', 0, 6, '江苏省无锡市滨湖区', 2, '滨湖区', ',810,823,', 823); INSERT INTO `area` VALUES (830, '2015-10-19 00:17:42', '2015-10-19 00:17:42', 0, 7, '江苏省无锡市江阴市', 2, '江阴市', ',810,823,', 823); INSERT INTO `area` VALUES (831, '2015-10-19 00:17:43', '2015-10-19 00:17:43', 0, 8, '江苏省无锡市宜兴市', 2, '宜兴市', ',810,823,', 823); INSERT INTO `area` VALUES (832, '2015-10-19 00:17:44', '2015-10-19 00:17:44', 0, 3, '江苏省徐州市', 1, '徐州市', ',810,', 810); INSERT INTO `area` VALUES (833, '2015-10-19 00:17:45', '2015-10-19 00:17:45', 0, 1, '江苏省徐州市鼓楼区', 2, '鼓楼区', ',810,832,', 832); INSERT INTO `area` VALUES (834, '2015-10-19 00:17:46', '2015-10-19 00:17:46', 0, 2, '江苏省徐州市云龙区', 2, '云龙区', ',810,832,', 832); INSERT INTO `area` VALUES (835, '2015-10-19 00:17:47', '2015-10-19 00:17:47', 0, 3, '江苏省徐州市贾汪区', 2, '贾汪区', ',810,832,', 832); INSERT INTO `area` VALUES (836, '2015-10-19 00:17:48', '2015-10-19 00:17:48', 0, 4, '江苏省徐州市泉山区', 2, '泉山区', ',810,832,', 832); INSERT INTO `area` VALUES (837, '2015-10-19 00:17:49', '2015-10-19 00:17:49', 0, 5, '江苏省徐州市铜山区', 2, '铜山区', ',810,832,', 832); INSERT INTO `area` VALUES (838, '2015-10-19 00:17:50', '2015-10-19 00:17:50', 0, 6, '江苏省徐州市丰县', 2, '丰县', ',810,832,', 832); INSERT INTO `area` VALUES (839, '2015-10-19 00:17:51', '2015-10-19 00:17:51', 0, 7, '江苏省徐州市沛县', 2, '沛县', ',810,832,', 832); INSERT INTO `area` VALUES (840, '2015-10-19 00:17:52', '2015-10-19 00:17:52', 0, 8, '江苏省徐州市睢宁县', 2, '睢宁县', ',810,832,', 832); INSERT INTO `area` VALUES (841, '2015-10-19 00:17:53', '2015-10-19 00:17:53', 0, 9, '江苏省徐州市新沂市', 2, '新沂市', ',810,832,', 832); INSERT INTO `area` VALUES (842, '2015-10-19 00:17:54', '2015-10-19 00:17:54', 0, 10, '江苏省徐州市邳州市', 2, '邳州市', ',810,832,', 832); INSERT INTO `area` VALUES (843, '2015-10-19 00:17:55', '2015-10-19 00:17:55', 0, 4, '江苏省常州市', 1, '常州市', ',810,', 810); INSERT INTO `area` VALUES (844, '2015-10-19 00:17:56', '2015-10-19 00:17:56', 0, 1, '江苏省常州市天宁区', 2, '天宁区', ',810,843,', 843); INSERT INTO `area` VALUES (845, '2015-10-19 00:17:57', '2015-10-19 00:17:57', 0, 2, '江苏省常州市钟楼区', 2, '钟楼区', ',810,843,', 843); INSERT INTO `area` VALUES (846, '2015-10-19 00:17:58', '2015-10-19 00:17:58', 0, 3, '江苏省常州市戚墅堰区', 2, '戚墅堰区', ',810,843,', 843); INSERT INTO `area` VALUES (847, '2015-10-19 00:17:59', '2015-10-19 00:17:59', 0, 4, '江苏省常州市新北区', 2, '新北区', ',810,843,', 843); INSERT INTO `area` VALUES (848, '2015-10-19 00:18:00', '2015-10-19 00:18:00', 0, 5, '江苏省常州市武进区', 2, '武进区', ',810,843,', 843); INSERT INTO `area` VALUES (849, '2015-10-19 00:18:01', '2015-10-19 00:18:01', 0, 6, '江苏省常州市溧阳市', 2, '溧阳市', ',810,843,', 843); INSERT INTO `area` VALUES (850, '2015-10-19 00:18:02', '2015-10-19 00:18:02', 0, 7, '江苏省常州市金坛市', 2, '金坛市', ',810,843,', 843); INSERT INTO `area` VALUES (851, '2015-10-19 00:18:03', '2015-10-19 00:18:03', 0, 5, '江苏省苏州市', 1, '苏州市', ',810,', 810); INSERT INTO `area` VALUES (852, '2015-10-19 00:18:04', '2015-10-19 00:18:04', 0, 1, '江苏省苏州市虎丘区', 2, '虎丘区', ',810,851,', 851); INSERT INTO `area` VALUES (853, '2015-10-19 00:18:05', '2015-10-19 00:18:05', 0, 2, '江苏省苏州市吴中区', 2, '吴中区', ',810,851,', 851); INSERT INTO `area` VALUES (854, '2015-10-19 00:18:06', '2015-10-19 00:18:06', 0, 3, '江苏省苏州市相城区', 2, '相城区', ',810,851,', 851); INSERT INTO `area` VALUES (855, '2015-10-19 00:18:07', '2015-10-19 00:18:07', 0, 4, '江苏省苏州市姑苏区', 2, '姑苏区', ',810,851,', 851); INSERT INTO `area` VALUES (856, '2015-10-19 00:18:08', '2015-10-19 00:18:08', 0, 5, '江苏省苏州市吴江区', 2, '吴江区', ',810,851,', 851); INSERT INTO `area` VALUES (857, '2015-10-19 00:18:09', '2015-10-19 00:18:09', 0, 6, '江苏省苏州市常熟市', 2, '常熟市', ',810,851,', 851); INSERT INTO `area` VALUES (858, '2015-10-19 00:18:10', '2015-10-19 00:18:10', 0, 7, '江苏省苏州市张家港市', 2, '张家港市', ',810,851,', 851); INSERT INTO `area` VALUES (859, '2015-10-19 00:18:11', '2015-10-19 00:18:11', 0, 8, '江苏省苏州市昆山市', 2, '昆山市', ',810,851,', 851); INSERT INTO `area` VALUES (860, '2015-10-19 00:18:12', '2015-10-19 00:18:12', 0, 9, '江苏省苏州市太仓市', 2, '太仓市', ',810,851,', 851); INSERT INTO `area` VALUES (861, '2015-10-19 00:18:13', '2015-10-19 00:18:13', 0, 6, '江苏省南通市', 1, '南通市', ',810,', 810); INSERT INTO `area` VALUES (862, '2015-10-19 00:18:14', '2015-10-19 00:18:14', 0, 1, '江苏省南通市崇川区', 2, '崇川区', ',810,861,', 861); INSERT INTO `area` VALUES (863, '2015-10-19 00:18:15', '2015-10-19 00:18:15', 0, 2, '江苏省南通市港闸区', 2, '港闸区', ',810,861,', 861); INSERT INTO `area` VALUES (864, '2015-10-19 00:18:16', '2015-10-19 00:18:16', 0, 3, '江苏省南通市通州区', 2, '通州区', ',810,861,', 861); INSERT INTO `area` VALUES (865, '2015-10-19 00:18:17', '2015-10-19 00:18:17', 0, 4, '江苏省南通市海安县', 2, '海安县', ',810,861,', 861); INSERT INTO `area` VALUES (866, '2015-10-19 00:18:18', '2015-10-19 00:18:18', 0, 5, '江苏省南通市如东县', 2, '如东县', ',810,861,', 861); INSERT INTO `area` VALUES (867, '2015-10-19 00:18:19', '2015-10-19 00:18:19', 0, 6, '江苏省南通市启东市', 2, '启东市', ',810,861,', 861); INSERT INTO `area` VALUES (868, '2015-10-19 00:18:20', '2015-10-19 00:18:20', 0, 7, '江苏省南通市如皋市', 2, '如皋市', ',810,861,', 861); INSERT INTO `area` VALUES (869, '2015-10-19 00:18:21', '2015-10-19 00:18:21', 0, 8, '江苏省南通市海门市', 2, '海门市', ',810,861,', 861); INSERT INTO `area` VALUES (870, '2015-10-19 00:18:22', '2015-10-19 00:18:22', 0, 7, '江苏省连云港市', 1, '连云港市', ',810,', 810); INSERT INTO `area` VALUES (871, '2015-10-19 00:18:23', '2015-10-19 00:18:23', 0, 1, '江苏省连云港市连云区', 2, '连云区', ',810,870,', 870); INSERT INTO `area` VALUES (872, '2015-10-19 00:18:24', '2015-10-19 00:18:24', 0, 2, '江苏省连云港市新浦区', 2, '新浦区', ',810,870,', 870); INSERT INTO `area` VALUES (873, '2015-10-19 00:18:25', '2015-10-19 00:18:25', 0, 3, '江苏省连云港市海州区', 2, '海州区', ',810,870,', 870); INSERT INTO `area` VALUES (874, '2015-10-19 00:18:26', '2015-10-19 00:18:26', 0, 4, '江苏省连云港市赣榆县', 2, '赣榆县', ',810,870,', 870); INSERT INTO `area` VALUES (875, '2015-10-19 00:18:27', '2015-10-19 00:18:27', 0, 5, '江苏省连云港市东海县', 2, '东海县', ',810,870,', 870); INSERT INTO `area` VALUES (876, '2015-10-19 00:18:28', '2015-10-19 00:18:28', 0, 6, '江苏省连云港市灌云县', 2, '灌云县', ',810,870,', 870); INSERT INTO `area` VALUES (877, '2015-10-19 00:18:29', '2015-10-19 00:18:29', 0, 7, '江苏省连云港市灌南县', 2, '灌南县', ',810,870,', 870); INSERT INTO `area` VALUES (878, '2015-10-19 00:18:30', '2015-10-19 00:18:30', 0, 8, '江苏省淮安市', 1, '淮安市', ',810,', 810); INSERT INTO `area` VALUES (879, '2015-10-19 00:18:31', '2015-10-19 00:18:31', 0, 1, '江苏省淮安市清河区', 2, '清河区', ',810,878,', 878); INSERT INTO `area` VALUES (880, '2015-10-19 00:18:32', '2015-10-19 00:18:32', 0, 2, '江苏省淮安市淮安区', 2, '淮安区', ',810,878,', 878); INSERT INTO `area` VALUES (881, '2015-10-19 00:18:33', '2015-10-19 00:18:33', 0, 3, '江苏省淮安市淮阴区', 2, '淮阴区', ',810,878,', 878); INSERT INTO `area` VALUES (882, '2015-10-19 00:18:34', '2015-10-19 00:18:34', 0, 4, '江苏省淮安市清浦区', 2, '清浦区', ',810,878,', 878); INSERT INTO `area` VALUES (883, '2015-10-19 00:18:35', '2015-10-19 00:18:35', 0, 5, '江苏省淮安市涟水县', 2, '涟水县', ',810,878,', 878); INSERT INTO `area` VALUES (884, '2015-10-19 00:18:36', '2015-10-19 00:18:36', 0, 6, '江苏省淮安市洪泽县', 2, '洪泽县', ',810,878,', 878); INSERT INTO `area` VALUES (885, '2015-10-19 00:18:37', '2015-10-19 00:18:37', 0, 7, '江苏省淮安市盱眙县', 2, '盱眙县', ',810,878,', 878); INSERT INTO `area` VALUES (886, '2015-10-19 00:18:38', '2015-10-19 00:18:38', 0, 8, '江苏省淮安市金湖县', 2, '金湖县', ',810,878,', 878); INSERT INTO `area` VALUES (887, '2015-10-19 00:18:39', '2015-10-19 00:18:39', 0, 9, '江苏省盐城市', 1, '盐城市', ',810,', 810); INSERT INTO `area` VALUES (888, '2015-10-19 00:18:40', '2015-10-19 00:18:40', 0, 1, '江苏省盐城市亭湖区', 2, '亭湖区', ',810,887,', 887); INSERT INTO `area` VALUES (889, '2015-10-19 00:18:41', '2015-10-19 00:18:41', 0, 2, '江苏省盐城市盐都区', 2, '盐都区', ',810,887,', 887); INSERT INTO `area` VALUES (890, '2015-10-19 00:18:42', '2015-10-19 00:18:42', 0, 3, '江苏省盐城市响水县', 2, '响水县', ',810,887,', 887); INSERT INTO `area` VALUES (891, '2015-10-19 00:18:43', '2015-10-19 00:18:43', 0, 4, '江苏省盐城市滨海县', 2, '滨海县', ',810,887,', 887); INSERT INTO `area` VALUES (892, '2015-10-19 00:18:44', '2015-10-19 00:18:44', 0, 5, '江苏省盐城市阜宁县', 2, '阜宁县', ',810,887,', 887); INSERT INTO `area` VALUES (893, '2015-10-19 00:18:45', '2015-10-19 00:18:45', 0, 6, '江苏省盐城市射阳县', 2, '射阳县', ',810,887,', 887); INSERT INTO `area` VALUES (894, '2015-10-19 00:18:46', '2015-10-19 00:18:46', 0, 7, '江苏省盐城市建湖县', 2, '建湖县', ',810,887,', 887); INSERT INTO `area` VALUES (895, '2015-10-19 00:18:47', '2015-10-19 00:18:47', 0, 8, '江苏省盐城市东台市', 2, '东台市', ',810,887,', 887); INSERT INTO `area` VALUES (896, '2015-10-19 00:18:48', '2015-10-19 00:18:48', 0, 9, '江苏省盐城市大丰市', 2, '大丰市', ',810,887,', 887); INSERT INTO `area` VALUES (897, '2015-10-19 00:18:49', '2015-10-19 00:18:49', 0, 10, '江苏省扬州市', 1, '扬州市', ',810,', 810); INSERT INTO `area` VALUES (898, '2015-10-19 00:18:50', '2015-10-19 00:18:50', 0, 1, '江苏省扬州市广陵区', 2, '广陵区', ',810,897,', 897); INSERT INTO `area` VALUES (899, '2015-10-19 00:18:51', '2015-10-19 00:18:51', 0, 2, '江苏省扬州市邗江区', 2, '邗江区', ',810,897,', 897); INSERT INTO `area` VALUES (900, '2015-10-19 00:18:52', '2015-10-19 00:18:52', 0, 3, '江苏省扬州市江都区', 2, '江都区', ',810,897,', 897); INSERT INTO `area` VALUES (901, '2015-10-19 00:18:53', '2015-10-19 00:18:53', 0, 4, '江苏省扬州市宝应县', 2, '宝应县', ',810,897,', 897); INSERT INTO `area` VALUES (902, '2015-10-19 00:18:54', '2015-10-19 00:18:54', 0, 5, '江苏省扬州市仪征市', 2, '仪征市', ',810,897,', 897); INSERT INTO `area` VALUES (903, '2015-10-19 00:18:55', '2015-10-19 00:18:55', 0, 6, '江苏省扬州市高邮市', 2, '高邮市', ',810,897,', 897); INSERT INTO `area` VALUES (904, '2015-10-19 00:18:56', '2015-10-19 00:18:56', 0, 11, '江苏省镇江市', 1, '镇江市', ',810,', 810); INSERT INTO `area` VALUES (905, '2015-10-19 00:18:57', '2015-10-19 00:18:57', 0, 1, '江苏省镇江市京口区', 2, '京口区', ',810,904,', 904); INSERT INTO `area` VALUES (906, '2015-10-19 00:18:58', '2015-10-19 00:18:58', 0, 2, '江苏省镇江市润州区', 2, '润州区', ',810,904,', 904); INSERT INTO `area` VALUES (907, '2015-10-19 00:18:59', '2015-10-19 00:18:59', 0, 3, '江苏省镇江市丹徒区', 2, '丹徒区', ',810,904,', 904); INSERT INTO `area` VALUES (908, '2015-10-19 00:19:00', '2015-10-19 00:19:00', 0, 4, '江苏省镇江市丹阳市', 2, '丹阳市', ',810,904,', 904); INSERT INTO `area` VALUES (909, '2015-10-19 00:19:01', '2015-10-19 00:19:01', 0, 5, '江苏省镇江市扬中市', 2, '扬中市', ',810,904,', 904); INSERT INTO `area` VALUES (910, '2015-10-19 00:19:02', '2015-10-19 00:19:02', 0, 6, '江苏省镇江市句容市', 2, '句容市', ',810,904,', 904); INSERT INTO `area` VALUES (911, '2015-10-19 00:19:03', '2015-10-19 00:19:03', 0, 12, '江苏省泰州市', 1, '泰州市', ',810,', 810); INSERT INTO `area` VALUES (912, '2015-10-19 00:19:04', '2015-10-19 00:19:04', 0, 1, '江苏省泰州市海陵区', 2, '海陵区', ',810,911,', 911); INSERT INTO `area` VALUES (913, '2015-10-19 00:19:05', '2015-10-19 00:19:05', 0, 2, '江苏省泰州市高港区', 2, '高港区', ',810,911,', 911); INSERT INTO `area` VALUES (914, '2015-10-19 00:19:06', '2015-10-19 00:19:06', 0, 3, '江苏省泰州市姜堰区', 2, '姜堰区', ',810,911,', 911); INSERT INTO `area` VALUES (915, '2015-10-19 00:19:07', '2015-10-19 00:19:07', 0, 4, '江苏省泰州市兴化市', 2, '兴化市', ',810,911,', 911); INSERT INTO `area` VALUES (916, '2015-10-19 00:19:08', '2015-10-19 00:19:08', 0, 5, '江苏省泰州市靖江市', 2, '靖江市', ',810,911,', 911); INSERT INTO `area` VALUES (917, '2015-10-19 00:19:09', '2015-10-19 00:19:09', 0, 6, '江苏省泰州市泰兴市', 2, '泰兴市', ',810,911,', 911); INSERT INTO `area` VALUES (918, '2015-10-19 00:19:10', '2015-10-19 00:19:10', 0, 13, '江苏省宿迁市', 1, '宿迁市', ',810,', 810); INSERT INTO `area` VALUES (919, '2015-10-19 00:19:11', '2015-10-19 00:19:11', 0, 1, '江苏省宿迁市宿城区', 2, '宿城区', ',810,918,', 918); INSERT INTO `area` VALUES (920, '2015-10-19 00:19:12', '2015-10-19 00:19:12', 0, 2, '江苏省宿迁市宿豫区', 2, '宿豫区', ',810,918,', 918); INSERT INTO `area` VALUES (921, '2015-10-19 00:19:13', '2015-10-19 00:19:13', 0, 3, '江苏省宿迁市沭阳县', 2, '沭阳县', ',810,918,', 918); INSERT INTO `area` VALUES (922, '2015-10-19 00:19:14', '2015-10-19 00:19:14', 0, 4, '江苏省宿迁市泗阳县', 2, '泗阳县', ',810,918,', 918); INSERT INTO `area` VALUES (923, '2015-10-19 00:19:15', '2015-10-19 00:19:15', 0, 5, '江苏省宿迁市泗洪县', 2, '泗洪县', ',810,918,', 918); INSERT INTO `area` VALUES (924, '2015-10-19 00:19:16', '2015-10-19 00:19:16', 0, 11, '浙江省', 0, '浙江省', ',', NULL); INSERT INTO `area` VALUES (925, '2015-10-19 00:19:17', '2015-10-19 00:19:17', 0, 1, '浙江省杭州市', 1, '杭州市', ',924,', 924); INSERT INTO `area` VALUES (926, '2015-10-19 00:19:18', '2015-10-19 00:19:18', 0, 1, '浙江省杭州市上城区', 2, '上城区', ',924,925,', 925); INSERT INTO `area` VALUES (927, '2015-10-19 00:19:19', '2015-10-19 00:19:19', 0, 2, '浙江省杭州市下城区', 2, '下城区', ',924,925,', 925); INSERT INTO `area` VALUES (928, '2015-10-19 00:19:20', '2015-10-19 00:19:20', 0, 3, '浙江省杭州市江干区', 2, '江干区', ',924,925,', 925); INSERT INTO `area` VALUES (929, '2015-10-19 00:19:21', '2015-10-19 00:19:21', 0, 4, '浙江省杭州市拱墅区', 2, '拱墅区', ',924,925,', 925); INSERT INTO `area` VALUES (930, '2015-10-19 00:19:22', '2015-10-19 00:19:22', 0, 5, '浙江省杭州市西湖区', 2, '西湖区', ',924,925,', 925); INSERT INTO `area` VALUES (931, '2015-10-19 00:19:23', '2015-10-19 00:19:23', 0, 6, '浙江省杭州市滨江区', 2, '滨江区', ',924,925,', 925); INSERT INTO `area` VALUES (932, '2015-10-19 00:19:24', '2015-10-19 00:19:24', 0, 7, '浙江省杭州市萧山区', 2, '萧山区', ',924,925,', 925); INSERT INTO `area` VALUES (933, '2015-10-19 00:19:25', '2015-10-19 00:19:25', 0, 8, '浙江省杭州市余杭区', 2, '余杭区', ',924,925,', 925); INSERT INTO `area` VALUES (934, '2015-10-19 00:19:26', '2015-10-19 00:19:26', 0, 9, '浙江省杭州市桐庐县', 2, '桐庐县', ',924,925,', 925); INSERT INTO `area` VALUES (935, '2015-10-19 00:19:27', '2015-10-19 00:19:27', 0, 10, '浙江省杭州市淳安县', 2, '淳安县', ',924,925,', 925); INSERT INTO `area` VALUES (936, '2015-10-19 00:19:28', '2015-10-19 00:19:28', 0, 11, '浙江省杭州市建德市', 2, '建德市', ',924,925,', 925); INSERT INTO `area` VALUES (937, '2015-10-19 00:19:29', '2015-10-19 00:19:29', 0, 12, '浙江省杭州市富阳市', 2, '富阳市', ',924,925,', 925); INSERT INTO `area` VALUES (938, '2015-10-19 00:19:30', '2015-10-19 00:19:30', 0, 13, '浙江省杭州市临安市', 2, '临安市', ',924,925,', 925); INSERT INTO `area` VALUES (939, '2015-10-19 00:19:31', '2015-10-19 00:19:31', 0, 2, '浙江省宁波市', 1, '宁波市', ',924,', 924); INSERT INTO `area` VALUES (940, '2015-10-19 00:19:32', '2015-10-19 00:19:32', 0, 1, '浙江省宁波市海曙区', 2, '海曙区', ',924,939,', 939); INSERT INTO `area` VALUES (941, '2015-10-19 00:19:33', '2015-10-19 00:19:33', 0, 2, '浙江省宁波市江东区', 2, '江东区', ',924,939,', 939); INSERT INTO `area` VALUES (942, '2015-10-19 00:19:34', '2015-10-19 00:19:34', 0, 3, '浙江省宁波市江北区', 2, '江北区', ',924,939,', 939); INSERT INTO `area` VALUES (943, '2015-10-19 00:19:35', '2015-10-19 00:19:35', 0, 4, '浙江省宁波市北仑区', 2, '北仑区', ',924,939,', 939); INSERT INTO `area` VALUES (944, '2015-10-19 00:19:36', '2015-10-19 00:19:36', 0, 5, '浙江省宁波市镇海区', 2, '镇海区', ',924,939,', 939); INSERT INTO `area` VALUES (945, '2015-10-19 00:19:37', '2015-10-19 00:19:37', 0, 6, '浙江省宁波市鄞州区', 2, '鄞州区', ',924,939,', 939); INSERT INTO `area` VALUES (946, '2015-10-19 00:19:38', '2015-10-19 00:19:38', 0, 7, '浙江省宁波市象山县', 2, '象山县', ',924,939,', 939); INSERT INTO `area` VALUES (947, '2015-10-19 00:19:39', '2015-10-19 00:19:39', 0, 8, '浙江省宁波市宁海县', 2, '宁海县', ',924,939,', 939); INSERT INTO `area` VALUES (948, '2015-10-19 00:19:40', '2015-10-19 00:19:40', 0, 9, '浙江省宁波市余姚市', 2, '余姚市', ',924,939,', 939); INSERT INTO `area` VALUES (949, '2015-10-19 00:19:41', '2015-10-19 00:19:41', 0, 10, '浙江省宁波市慈溪市', 2, '慈溪市', ',924,939,', 939); INSERT INTO `area` VALUES (950, '2015-10-19 00:19:42', '2015-10-19 00:19:42', 0, 11, '浙江省宁波市奉化市', 2, '奉化市', ',924,939,', 939); INSERT INTO `area` VALUES (951, '2015-10-19 00:19:43', '2015-10-19 00:19:43', 0, 3, '浙江省温州市', 1, '温州市', ',924,', 924); INSERT INTO `area` VALUES (952, '2015-10-19 00:19:44', '2015-10-19 00:19:44', 0, 1, '浙江省温州市鹿城区', 2, '鹿城区', ',924,951,', 951); INSERT INTO `area` VALUES (953, '2015-10-19 00:19:45', '2015-10-19 00:19:45', 0, 2, '浙江省温州市龙湾区', 2, '龙湾区', ',924,951,', 951); INSERT INTO `area` VALUES (954, '2015-10-19 00:19:46', '2015-10-19 00:19:46', 0, 3, '浙江省温州市瓯海区', 2, '瓯海区', ',924,951,', 951); INSERT INTO `area` VALUES (955, '2015-10-19 00:19:47', '2015-10-19 00:19:47', 0, 4, '浙江省温州市洞头县', 2, '洞头县', ',924,951,', 951); INSERT INTO `area` VALUES (956, '2015-10-19 00:19:48', '2015-10-19 00:19:48', 0, 5, '浙江省温州市永嘉县', 2, '永嘉县', ',924,951,', 951); INSERT INTO `area` VALUES (957, '2015-10-19 00:19:49', '2015-10-19 00:19:49', 0, 6, '浙江省温州市平阳县', 2, '平阳县', ',924,951,', 951); INSERT INTO `area` VALUES (958, '2015-10-19 00:19:50', '2015-10-19 00:19:50', 0, 7, '浙江省温州市苍南县', 2, '苍南县', ',924,951,', 951); INSERT INTO `area` VALUES (959, '2015-10-19 00:19:51', '2015-10-19 00:19:51', 0, 8, '浙江省温州市文成县', 2, '文成县', ',924,951,', 951); INSERT INTO `area` VALUES (960, '2015-10-19 00:19:52', '2015-10-19 00:19:52', 0, 9, '浙江省温州市泰顺县', 2, '泰顺县', ',924,951,', 951); INSERT INTO `area` VALUES (961, '2015-10-19 00:19:53', '2015-10-19 00:19:53', 0, 10, '浙江省温州市瑞安市', 2, '瑞安市', ',924,951,', 951); INSERT INTO `area` VALUES (962, '2015-10-19 00:19:54', '2015-10-19 00:19:54', 0, 11, '浙江省温州市乐清市', 2, '乐清市', ',924,951,', 951); INSERT INTO `area` VALUES (963, '2015-10-19 00:19:55', '2015-10-19 00:19:55', 0, 4, '浙江省嘉兴市', 1, '嘉兴市', ',924,', 924); INSERT INTO `area` VALUES (964, '2015-10-19 00:19:56', '2015-10-19 00:19:56', 0, 1, '浙江省嘉兴市南湖区', 2, '南湖区', ',924,963,', 963); INSERT INTO `area` VALUES (965, '2015-10-19 00:19:57', '2015-10-19 00:19:57', 0, 2, '浙江省嘉兴市秀洲区', 2, '秀洲区', ',924,963,', 963); INSERT INTO `area` VALUES (966, '2015-10-19 00:19:58', '2015-10-19 00:19:58', 0, 3, '浙江省嘉兴市嘉善县', 2, '嘉善县', ',924,963,', 963); INSERT INTO `area` VALUES (967, '2015-10-19 00:19:59', '2015-10-19 00:19:59', 0, 4, '浙江省嘉兴市海盐县', 2, '海盐县', ',924,963,', 963); INSERT INTO `area` VALUES (968, '2015-10-19 00:20:00', '2015-10-19 00:20:00', 0, 5, '浙江省嘉兴市海宁市', 2, '海宁市', ',924,963,', 963); INSERT INTO `area` VALUES (969, '2015-10-19 00:20:01', '2015-10-19 00:20:01', 0, 6, '浙江省嘉兴市平湖市', 2, '平湖市', ',924,963,', 963); INSERT INTO `area` VALUES (970, '2015-10-19 00:20:02', '2015-10-19 00:20:02', 0, 7, '浙江省嘉兴市桐乡市', 2, '桐乡市', ',924,963,', 963); INSERT INTO `area` VALUES (971, '2015-10-19 00:20:03', '2015-10-19 00:20:03', 0, 5, '浙江省湖州市', 1, '湖州市', ',924,', 924); INSERT INTO `area` VALUES (972, '2015-10-19 00:20:04', '2015-10-19 00:20:04', 0, 1, '浙江省湖州市吴兴区', 2, '吴兴区', ',924,971,', 971); INSERT INTO `area` VALUES (973, '2015-10-19 00:20:05', '2015-10-19 00:20:05', 0, 2, '浙江省湖州市南浔区', 2, '南浔区', ',924,971,', 971); INSERT INTO `area` VALUES (974, '2015-10-19 00:20:06', '2015-10-19 00:20:06', 0, 3, '浙江省湖州市德清县', 2, '德清县', ',924,971,', 971); INSERT INTO `area` VALUES (975, '2015-10-19 00:20:07', '2015-10-19 00:20:07', 0, 4, '浙江省湖州市长兴县', 2, '长兴县', ',924,971,', 971); INSERT INTO `area` VALUES (976, '2015-10-19 00:20:08', '2015-10-19 00:20:08', 0, 5, '浙江省湖州市安吉县', 2, '安吉县', ',924,971,', 971); INSERT INTO `area` VALUES (977, '2015-10-19 00:20:09', '2015-10-19 00:20:09', 0, 6, '浙江省绍兴市', 1, '绍兴市', ',924,', 924); INSERT INTO `area` VALUES (978, '2015-10-19 00:20:10', '2015-10-19 00:20:10', 0, 1, '浙江省绍兴市越城区', 2, '越城区', ',924,977,', 977); INSERT INTO `area` VALUES (979, '2015-10-19 00:20:11', '2015-10-19 00:20:11', 0, 2, '浙江省绍兴市绍兴县', 2, '绍兴县', ',924,977,', 977); INSERT INTO `area` VALUES (980, '2015-10-19 00:20:12', '2015-10-19 00:20:12', 0, 3, '浙江省绍兴市新昌县', 2, '新昌县', ',924,977,', 977); INSERT INTO `area` VALUES (981, '2015-10-19 00:20:13', '2015-10-19 00:20:13', 0, 4, '浙江省绍兴市诸暨市', 2, '诸暨市', ',924,977,', 977); INSERT INTO `area` VALUES (982, '2015-10-19 00:20:14', '2015-10-19 00:20:14', 0, 5, '浙江省绍兴市上虞市', 2, '上虞市', ',924,977,', 977); INSERT INTO `area` VALUES (983, '2015-10-19 00:20:15', '2015-10-19 00:20:15', 0, 6, '浙江省绍兴市嵊州市', 2, '嵊州市', ',924,977,', 977); INSERT INTO `area` VALUES (984, '2015-10-19 00:20:16', '2015-10-19 00:20:16', 0, 7, '浙江省金华市', 1, '金华市', ',924,', 924); INSERT INTO `area` VALUES (985, '2015-10-19 00:20:17', '2015-10-19 00:20:17', 0, 1, '浙江省金华市婺城区', 2, '婺城区', ',924,984,', 984); INSERT INTO `area` VALUES (986, '2015-10-19 00:20:18', '2015-10-19 00:20:18', 0, 2, '浙江省金华市金东区', 2, '金东区', ',924,984,', 984); INSERT INTO `area` VALUES (987, '2015-10-19 00:20:19', '2015-10-19 00:20:19', 0, 3, '浙江省金华市武义县', 2, '武义县', ',924,984,', 984); INSERT INTO `area` VALUES (988, '2015-10-19 00:20:20', '2015-10-19 00:20:20', 0, 4, '浙江省金华市浦江县', 2, '浦江县', ',924,984,', 984); INSERT INTO `area` VALUES (989, '2015-10-19 00:20:21', '2015-10-19 00:20:21', 0, 5, '浙江省金华市磐安县', 2, '磐安县', ',924,984,', 984); INSERT INTO `area` VALUES (990, '2015-10-19 00:20:22', '2015-10-19 00:20:22', 0, 6, '浙江省金华市兰溪市', 2, '兰溪市', ',924,984,', 984); INSERT INTO `area` VALUES (991, '2015-10-19 00:20:23', '2015-10-19 00:20:23', 0, 7, '浙江省金华市义乌市', 2, '义乌市', ',924,984,', 984); INSERT INTO `area` VALUES (992, '2015-10-19 00:20:24', '2015-10-19 00:20:24', 0, 8, '浙江省金华市东阳市', 2, '东阳市', ',924,984,', 984); INSERT INTO `area` VALUES (993, '2015-10-19 00:20:25', '2015-10-19 00:20:25', 0, 9, '浙江省金华市永康市', 2, '永康市', ',924,984,', 984); INSERT INTO `area` VALUES (994, '2015-10-19 00:20:26', '2015-10-19 00:20:26', 0, 8, '浙江省衢州市', 1, '衢州市', ',924,', 924); INSERT INTO `area` VALUES (995, '2015-10-19 00:20:27', '2015-10-19 00:20:27', 0, 1, '浙江省衢州市柯城区', 2, '柯城区', ',924,994,', 994); INSERT INTO `area` VALUES (996, '2015-10-19 00:20:28', '2015-10-19 00:20:28', 0, 2, '浙江省衢州市衢江区', 2, '衢江区', ',924,994,', 994); INSERT INTO `area` VALUES (997, '2015-10-19 00:20:29', '2015-10-19 00:20:29', 0, 3, '浙江省衢州市常山县', 2, '常山县', ',924,994,', 994); INSERT INTO `area` VALUES (998, '2015-10-19 00:20:30', '2015-10-19 00:20:30', 0, 4, '浙江省衢州市开化县', 2, '开化县', ',924,994,', 994); INSERT INTO `area` VALUES (999, '2015-10-19 00:20:31', '2015-10-19 00:20:31', 0, 5, '浙江省衢州市龙游县', 2, '龙游县', ',924,994,', 994); INSERT INTO `area` VALUES (1000, '2015-10-19 00:20:32', '2015-10-19 00:20:32', 0, 6, '浙江省衢州市江山市', 2, '江山市', ',924,994,', 994); INSERT INTO `area` VALUES (1001, '2015-10-19 00:20:33', '2015-10-19 00:20:33', 0, 9, '浙江省舟山市', 1, '舟山市', ',924,', 924); INSERT INTO `area` VALUES (1002, '2015-10-19 00:20:34', '2015-10-19 00:20:34', 0, 1, '浙江省舟山市定海区', 2, '定海区', ',924,1001,', 1001); INSERT INTO `area` VALUES (1003, '2015-10-19 00:20:35', '2015-10-19 00:20:35', 0, 2, '浙江省舟山市普陀区', 2, '普陀区', ',924,1001,', 1001); INSERT INTO `area` VALUES (1004, '2015-10-19 00:20:36', '2015-10-19 00:20:36', 0, 3, '浙江省舟山市岱山县', 2, '岱山县', ',924,1001,', 1001); INSERT INTO `area` VALUES (1005, '2015-10-19 00:20:37', '2015-10-19 00:20:37', 0, 4, '浙江省舟山市嵊泗县', 2, '嵊泗县', ',924,1001,', 1001); INSERT INTO `area` VALUES (1006, '2015-10-19 00:20:38', '2015-10-19 00:20:38', 0, 10, '浙江省台州市', 1, '台州市', ',924,', 924); INSERT INTO `area` VALUES (1007, '2015-10-19 00:20:39', '2015-10-19 00:20:39', 0, 1, '浙江省台州市椒江区', 2, '椒江区', ',924,1006,', 1006); INSERT INTO `area` VALUES (1008, '2015-10-19 00:20:40', '2015-10-19 00:20:40', 0, 2, '浙江省台州市黄岩区', 2, '黄岩区', ',924,1006,', 1006); INSERT INTO `area` VALUES (1009, '2015-10-19 00:20:41', '2015-10-19 00:20:41', 0, 3, '浙江省台州市路桥区', 2, '路桥区', ',924,1006,', 1006); INSERT INTO `area` VALUES (1010, '2015-10-19 00:20:42', '2015-10-19 00:20:42', 0, 4, '浙江省台州市玉环县', 2, '玉环县', ',924,1006,', 1006); INSERT INTO `area` VALUES (1011, '2015-10-19 00:20:43', '2015-10-19 00:20:43', 0, 5, '浙江省台州市三门县', 2, '三门县', ',924,1006,', 1006); INSERT INTO `area` VALUES (1012, '2015-10-19 00:20:44', '2015-10-19 00:20:44', 0, 6, '浙江省台州市天台县', 2, '天台县', ',924,1006,', 1006); INSERT INTO `area` VALUES (1013, '2015-10-19 00:20:45', '2015-10-19 00:20:45', 0, 7, '浙江省台州市仙居县', 2, '仙居县', ',924,1006,', 1006); INSERT INTO `area` VALUES (1014, '2015-10-19 00:20:46', '2015-10-19 00:20:46', 0, 8, '浙江省台州市温岭市', 2, '温岭市', ',924,1006,', 1006); INSERT INTO `area` VALUES (1015, '2015-10-19 00:20:47', '2015-10-19 00:20:47', 0, 9, '浙江省台州市临海市', 2, '临海市', ',924,1006,', 1006); INSERT INTO `area` VALUES (1016, '2015-10-19 00:20:48', '2015-10-19 00:20:48', 0, 11, '浙江省丽水市', 1, '丽水市', ',924,', 924); INSERT INTO `area` VALUES (1017, '2015-10-19 00:20:49', '2015-10-19 00:20:49', 0, 1, '浙江省丽水市莲都区', 2, '莲都区', ',924,1016,', 1016); INSERT INTO `area` VALUES (1018, '2015-10-19 00:20:50', '2015-10-19 00:20:50', 0, 2, '浙江省丽水市青田县', 2, '青田县', ',924,1016,', 1016); INSERT INTO `area` VALUES (1019, '2015-10-19 00:20:51', '2015-10-19 00:20:51', 0, 3, '浙江省丽水市缙云县', 2, '缙云县', ',924,1016,', 1016); INSERT INTO `area` VALUES (1020, '2015-10-19 00:20:52', '2015-10-19 00:20:52', 0, 4, '浙江省丽水市遂昌县', 2, '遂昌县', ',924,1016,', 1016); INSERT INTO `area` VALUES (1021, '2015-10-19 00:20:53', '2015-10-19 00:20:53', 0, 5, '浙江省丽水市松阳县', 2, '松阳县', ',924,1016,', 1016); INSERT INTO `area` VALUES (1022, '2015-10-19 00:20:54', '2015-10-19 00:20:54', 0, 6, '浙江省丽水市云和县', 2, '云和县', ',924,1016,', 1016); INSERT INTO `area` VALUES (1023, '2015-10-19 00:20:55', '2015-10-19 00:20:55', 0, 7, '浙江省丽水市庆元县', 2, '庆元县', ',924,1016,', 1016); INSERT INTO `area` VALUES (1024, '2015-10-19 00:20:56', '2015-10-19 00:20:56', 0, 8, '浙江省丽水市景宁畲族自治县', 2, '景宁畲族自治县', ',924,1016,', 1016); INSERT INTO `area` VALUES (1025, '2015-10-19 00:20:57', '2015-10-19 00:20:57', 0, 9, '浙江省丽水市龙泉市', 2, '龙泉市', ',924,1016,', 1016); INSERT INTO `area` VALUES (1026, '2015-10-19 00:20:58', '2015-10-19 00:20:58', 0, 12, '安徽省', 0, '安徽省', ',', NULL); INSERT INTO `area` VALUES (1027, '2015-10-19 00:20:59', '2015-10-19 00:20:59', 0, 1, '安徽省合肥市', 1, '合肥市', ',1026,', 1026); INSERT INTO `area` VALUES (1028, '2015-10-19 00:21:00', '2015-10-19 00:21:00', 0, 1, '安徽省合肥市瑶海区', 2, '瑶海区', ',1026,1027,', 1027); INSERT INTO `area` VALUES (1029, '2015-10-19 00:21:01', '2015-10-19 00:21:01', 0, 2, '安徽省合肥市庐阳区', 2, '庐阳区', ',1026,1027,', 1027); INSERT INTO `area` VALUES (1030, '2015-10-19 00:21:02', '2015-10-19 00:21:02', 0, 3, '安徽省合肥市蜀山区', 2, '蜀山区', ',1026,1027,', 1027); INSERT INTO `area` VALUES (1031, '2015-10-19 00:21:03', '2015-10-19 00:21:03', 0, 4, '安徽省合肥市包河区', 2, '包河区', ',1026,1027,', 1027); INSERT INTO `area` VALUES (1032, '2015-10-19 00:21:04', '2015-10-19 00:21:04', 0, 5, '安徽省合肥市长丰县', 2, '长丰县', ',1026,1027,', 1027); INSERT INTO `area` VALUES (1033, '2015-10-19 00:21:05', '2015-10-19 00:21:05', 0, 6, '安徽省合肥市肥东县', 2, '肥东县', ',1026,1027,', 1027); INSERT INTO `area` VALUES (1034, '2015-10-19 00:21:06', '2015-10-19 00:21:06', 0, 7, '安徽省合肥市肥西县', 2, '肥西县', ',1026,1027,', 1027); INSERT INTO `area` VALUES (1035, '2015-10-19 00:21:07', '2015-10-19 00:21:07', 0, 8, '安徽省合肥市庐江县', 2, '庐江县', ',1026,1027,', 1027); INSERT INTO `area` VALUES (1036, '2015-10-19 00:21:08', '2015-10-19 00:21:08', 0, 9, '安徽省合肥市巢湖市', 2, '巢湖市', ',1026,1027,', 1027); INSERT INTO `area` VALUES (1037, '2015-10-19 00:21:09', '2015-10-19 00:21:09', 0, 2, '安徽省芜湖市', 1, '芜湖市', ',1026,', 1026); INSERT INTO `area` VALUES (1038, '2015-10-19 00:21:10', '2015-10-19 00:21:10', 0, 1, '安徽省芜湖市镜湖区', 2, '镜湖区', ',1026,1037,', 1037); INSERT INTO `area` VALUES (1039, '2015-10-19 00:21:11', '2015-10-19 00:21:11', 0, 2, '安徽省芜湖市弋江区', 2, '弋江区', ',1026,1037,', 1037); INSERT INTO `area` VALUES (1040, '2015-10-19 00:21:12', '2015-10-19 00:21:12', 0, 3, '安徽省芜湖市鸠江区', 2, '鸠江区', ',1026,1037,', 1037); INSERT INTO `area` VALUES (1041, '2015-10-19 00:21:13', '2015-10-19 00:21:13', 0, 4, '安徽省芜湖市三山区', 2, '三山区', ',1026,1037,', 1037); INSERT INTO `area` VALUES (1042, '2015-10-19 00:21:14', '2015-10-19 00:21:14', 0, 5, '安徽省芜湖市芜湖县', 2, '芜湖县', ',1026,1037,', 1037); INSERT INTO `area` VALUES (1043, '2015-10-19 00:21:15', '2015-10-19 00:21:15', 0, 6, '安徽省芜湖市繁昌县', 2, '繁昌县', ',1026,1037,', 1037); INSERT INTO `area` VALUES (1044, '2015-10-19 00:21:16', '2015-10-19 00:21:16', 0, 7, '安徽省芜湖市南陵县', 2, '南陵县', ',1026,1037,', 1037); INSERT INTO `area` VALUES (1045, '2015-10-19 00:21:17', '2015-10-19 00:21:17', 0, 8, '安徽省芜湖市无为县', 2, '无为县', ',1026,1037,', 1037); INSERT INTO `area` VALUES (1046, '2015-10-19 00:21:18', '2015-10-19 00:21:18', 0, 3, '安徽省蚌埠市', 1, '蚌埠市', ',1026,', 1026); INSERT INTO `area` VALUES (1047, '2015-10-19 00:21:19', '2015-10-19 00:21:19', 0, 1, '安徽省蚌埠市龙子湖区', 2, '龙子湖区', ',1026,1046,', 1046); INSERT INTO `area` VALUES (1048, '2015-10-19 00:21:20', '2015-10-19 00:21:20', 0, 2, '安徽省蚌埠市蚌山区', 2, '蚌山区', ',1026,1046,', 1046); INSERT INTO `area` VALUES (1049, '2015-10-19 00:21:21', '2015-10-19 00:21:21', 0, 3, '安徽省蚌埠市禹会区', 2, '禹会区', ',1026,1046,', 1046); INSERT INTO `area` VALUES (1050, '2015-10-19 00:21:22', '2015-10-19 00:21:22', 0, 4, '安徽省蚌埠市淮上区', 2, '淮上区', ',1026,1046,', 1046); INSERT INTO `area` VALUES (1051, '2015-10-19 00:21:23', '2015-10-19 00:21:23', 0, 5, '安徽省蚌埠市怀远县', 2, '怀远县', ',1026,1046,', 1046); INSERT INTO `area` VALUES (1052, '2015-10-19 00:21:24', '2015-10-19 00:21:24', 0, 6, '安徽省蚌埠市五河县', 2, '五河县', ',1026,1046,', 1046); INSERT INTO `area` VALUES (1053, '2015-10-19 00:21:25', '2015-10-19 00:21:25', 0, 7, '安徽省蚌埠市固镇县', 2, '固镇县', ',1026,1046,', 1046); INSERT INTO `area` VALUES (1054, '2015-10-19 00:21:26', '2015-10-19 00:21:26', 0, 4, '安徽省淮南市', 1, '淮南市', ',1026,', 1026); INSERT INTO `area` VALUES (1055, '2015-10-19 00:21:27', '2015-10-19 00:21:27', 0, 1, '安徽省淮南市大通区', 2, '大通区', ',1026,1054,', 1054); INSERT INTO `area` VALUES (1056, '2015-10-19 00:21:28', '2015-10-19 00:21:28', 0, 2, '安徽省淮南市田家庵区', 2, '田家庵区', ',1026,1054,', 1054); INSERT INTO `area` VALUES (1057, '2015-10-19 00:21:29', '2015-10-19 00:21:29', 0, 3, '安徽省淮南市谢家集区', 2, '谢家集区', ',1026,1054,', 1054); INSERT INTO `area` VALUES (1058, '2015-10-19 00:21:30', '2015-10-19 00:21:30', 0, 4, '安徽省淮南市八公山区', 2, '八公山区', ',1026,1054,', 1054); INSERT INTO `area` VALUES (1059, '2015-10-19 00:21:31', '2015-10-19 00:21:31', 0, 5, '安徽省淮南市潘集区', 2, '潘集区', ',1026,1054,', 1054); INSERT INTO `area` VALUES (1060, '2015-10-19 00:21:32', '2015-10-19 00:21:32', 0, 6, '安徽省淮南市凤台县', 2, '凤台县', ',1026,1054,', 1054); INSERT INTO `area` VALUES (1061, '2015-10-19 00:21:33', '2015-10-19 00:21:33', 0, 5, '安徽省马鞍山市', 1, '马鞍山市', ',1026,', 1026); INSERT INTO `area` VALUES (1062, '2015-10-19 00:21:34', '2015-10-19 00:21:34', 0, 1, '安徽省马鞍山市花山区', 2, '花山区', ',1026,1061,', 1061); INSERT INTO `area` VALUES (1063, '2015-10-19 00:21:35', '2015-10-19 00:21:35', 0, 2, '安徽省马鞍山市雨山区', 2, '雨山区', ',1026,1061,', 1061); INSERT INTO `area` VALUES (1064, '2015-10-19 00:21:36', '2015-10-19 00:21:36', 0, 3, '安徽省马鞍山市博望区', 2, '博望区', ',1026,1061,', 1061); INSERT INTO `area` VALUES (1065, '2015-10-19 00:21:37', '2015-10-19 00:21:37', 0, 4, '安徽省马鞍山市当涂县', 2, '当涂县', ',1026,1061,', 1061); INSERT INTO `area` VALUES (1066, '2015-10-19 00:21:38', '2015-10-19 00:21:38', 0, 5, '安徽省马鞍山市含山县', 2, '含山县', ',1026,1061,', 1061); INSERT INTO `area` VALUES (1067, '2015-10-19 00:21:39', '2015-10-19 00:21:39', 0, 6, '安徽省马鞍山市和县', 2, '和县', ',1026,1061,', 1061); INSERT INTO `area` VALUES (1068, '2015-10-19 00:21:40', '2015-10-19 00:21:40', 0, 6, '安徽省淮北市', 1, '淮北市', ',1026,', 1026); INSERT INTO `area` VALUES (1069, '2015-10-19 00:21:41', '2015-10-19 00:21:41', 0, 1, '安徽省淮北市杜集区', 2, '杜集区', ',1026,1068,', 1068); INSERT INTO `area` VALUES (1070, '2015-10-19 00:21:42', '2015-10-19 00:21:42', 0, 2, '安徽省淮北市相山区', 2, '相山区', ',1026,1068,', 1068); INSERT INTO `area` VALUES (1071, '2015-10-19 00:21:43', '2015-10-19 00:21:43', 0, 3, '安徽省淮北市烈山区', 2, '烈山区', ',1026,1068,', 1068); INSERT INTO `area` VALUES (1072, '2015-10-19 00:21:44', '2015-10-19 00:21:44', 0, 4, '安徽省淮北市濉溪县', 2, '濉溪县', ',1026,1068,', 1068); INSERT INTO `area` VALUES (1073, '2015-10-19 00:21:45', '2015-10-19 00:21:45', 0, 7, '安徽省铜陵市', 1, '铜陵市', ',1026,', 1026); INSERT INTO `area` VALUES (1074, '2015-10-19 00:21:46', '2015-10-19 00:21:46', 0, 1, '安徽省铜陵市铜官山区', 2, '铜官山区', ',1026,1073,', 1073); INSERT INTO `area` VALUES (1075, '2015-10-19 00:21:47', '2015-10-19 00:21:47', 0, 2, '安徽省铜陵市狮子山区', 2, '狮子山区', ',1026,1073,', 1073); INSERT INTO `area` VALUES (1076, '2015-10-19 00:21:48', '2015-10-19 00:21:48', 0, 3, '安徽省铜陵市郊区', 2, '郊区', ',1026,1073,', 1073); INSERT INTO `area` VALUES (1077, '2015-10-19 00:21:49', '2015-10-19 00:21:49', 0, 4, '安徽省铜陵市铜陵县', 2, '铜陵县', ',1026,1073,', 1073); INSERT INTO `area` VALUES (1078, '2015-10-19 00:21:50', '2015-10-19 00:21:50', 0, 8, '安徽省安庆市', 1, '安庆市', ',1026,', 1026); INSERT INTO `area` VALUES (1079, '2015-10-19 00:21:51', '2015-10-19 00:21:51', 0, 1, '安徽省安庆市迎江区', 2, '迎江区', ',1026,1078,', 1078); INSERT INTO `area` VALUES (1080, '2015-10-19 00:21:52', '2015-10-19 00:21:52', 0, 2, '安徽省安庆市大观区', 2, '大观区', ',1026,1078,', 1078); INSERT INTO `area` VALUES (1081, '2015-10-19 00:21:53', '2015-10-19 00:21:53', 0, 3, '安徽省安庆市宜秀区', 2, '宜秀区', ',1026,1078,', 1078); INSERT INTO `area` VALUES (1082, '2015-10-19 00:21:54', '2015-10-19 00:21:54', 0, 4, '安徽省安庆市怀宁县', 2, '怀宁县', ',1026,1078,', 1078); INSERT INTO `area` VALUES (1083, '2015-10-19 00:21:55', '2015-10-19 00:21:55', 0, 5, '安徽省安庆市枞阳县', 2, '枞阳县', ',1026,1078,', 1078); INSERT INTO `area` VALUES (1084, '2015-10-19 00:21:56', '2015-10-19 00:21:56', 0, 6, '安徽省安庆市潜山县', 2, '潜山县', ',1026,1078,', 1078); INSERT INTO `area` VALUES (1085, '2015-10-19 00:21:57', '2015-10-19 00:21:57', 0, 7, '安徽省安庆市太湖县', 2, '太湖县', ',1026,1078,', 1078); INSERT INTO `area` VALUES (1086, '2015-10-19 00:21:58', '2015-10-19 00:21:58', 0, 8, '安徽省安庆市宿松县', 2, '宿松县', ',1026,1078,', 1078); INSERT INTO `area` VALUES (1087, '2015-10-19 00:21:59', '2015-10-19 00:21:59', 0, 9, '安徽省安庆市望江县', 2, '望江县', ',1026,1078,', 1078); INSERT INTO `area` VALUES (1088, '2015-10-19 00:22:00', '2015-10-19 00:22:00', 0, 10, '安徽省安庆市岳西县', 2, '岳西县', ',1026,1078,', 1078); INSERT INTO `area` VALUES (1089, '2015-10-19 00:22:01', '2015-10-19 00:22:01', 0, 11, '安徽省安庆市桐城市', 2, '桐城市', ',1026,1078,', 1078); INSERT INTO `area` VALUES (1090, '2015-10-19 00:22:02', '2015-10-19 00:22:02', 0, 9, '安徽省黄山市', 1, '黄山市', ',1026,', 1026); INSERT INTO `area` VALUES (1091, '2015-10-19 00:22:03', '2015-10-19 00:22:03', 0, 1, '安徽省黄山市屯溪区', 2, '屯溪区', ',1026,1090,', 1090); INSERT INTO `area` VALUES (1092, '2015-10-19 00:22:04', '2015-10-19 00:22:04', 0, 2, '安徽省黄山市黄山区', 2, '黄山区', ',1026,1090,', 1090); INSERT INTO `area` VALUES (1093, '2015-10-19 00:22:05', '2015-10-19 00:22:05', 0, 3, '安徽省黄山市徽州区', 2, '徽州区', ',1026,1090,', 1090); INSERT INTO `area` VALUES (1094, '2015-10-19 00:22:06', '2015-10-19 00:22:06', 0, 4, '安徽省黄山市歙县', 2, '歙县', ',1026,1090,', 1090); INSERT INTO `area` VALUES (1095, '2015-10-19 00:22:07', '2015-10-19 00:22:07', 0, 5, '安徽省黄山市休宁县', 2, '休宁县', ',1026,1090,', 1090); INSERT INTO `area` VALUES (1096, '2015-10-19 00:22:08', '2015-10-19 00:22:08', 0, 6, '安徽省黄山市黟县', 2, '黟县', ',1026,1090,', 1090); INSERT INTO `area` VALUES (1097, '2015-10-19 00:22:09', '2015-10-19 00:22:09', 0, 7, '安徽省黄山市祁门县', 2, '祁门县', ',1026,1090,', 1090); INSERT INTO `area` VALUES (1098, '2015-10-19 00:22:10', '2015-10-19 00:22:10', 0, 10, '安徽省滁州市', 1, '滁州市', ',1026,', 1026); INSERT INTO `area` VALUES (1099, '2015-10-19 00:22:11', '2015-10-19 00:22:11', 0, 1, '安徽省滁州市琅琊区', 2, '琅琊区', ',1026,1098,', 1098); INSERT INTO `area` VALUES (1100, '2015-10-19 00:22:12', '2015-10-19 00:22:12', 0, 2, '安徽省滁州市南谯区', 2, '南谯区', ',1026,1098,', 1098); INSERT INTO `area` VALUES (1101, '2015-10-19 00:22:13', '2015-10-19 00:22:13', 0, 3, '安徽省滁州市来安县', 2, '来安县', ',1026,1098,', 1098); INSERT INTO `area` VALUES (1102, '2015-10-19 00:22:14', '2015-10-19 00:22:14', 0, 4, '安徽省滁州市全椒县', 2, '全椒县', ',1026,1098,', 1098); INSERT INTO `area` VALUES (1103, '2015-10-19 00:22:15', '2015-10-19 00:22:15', 0, 5, '安徽省滁州市定远县', 2, '定远县', ',1026,1098,', 1098); INSERT INTO `area` VALUES (1104, '2015-10-19 00:22:16', '2015-10-19 00:22:16', 0, 6, '安徽省滁州市凤阳县', 2, '凤阳县', ',1026,1098,', 1098); INSERT INTO `area` VALUES (1105, '2015-10-19 00:22:17', '2015-10-19 00:22:17', 0, 7, '安徽省滁州市天长市', 2, '天长市', ',1026,1098,', 1098); INSERT INTO `area` VALUES (1106, '2015-10-19 00:22:18', '2015-10-19 00:22:18', 0, 8, '安徽省滁州市明光市', 2, '明光市', ',1026,1098,', 1098); INSERT INTO `area` VALUES (1107, '2015-10-19 00:22:19', '2015-10-19 00:22:19', 0, 11, '安徽省阜阳市', 1, '阜阳市', ',1026,', 1026); INSERT INTO `area` VALUES (1108, '2015-10-19 00:22:20', '2015-10-19 00:22:20', 0, 1, '安徽省阜阳市颍州区', 2, '颍州区', ',1026,1107,', 1107); INSERT INTO `area` VALUES (1109, '2015-10-19 00:22:21', '2015-10-19 00:22:21', 0, 2, '安徽省阜阳市颍东区', 2, '颍东区', ',1026,1107,', 1107); INSERT INTO `area` VALUES (1110, '2015-10-19 00:22:22', '2015-10-19 00:22:22', 0, 3, '安徽省阜阳市颍泉区', 2, '颍泉区', ',1026,1107,', 1107); INSERT INTO `area` VALUES (1111, '2015-10-19 00:22:23', '2015-10-19 00:22:23', 0, 4, '安徽省阜阳市临泉县', 2, '临泉县', ',1026,1107,', 1107); INSERT INTO `area` VALUES (1112, '2015-10-19 00:22:24', '2015-10-19 00:22:24', 0, 5, '安徽省阜阳市太和县', 2, '太和县', ',1026,1107,', 1107); INSERT INTO `area` VALUES (1113, '2015-10-19 00:22:25', '2015-10-19 00:22:25', 0, 6, '安徽省阜阳市阜南县', 2, '阜南县', ',1026,1107,', 1107); INSERT INTO `area` VALUES (1114, '2015-10-19 00:22:26', '2015-10-19 00:22:26', 0, 7, '安徽省阜阳市颍上县', 2, '颍上县', ',1026,1107,', 1107); INSERT INTO `area` VALUES (1115, '2015-10-19 00:22:27', '2015-10-19 00:22:27', 0, 8, '安徽省阜阳市界首市', 2, '界首市', ',1026,1107,', 1107); INSERT INTO `area` VALUES (1116, '2015-10-19 00:22:28', '2015-10-19 00:22:28', 0, 12, '安徽省宿州市', 1, '宿州市', ',1026,', 1026); INSERT INTO `area` VALUES (1117, '2015-10-19 00:22:29', '2015-10-19 00:22:29', 0, 1, '安徽省宿州市埇桥区', 2, '埇桥区', ',1026,1116,', 1116); INSERT INTO `area` VALUES (1118, '2015-10-19 00:22:30', '2015-10-19 00:22:30', 0, 2, '安徽省宿州市砀山县', 2, '砀山县', ',1026,1116,', 1116); INSERT INTO `area` VALUES (1119, '2015-10-19 00:22:31', '2015-10-19 00:22:31', 0, 3, '安徽省宿州市萧县', 2, '萧县', ',1026,1116,', 1116); INSERT INTO `area` VALUES (1120, '2015-10-19 00:22:32', '2015-10-19 00:22:32', 0, 4, '安徽省宿州市灵璧县', 2, '灵璧县', ',1026,1116,', 1116); INSERT INTO `area` VALUES (1121, '2015-10-19 00:22:33', '2015-10-19 00:22:33', 0, 5, '安徽省宿州市泗县', 2, '泗县', ',1026,1116,', 1116); INSERT INTO `area` VALUES (1122, '2015-10-19 00:22:34', '2015-10-19 00:22:34', 0, 13, '安徽省六安市', 1, '六安市', ',1026,', 1026); INSERT INTO `area` VALUES (1123, '2015-10-19 00:22:35', '2015-10-19 00:22:35', 0, 1, '安徽省六安市金安区', 2, '金安区', ',1026,1122,', 1122); INSERT INTO `area` VALUES (1124, '2015-10-19 00:22:36', '2015-10-19 00:22:36', 0, 2, '安徽省六安市裕安区', 2, '裕安区', ',1026,1122,', 1122); INSERT INTO `area` VALUES (1125, '2015-10-19 00:22:37', '2015-10-19 00:22:37', 0, 3, '安徽省六安市寿县', 2, '寿县', ',1026,1122,', 1122); INSERT INTO `area` VALUES (1126, '2015-10-19 00:22:38', '2015-10-19 00:22:38', 0, 4, '安徽省六安市霍邱县', 2, '霍邱县', ',1026,1122,', 1122); INSERT INTO `area` VALUES (1127, '2015-10-19 00:22:39', '2015-10-19 00:22:39', 0, 5, '安徽省六安市舒城县', 2, '舒城县', ',1026,1122,', 1122); INSERT INTO `area` VALUES (1128, '2015-10-19 00:22:40', '2015-10-19 00:22:40', 0, 6, '安徽省六安市金寨县', 2, '金寨县', ',1026,1122,', 1122); INSERT INTO `area` VALUES (1129, '2015-10-19 00:22:41', '2015-10-19 00:22:41', 0, 7, '安徽省六安市霍山县', 2, '霍山县', ',1026,1122,', 1122); INSERT INTO `area` VALUES (1130, '2015-10-19 00:22:42', '2015-10-19 00:22:42', 0, 14, '安徽省亳州市', 1, '亳州市', ',1026,', 1026); INSERT INTO `area` VALUES (1131, '2015-10-19 00:22:43', '2015-10-19 00:22:43', 0, 1, '安徽省亳州市谯城区', 2, '谯城区', ',1026,1130,', 1130); INSERT INTO `area` VALUES (1132, '2015-10-19 00:22:44', '2015-10-19 00:22:44', 0, 2, '安徽省亳州市涡阳县', 2, '涡阳县', ',1026,1130,', 1130); INSERT INTO `area` VALUES (1133, '2015-10-19 00:22:45', '2015-10-19 00:22:45', 0, 3, '安徽省亳州市蒙城县', 2, '蒙城县', ',1026,1130,', 1130); INSERT INTO `area` VALUES (1134, '2015-10-19 00:22:46', '2015-10-19 00:22:46', 0, 4, '安徽省亳州市利辛县', 2, '利辛县', ',1026,1130,', 1130); INSERT INTO `area` VALUES (1135, '2015-10-19 00:22:47', '2015-10-19 00:22:47', 0, 15, '安徽省池州市', 1, '池州市', ',1026,', 1026); INSERT INTO `area` VALUES (1136, '2015-10-19 00:22:48', '2015-10-19 00:22:48', 0, 1, '安徽省池州市贵池区', 2, '贵池区', ',1026,1135,', 1135); INSERT INTO `area` VALUES (1137, '2015-10-19 00:22:49', '2015-10-19 00:22:49', 0, 2, '安徽省池州市东至县', 2, '东至县', ',1026,1135,', 1135); INSERT INTO `area` VALUES (1138, '2015-10-19 00:22:50', '2015-10-19 00:22:50', 0, 3, '安徽省池州市石台县', 2, '石台县', ',1026,1135,', 1135); INSERT INTO `area` VALUES (1139, '2015-10-19 00:22:51', '2015-10-19 00:22:51', 0, 4, '安徽省池州市青阳县', 2, '青阳县', ',1026,1135,', 1135); INSERT INTO `area` VALUES (1140, '2015-10-19 00:22:52', '2015-10-19 00:22:52', 0, 16, '安徽省宣城市', 1, '宣城市', ',1026,', 1026); INSERT INTO `area` VALUES (1141, '2015-10-19 00:22:53', '2015-10-19 00:22:53', 0, 1, '安徽省宣城市宣州区', 2, '宣州区', ',1026,1140,', 1140); INSERT INTO `area` VALUES (1142, '2015-10-19 00:22:54', '2015-10-19 00:22:54', 0, 2, '安徽省宣城市郎溪县', 2, '郎溪县', ',1026,1140,', 1140); INSERT INTO `area` VALUES (1143, '2015-10-19 00:22:55', '2015-10-19 00:22:55', 0, 3, '安徽省宣城市广德县', 2, '广德县', ',1026,1140,', 1140); INSERT INTO `area` VALUES (1144, '2015-10-19 00:22:56', '2015-10-19 00:22:56', 0, 4, '安徽省宣城市泾县', 2, '泾县', ',1026,1140,', 1140); INSERT INTO `area` VALUES (1145, '2015-10-19 00:22:57', '2015-10-19 00:22:57', 0, 5, '安徽省宣城市绩溪县', 2, '绩溪县', ',1026,1140,', 1140); INSERT INTO `area` VALUES (1146, '2015-10-19 00:22:58', '2015-10-19 00:22:58', 0, 6, '安徽省宣城市旌德县', 2, '旌德县', ',1026,1140,', 1140); INSERT INTO `area` VALUES (1147, '2015-10-19 00:22:59', '2015-10-19 00:22:59', 0, 7, '安徽省宣城市宁国市', 2, '宁国市', ',1026,1140,', 1140); INSERT INTO `area` VALUES (1148, '2015-10-19 00:23:00', '2015-10-19 00:23:00', 0, 13, '福建省', 0, '福建省', ',', NULL); INSERT INTO `area` VALUES (1149, '2015-10-19 00:23:01', '2015-10-19 00:23:01', 0, 1, '福建省福州市', 1, '福州市', ',1148,', 1148); INSERT INTO `area` VALUES (1150, '2015-10-19 00:23:02', '2015-10-19 00:23:02', 0, 1, '福建省福州市鼓楼区', 2, '鼓楼区', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1151, '2015-10-19 00:23:03', '2015-10-19 00:23:03', 0, 2, '福建省福州市台江区', 2, '台江区', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1152, '2015-10-19 00:23:04', '2015-10-19 00:23:04', 0, 3, '福建省福州市仓山区', 2, '仓山区', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1153, '2015-10-19 00:23:05', '2015-10-19 00:23:05', 0, 4, '福建省福州市马尾区', 2, '马尾区', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1154, '2015-10-19 00:23:06', '2015-10-19 00:23:06', 0, 5, '福建省福州市晋安区', 2, '晋安区', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1155, '2015-10-19 00:23:07', '2015-10-19 00:23:07', 0, 6, '福建省福州市闽侯县', 2, '闽侯县', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1156, '2015-10-19 00:23:08', '2015-10-19 00:23:08', 0, 7, '福建省福州市连江县', 2, '连江县', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1157, '2015-10-19 00:23:09', '2015-10-19 00:23:09', 0, 8, '福建省福州市罗源县', 2, '罗源县', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1158, '2015-10-19 00:23:10', '2015-10-19 00:23:10', 0, 9, '福建省福州市闽清县', 2, '闽清县', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1159, '2015-10-19 00:23:11', '2015-10-19 00:23:11', 0, 10, '福建省福州市永泰县', 2, '永泰县', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1160, '2015-10-19 00:23:12', '2015-10-19 00:23:12', 0, 11, '福建省福州市平潭县', 2, '平潭县', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1161, '2015-10-19 00:23:13', '2015-10-19 00:23:13', 0, 12, '福建省福州市福清市', 2, '福清市', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1162, '2015-10-19 00:23:14', '2015-10-19 00:23:14', 0, 13, '福建省福州市长乐市', 2, '长乐市', ',1148,1149,', 1149); INSERT INTO `area` VALUES (1163, '2015-10-19 00:23:15', '2015-10-19 00:23:15', 0, 2, '福建省厦门市', 1, '厦门市', ',1148,', 1148); INSERT INTO `area` VALUES (1164, '2015-10-19 00:23:16', '2015-10-19 00:23:16', 0, 1, '福建省厦门市思明区', 2, '思明区', ',1148,1163,', 1163); INSERT INTO `area` VALUES (1165, '2015-10-19 00:23:17', '2015-10-19 00:23:17', 0, 2, '福建省厦门市海沧区', 2, '海沧区', ',1148,1163,', 1163); INSERT INTO `area` VALUES (1166, '2015-10-19 00:23:18', '2015-10-19 00:23:18', 0, 3, '福建省厦门市湖里区', 2, '湖里区', ',1148,1163,', 1163); INSERT INTO `area` VALUES (1167, '2015-10-19 00:23:19', '2015-10-19 00:23:19', 0, 4, '福建省厦门市集美区', 2, '集美区', ',1148,1163,', 1163); INSERT INTO `area` VALUES (1168, '2015-10-19 00:23:20', '2015-10-19 00:23:20', 0, 5, '福建省厦门市同安区', 2, '同安区', ',1148,1163,', 1163); INSERT INTO `area` VALUES (1169, '2015-10-19 00:23:21', '2015-10-19 00:23:21', 0, 6, '福建省厦门市翔安区', 2, '翔安区', ',1148,1163,', 1163); INSERT INTO `area` VALUES (1170, '2015-10-19 00:23:22', '2015-10-19 00:23:22', 0, 3, '福建省莆田市', 1, '莆田市', ',1148,', 1148); INSERT INTO `area` VALUES (1171, '2015-10-19 00:23:23', '2015-10-19 00:23:23', 0, 1, '福建省莆田市城厢区', 2, '城厢区', ',1148,1170,', 1170); INSERT INTO `area` VALUES (1172, '2015-10-19 00:23:24', '2015-10-19 00:23:24', 0, 2, '福建省莆田市涵江区', 2, '涵江区', ',1148,1170,', 1170); INSERT INTO `area` VALUES (1173, '2015-10-19 00:23:25', '2015-10-19 00:23:25', 0, 3, '福建省莆田市荔城区', 2, '荔城区', ',1148,1170,', 1170); INSERT INTO `area` VALUES (1174, '2015-10-19 00:23:26', '2015-10-19 00:23:26', 0, 4, '福建省莆田市秀屿区', 2, '秀屿区', ',1148,1170,', 1170); INSERT INTO `area` VALUES (1175, '2015-10-19 00:23:27', '2015-10-19 00:23:27', 0, 5, '福建省莆田市仙游县', 2, '仙游县', ',1148,1170,', 1170); INSERT INTO `area` VALUES (1176, '2015-10-19 00:23:28', '2015-10-19 00:23:28', 0, 4, '福建省三明市', 1, '三明市', ',1148,', 1148); INSERT INTO `area` VALUES (1177, '2015-10-19 00:23:29', '2015-10-19 00:23:29', 0, 1, '福建省三明市梅列区', 2, '梅列区', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1178, '2015-10-19 00:23:30', '2015-10-19 00:23:30', 0, 2, '福建省三明市三元区', 2, '三元区', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1179, '2015-10-19 00:23:31', '2015-10-19 00:23:31', 0, 3, '福建省三明市明溪县', 2, '明溪县', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1180, '2015-10-19 00:23:32', '2015-10-19 00:23:32', 0, 4, '福建省三明市清流县', 2, '清流县', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1181, '2015-10-19 00:23:33', '2015-10-19 00:23:33', 0, 5, '福建省三明市宁化县', 2, '宁化县', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1182, '2015-10-19 00:23:34', '2015-10-19 00:23:34', 0, 6, '福建省三明市大田县', 2, '大田县', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1183, '2015-10-19 00:23:35', '2015-10-19 00:23:35', 0, 7, '福建省三明市尤溪县', 2, '尤溪县', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1184, '2015-10-19 00:23:36', '2015-10-19 00:23:36', 0, 8, '福建省三明市沙县', 2, '沙县', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1185, '2015-10-19 00:23:37', '2015-10-19 00:23:37', 0, 9, '福建省三明市将乐县', 2, '将乐县', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1186, '2015-10-19 00:23:38', '2015-10-19 00:23:38', 0, 10, '福建省三明市泰宁县', 2, '泰宁县', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1187, '2015-10-19 00:23:39', '2015-10-19 00:23:39', 0, 11, '福建省三明市建宁县', 2, '建宁县', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1188, '2015-10-19 00:23:40', '2015-10-19 00:23:40', 0, 12, '福建省三明市永安市', 2, '永安市', ',1148,1176,', 1176); INSERT INTO `area` VALUES (1189, '2015-10-19 00:23:41', '2015-10-19 00:23:41', 0, 5, '福建省泉州市', 1, '泉州市', ',1148,', 1148); INSERT INTO `area` VALUES (1190, '2015-10-19 00:23:42', '2015-10-19 00:23:42', 0, 1, '福建省泉州市鲤城区', 2, '鲤城区', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1191, '2015-10-19 00:23:43', '2015-10-19 00:23:43', 0, 2, '福建省泉州市丰泽区', 2, '丰泽区', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1192, '2015-10-19 00:23:44', '2015-10-19 00:23:44', 0, 3, '福建省泉州市洛江区', 2, '洛江区', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1193, '2015-10-19 00:23:45', '2015-10-19 00:23:45', 0, 4, '福建省泉州市泉港区', 2, '泉港区', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1194, '2015-10-19 00:23:46', '2015-10-19 00:23:46', 0, 5, '福建省泉州市惠安县', 2, '惠安县', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1195, '2015-10-19 00:23:47', '2015-10-19 00:23:47', 0, 6, '福建省泉州市安溪县', 2, '安溪县', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1196, '2015-10-19 00:23:48', '2015-10-19 00:23:48', 0, 7, '福建省泉州市永春县', 2, '永春县', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1197, '2015-10-19 00:23:49', '2015-10-19 00:23:49', 0, 8, '福建省泉州市德化县', 2, '德化县', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1198, '2015-10-19 00:23:50', '2015-10-19 00:23:50', 0, 9, '福建省泉州市金门县', 2, '金门县', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1199, '2015-10-19 00:23:51', '2015-10-19 00:23:51', 0, 10, '福建省泉州市石狮市', 2, '石狮市', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1200, '2015-10-19 00:23:52', '2015-10-19 00:23:52', 0, 11, '福建省泉州市晋江市', 2, '晋江市', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1201, '2015-10-19 00:23:53', '2015-10-19 00:23:53', 0, 12, '福建省泉州市南安市', 2, '南安市', ',1148,1189,', 1189); INSERT INTO `area` VALUES (1202, '2015-10-19 00:23:54', '2015-10-19 00:23:54', 0, 6, '福建省漳州市', 1, '漳州市', ',1148,', 1148); INSERT INTO `area` VALUES (1203, '2015-10-19 00:23:55', '2015-10-19 00:23:55', 0, 1, '福建省漳州市芗城区', 2, '芗城区', ',1148,1202,', 1202); INSERT INTO `area` VALUES (1204, '2015-10-19 00:23:56', '2015-10-19 00:23:56', 0, 2, '福建省漳州市龙文区', 2, '龙文区', ',1148,1202,', 1202); INSERT INTO `area` VALUES (1205, '2015-10-19 00:23:57', '2015-10-19 00:23:57', 0, 3, '福建省漳州市云霄县', 2, '云霄县', ',1148,1202,', 1202); INSERT INTO `area` VALUES (1206, '2015-10-19 00:23:58', '2015-10-19 00:23:58', 0, 4, '福建省漳州市漳浦县', 2, '漳浦县', ',1148,1202,', 1202); INSERT INTO `area` VALUES (1207, '2015-10-19 00:23:59', '2015-10-19 00:23:59', 0, 5, '福建省漳州市诏安县', 2, '诏安县', ',1148,1202,', 1202); INSERT INTO `area` VALUES (1208, '2015-10-19 00:24:00', '2015-10-19 00:24:00', 0, 6, '福建省漳州市长泰县', 2, '长泰县', ',1148,1202,', 1202); INSERT INTO `area` VALUES (1209, '2015-10-19 00:24:01', '2015-10-19 00:24:01', 0, 7, '福建省漳州市东山县', 2, '东山县', ',1148,1202,', 1202); INSERT INTO `area` VALUES (1210, '2015-10-19 00:24:02', '2015-10-19 00:24:02', 0, 8, '福建省漳州市南靖县', 2, '南靖县', ',1148,1202,', 1202); INSERT INTO `area` VALUES (1211, '2015-10-19 00:24:03', '2015-10-19 00:24:03', 0, 9, '福建省漳州市平和县', 2, '平和县', ',1148,1202,', 1202); INSERT INTO `area` VALUES (1212, '2015-10-19 00:24:04', '2015-10-19 00:24:04', 0, 10, '福建省漳州市华安县', 2, '华安县', ',1148,1202,', 1202); INSERT INTO `area` VALUES (1213, '2015-10-19 00:24:05', '2015-10-19 00:24:05', 0, 11, '福建省漳州市龙海市', 2, '龙海市', ',1148,1202,', 1202); INSERT INTO `area` VALUES (1214, '2015-10-19 00:24:06', '2015-10-19 00:24:06', 0, 7, '福建省南平市', 1, '南平市', ',1148,', 1148); INSERT INTO `area` VALUES (1215, '2015-10-19 00:24:07', '2015-10-19 00:24:07', 0, 1, '福建省南平市延平区', 2, '延平区', ',1148,1214,', 1214); INSERT INTO `area` VALUES (1216, '2015-10-19 00:24:08', '2015-10-19 00:24:08', 0, 2, '福建省南平市顺昌县', 2, '顺昌县', ',1148,1214,', 1214); INSERT INTO `area` VALUES (1217, '2015-10-19 00:24:09', '2015-10-19 00:24:09', 0, 3, '福建省南平市浦城县', 2, '浦城县', ',1148,1214,', 1214); INSERT INTO `area` VALUES (1218, '2015-10-19 00:24:10', '2015-10-19 00:24:10', 0, 4, '福建省南平市光泽县', 2, '光泽县', ',1148,1214,', 1214); INSERT INTO `area` VALUES (1219, '2015-10-19 00:24:11', '2015-10-19 00:24:11', 0, 5, '福建省南平市松溪县', 2, '松溪县', ',1148,1214,', 1214); INSERT INTO `area` VALUES (1220, '2015-10-19 00:24:12', '2015-10-19 00:24:12', 0, 6, '福建省南平市政和县', 2, '政和县', ',1148,1214,', 1214); INSERT INTO `area` VALUES (1221, '2015-10-19 00:24:13', '2015-10-19 00:24:13', 0, 7, '福建省南平市邵武市', 2, '邵武市', ',1148,1214,', 1214); INSERT INTO `area` VALUES (1222, '2015-10-19 00:24:14', '2015-10-19 00:24:14', 0, 8, '福建省南平市武夷山市', 2, '武夷山市', ',1148,1214,', 1214); INSERT INTO `area` VALUES (1223, '2015-10-19 00:24:15', '2015-10-19 00:24:15', 0, 9, '福建省南平市建瓯市', 2, '建瓯市', ',1148,1214,', 1214); INSERT INTO `area` VALUES (1224, '2015-10-19 00:24:16', '2015-10-19 00:24:16', 0, 10, '福建省南平市建阳市', 2, '建阳市', ',1148,1214,', 1214); INSERT INTO `area` VALUES (1225, '2015-10-19 00:24:17', '2015-10-19 00:24:17', 0, 8, '福建省龙岩市', 1, '龙岩市', ',1148,', 1148); INSERT INTO `area` VALUES (1226, '2015-10-19 00:24:18', '2015-10-19 00:24:18', 0, 1, '福建省龙岩市新罗区', 2, '新罗区', ',1148,1225,', 1225); INSERT INTO `area` VALUES (1227, '2015-10-19 00:24:19', '2015-10-19 00:24:19', 0, 2, '福建省龙岩市长汀县', 2, '长汀县', ',1148,1225,', 1225); INSERT INTO `area` VALUES (1228, '2015-10-19 00:24:20', '2015-10-19 00:24:20', 0, 3, '福建省龙岩市永定县', 2, '永定县', ',1148,1225,', 1225); INSERT INTO `area` VALUES (1229, '2015-10-19 00:24:21', '2015-10-19 00:24:21', 0, 4, '福建省龙岩市上杭县', 2, '上杭县', ',1148,1225,', 1225); INSERT INTO `area` VALUES (1230, '2015-10-19 00:24:22', '2015-10-19 00:24:22', 0, 5, '福建省龙岩市武平县', 2, '武平县', ',1148,1225,', 1225); INSERT INTO `area` VALUES (1231, '2015-10-19 00:24:23', '2015-10-19 00:24:23', 0, 6, '福建省龙岩市连城县', 2, '连城县', ',1148,1225,', 1225); INSERT INTO `area` VALUES (1232, '2015-10-19 00:24:24', '2015-10-19 00:24:24', 0, 7, '福建省龙岩市漳平市', 2, '漳平市', ',1148,1225,', 1225); INSERT INTO `area` VALUES (1233, '2015-10-19 00:24:25', '2015-10-19 00:24:25', 0, 9, '福建省宁德市', 1, '宁德市', ',1148,', 1148); INSERT INTO `area` VALUES (1234, '2015-10-19 00:24:26', '2015-10-19 00:24:26', 0, 1, '福建省宁德市蕉城区', 2, '蕉城区', ',1148,1233,', 1233); INSERT INTO `area` VALUES (1235, '2015-10-19 00:24:27', '2015-10-19 00:24:27', 0, 2, '福建省宁德市霞浦县', 2, '霞浦县', ',1148,1233,', 1233); INSERT INTO `area` VALUES (1236, '2015-10-19 00:24:28', '2015-10-19 00:24:28', 0, 3, '福建省宁德市古田县', 2, '古田县', ',1148,1233,', 1233); INSERT INTO `area` VALUES (1237, '2015-10-19 00:24:29', '2015-10-19 00:24:29', 0, 4, '福建省宁德市屏南县', 2, '屏南县', ',1148,1233,', 1233); INSERT INTO `area` VALUES (1238, '2015-10-19 00:24:30', '2015-10-19 00:24:30', 0, 5, '福建省宁德市寿宁县', 2, '寿宁县', ',1148,1233,', 1233); INSERT INTO `area` VALUES (1239, '2015-10-19 00:24:31', '2015-10-19 00:24:31', 0, 6, '福建省宁德市周宁县', 2, '周宁县', ',1148,1233,', 1233); INSERT INTO `area` VALUES (1240, '2015-10-19 00:24:32', '2015-10-19 00:24:32', 0, 7, '福建省宁德市柘荣县', 2, '柘荣县', ',1148,1233,', 1233); INSERT INTO `area` VALUES (1241, '2015-10-19 00:24:33', '2015-10-19 00:24:33', 0, 8, '福建省宁德市福安市', 2, '福安市', ',1148,1233,', 1233); INSERT INTO `area` VALUES (1242, '2015-10-19 00:24:34', '2015-10-19 00:24:34', 0, 9, '福建省宁德市福鼎市', 2, '福鼎市', ',1148,1233,', 1233); INSERT INTO `area` VALUES (1243, '2015-10-19 00:24:35', '2015-10-19 00:24:35', 0, 14, '江西省', 0, '江西省', ',', NULL); INSERT INTO `area` VALUES (1244, '2015-10-19 00:24:36', '2015-10-19 00:24:36', 0, 1, '江西省南昌市', 1, '南昌市', ',1243,', 1243); INSERT INTO `area` VALUES (1245, '2015-10-19 00:24:37', '2015-10-19 00:24:37', 0, 1, '江西省南昌市东湖区', 2, '东湖区', ',1243,1244,', 1244); INSERT INTO `area` VALUES (1246, '2015-10-19 00:24:38', '2015-10-19 00:24:38', 0, 2, '江西省南昌市西湖区', 2, '西湖区', ',1243,1244,', 1244); INSERT INTO `area` VALUES (1247, '2015-10-19 00:24:39', '2015-10-19 00:24:39', 0, 3, '江西省南昌市青云谱区', 2, '青云谱区', ',1243,1244,', 1244); INSERT INTO `area` VALUES (1248, '2015-10-19 00:24:40', '2015-10-19 00:24:40', 0, 4, '江西省南昌市湾里区', 2, '湾里区', ',1243,1244,', 1244); INSERT INTO `area` VALUES (1249, '2015-10-19 00:24:41', '2015-10-19 00:24:41', 0, 5, '江西省南昌市青山湖区', 2, '青山湖区', ',1243,1244,', 1244); INSERT INTO `area` VALUES (1250, '2015-10-19 00:24:42', '2015-10-19 00:24:42', 0, 6, '江西省南昌市南昌县', 2, '南昌县', ',1243,1244,', 1244); INSERT INTO `area` VALUES (1251, '2015-10-19 00:24:43', '2015-10-19 00:24:43', 0, 7, '江西省南昌市新建县', 2, '新建县', ',1243,1244,', 1244); INSERT INTO `area` VALUES (1252, '2015-10-19 00:24:44', '2015-10-19 00:24:44', 0, 8, '江西省南昌市安义县', 2, '安义县', ',1243,1244,', 1244); INSERT INTO `area` VALUES (1253, '2015-10-19 00:24:45', '2015-10-19 00:24:45', 0, 9, '江西省南昌市进贤县', 2, '进贤县', ',1243,1244,', 1244); INSERT INTO `area` VALUES (1254, '2015-10-19 00:24:46', '2015-10-19 00:24:46', 0, 2, '江西省景德镇市', 1, '景德镇市', ',1243,', 1243); INSERT INTO `area` VALUES (1255, '2015-10-19 00:24:47', '2015-10-19 00:24:47', 0, 1, '江西省景德镇市昌江区', 2, '昌江区', ',1243,1254,', 1254); INSERT INTO `area` VALUES (1256, '2015-10-19 00:24:48', '2015-10-19 00:24:48', 0, 2, '江西省景德镇市珠山区', 2, '珠山区', ',1243,1254,', 1254); INSERT INTO `area` VALUES (1257, '2015-10-19 00:24:49', '2015-10-19 00:24:49', 0, 3, '江西省景德镇市浮梁县', 2, '浮梁县', ',1243,1254,', 1254); INSERT INTO `area` VALUES (1258, '2015-10-19 00:24:50', '2015-10-19 00:24:50', 0, 4, '江西省景德镇市乐平市', 2, '乐平市', ',1243,1254,', 1254); INSERT INTO `area` VALUES (1259, '2015-10-19 00:24:51', '2015-10-19 00:24:51', 0, 3, '江西省萍乡市', 1, '萍乡市', ',1243,', 1243); INSERT INTO `area` VALUES (1260, '2015-10-19 00:24:52', '2015-10-19 00:24:52', 0, 1, '江西省萍乡市安源区', 2, '安源区', ',1243,1259,', 1259); INSERT INTO `area` VALUES (1261, '2015-10-19 00:24:53', '2015-10-19 00:24:53', 0, 2, '江西省萍乡市湘东区', 2, '湘东区', ',1243,1259,', 1259); INSERT INTO `area` VALUES (1262, '2015-10-19 00:24:54', '2015-10-19 00:24:54', 0, 3, '江西省萍乡市莲花县', 2, '莲花县', ',1243,1259,', 1259); INSERT INTO `area` VALUES (1263, '2015-10-19 00:24:55', '2015-10-19 00:24:55', 0, 4, '江西省萍乡市上栗县', 2, '上栗县', ',1243,1259,', 1259); INSERT INTO `area` VALUES (1264, '2015-10-19 00:24:56', '2015-10-19 00:24:56', 0, 5, '江西省萍乡市芦溪县', 2, '芦溪县', ',1243,1259,', 1259); INSERT INTO `area` VALUES (1265, '2015-10-19 00:24:57', '2015-10-19 00:24:57', 0, 4, '江西省九江市', 1, '九江市', ',1243,', 1243); INSERT INTO `area` VALUES (1266, '2015-10-19 00:24:58', '2015-10-19 00:24:58', 0, 1, '江西省九江市庐山区', 2, '庐山区', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1267, '2015-10-19 00:24:59', '2015-10-19 00:24:59', 0, 2, '江西省九江市浔阳区', 2, '浔阳区', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1268, '2015-10-19 00:25:00', '2015-10-19 00:25:00', 0, 3, '江西省九江市九江县', 2, '九江县', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1269, '2015-10-19 00:25:01', '2015-10-19 00:25:01', 0, 4, '江西省九江市武宁县', 2, '武宁县', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1270, '2015-10-19 00:25:02', '2015-10-19 00:25:02', 0, 5, '江西省九江市修水县', 2, '修水县', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1271, '2015-10-19 00:25:03', '2015-10-19 00:25:03', 0, 6, '江西省九江市永修县', 2, '永修县', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1272, '2015-10-19 00:25:04', '2015-10-19 00:25:04', 0, 7, '江西省九江市德安县', 2, '德安县', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1273, '2015-10-19 00:25:05', '2015-10-19 00:25:05', 0, 8, '江西省九江市星子县', 2, '星子县', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1274, '2015-10-19 00:25:06', '2015-10-19 00:25:06', 0, 9, '江西省九江市都昌县', 2, '都昌县', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1275, '2015-10-19 00:25:07', '2015-10-19 00:25:07', 0, 10, '江西省九江市湖口县', 2, '湖口县', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1276, '2015-10-19 00:25:08', '2015-10-19 00:25:08', 0, 11, '江西省九江市彭泽县', 2, '彭泽县', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1277, '2015-10-19 00:25:09', '2015-10-19 00:25:09', 0, 12, '江西省九江市瑞昌市', 2, '瑞昌市', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1278, '2015-10-19 00:25:10', '2015-10-19 00:25:10', 0, 13, '江西省九江市共青城市', 2, '共青城市', ',1243,1265,', 1265); INSERT INTO `area` VALUES (1279, '2015-10-19 00:25:11', '2015-10-19 00:25:11', 0, 5, '江西省新余市', 1, '新余市', ',1243,', 1243); INSERT INTO `area` VALUES (1280, '2015-10-19 00:25:12', '2015-10-19 00:25:12', 0, 1, '江西省新余市渝水区', 2, '渝水区', ',1243,1279,', 1279); INSERT INTO `area` VALUES (1281, '2015-10-19 00:25:13', '2015-10-19 00:25:13', 0, 2, '江西省新余市分宜县', 2, '分宜县', ',1243,1279,', 1279); INSERT INTO `area` VALUES (1282, '2015-10-19 00:25:14', '2015-10-19 00:25:14', 0, 6, '江西省鹰潭市', 1, '鹰潭市', ',1243,', 1243); INSERT INTO `area` VALUES (1283, '2015-10-19 00:25:15', '2015-10-19 00:25:15', 0, 1, '江西省鹰潭市月湖区', 2, '月湖区', ',1243,1282,', 1282); INSERT INTO `area` VALUES (1284, '2015-10-19 00:25:16', '2015-10-19 00:25:16', 0, 2, '江西省鹰潭市余江县', 2, '余江县', ',1243,1282,', 1282); INSERT INTO `area` VALUES (1285, '2015-10-19 00:25:17', '2015-10-19 00:25:17', 0, 3, '江西省鹰潭市贵溪市', 2, '贵溪市', ',1243,1282,', 1282); INSERT INTO `area` VALUES (1286, '2015-10-19 00:25:18', '2015-10-19 00:25:18', 0, 7, '江西省赣州市', 1, '赣州市', ',1243,', 1243); INSERT INTO `area` VALUES (1287, '2015-10-19 00:25:19', '2015-10-19 00:25:19', 0, 1, '江西省赣州市章贡区', 2, '章贡区', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1288, '2015-10-19 00:25:20', '2015-10-19 00:25:20', 0, 2, '江西省赣州市赣县', 2, '赣县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1289, '2015-10-19 00:25:21', '2015-10-19 00:25:21', 0, 3, '江西省赣州市信丰县', 2, '信丰县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1290, '2015-10-19 00:25:22', '2015-10-19 00:25:22', 0, 4, '江西省赣州市大余县', 2, '大余县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1291, '2015-10-19 00:25:23', '2015-10-19 00:25:23', 0, 5, '江西省赣州市上犹县', 2, '上犹县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1292, '2015-10-19 00:25:24', '2015-10-19 00:25:24', 0, 6, '江西省赣州市崇义县', 2, '崇义县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1293, '2015-10-19 00:25:25', '2015-10-19 00:25:25', 0, 7, '江西省赣州市安远县', 2, '安远县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1294, '2015-10-19 00:25:26', '2015-10-19 00:25:26', 0, 8, '江西省赣州市龙南县', 2, '龙南县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1295, '2015-10-19 00:25:27', '2015-10-19 00:25:27', 0, 9, '江西省赣州市定南县', 2, '定南县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1296, '2015-10-19 00:25:28', '2015-10-19 00:25:28', 0, 10, '江西省赣州市全南县', 2, '全南县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1297, '2015-10-19 00:25:29', '2015-10-19 00:25:29', 0, 11, '江西省赣州市宁都县', 2, '宁都县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1298, '2015-10-19 00:25:30', '2015-10-19 00:25:30', 0, 12, '江西省赣州市于都县', 2, '于都县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1299, '2015-10-19 00:25:31', '2015-10-19 00:25:31', 0, 13, '江西省赣州市兴国县', 2, '兴国县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1300, '2015-10-19 00:25:32', '2015-10-19 00:25:32', 0, 14, '江西省赣州市会昌县', 2, '会昌县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1301, '2015-10-19 00:25:33', '2015-10-19 00:25:33', 0, 15, '江西省赣州市寻乌县', 2, '寻乌县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1302, '2015-10-19 00:25:34', '2015-10-19 00:25:34', 0, 16, '江西省赣州市石城县', 2, '石城县', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1303, '2015-10-19 00:25:35', '2015-10-19 00:25:35', 0, 17, '江西省赣州市瑞金市', 2, '瑞金市', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1304, '2015-10-19 00:25:36', '2015-10-19 00:25:36', 0, 18, '江西省赣州市南康市', 2, '南康市', ',1243,1286,', 1286); INSERT INTO `area` VALUES (1305, '2015-10-19 00:25:37', '2015-10-19 00:25:37', 0, 8, '江西省吉安市', 1, '吉安市', ',1243,', 1243); INSERT INTO `area` VALUES (1306, '2015-10-19 00:25:38', '2015-10-19 00:25:38', 0, 1, '江西省吉安市吉州区', 2, '吉州区', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1307, '2015-10-19 00:25:39', '2015-10-19 00:25:39', 0, 2, '江西省吉安市青原区', 2, '青原区', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1308, '2015-10-19 00:25:40', '2015-10-19 00:25:40', 0, 3, '江西省吉安市吉安县', 2, '吉安县', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1309, '2015-10-19 00:25:41', '2015-10-19 00:25:41', 0, 4, '江西省吉安市吉水县', 2, '吉水县', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1310, '2015-10-19 00:25:42', '2015-10-19 00:25:42', 0, 5, '江西省吉安市峡江县', 2, '峡江县', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1311, '2015-10-19 00:25:43', '2015-10-19 00:25:43', 0, 6, '江西省吉安市新干县', 2, '新干县', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1312, '2015-10-19 00:25:44', '2015-10-19 00:25:44', 0, 7, '江西省吉安市永丰县', 2, '永丰县', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1313, '2015-10-19 00:25:45', '2015-10-19 00:25:45', 0, 8, '江西省吉安市泰和县', 2, '泰和县', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1314, '2015-10-19 00:25:46', '2015-10-19 00:25:46', 0, 9, '江西省吉安市遂川县', 2, '遂川县', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1315, '2015-10-19 00:25:47', '2015-10-19 00:25:47', 0, 10, '江西省吉安市万安县', 2, '万安县', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1316, '2015-10-19 00:25:48', '2015-10-19 00:25:48', 0, 11, '江西省吉安市安福县', 2, '安福县', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1317, '2015-10-19 00:25:49', '2015-10-19 00:25:49', 0, 12, '江西省吉安市永新县', 2, '永新县', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1318, '2015-10-19 00:25:50', '2015-10-19 00:25:50', 0, 13, '江西省吉安市井冈山市', 2, '井冈山市', ',1243,1305,', 1305); INSERT INTO `area` VALUES (1319, '2015-10-19 00:25:51', '2015-10-19 00:25:51', 0, 9, '江西省宜春市', 1, '宜春市', ',1243,', 1243); INSERT INTO `area` VALUES (1320, '2015-10-19 00:25:52', '2015-10-19 00:25:52', 0, 1, '江西省宜春市袁州区', 2, '袁州区', ',1243,1319,', 1319); INSERT INTO `area` VALUES (1321, '2015-10-19 00:25:53', '2015-10-19 00:25:53', 0, 2, '江西省宜春市奉新县', 2, '奉新县', ',1243,1319,', 1319); INSERT INTO `area` VALUES (1322, '2015-10-19 00:25:54', '2015-10-19 00:25:54', 0, 3, '江西省宜春市万载县', 2, '万载县', ',1243,1319,', 1319); INSERT INTO `area` VALUES (1323, '2015-10-19 00:25:55', '2015-10-19 00:25:55', 0, 4, '江西省宜春市上高县', 2, '上高县', ',1243,1319,', 1319); INSERT INTO `area` VALUES (1324, '2015-10-19 00:25:56', '2015-10-19 00:25:56', 0, 5, '江西省宜春市宜丰县', 2, '宜丰县', ',1243,1319,', 1319); INSERT INTO `area` VALUES (1325, '2015-10-19 00:25:57', '2015-10-19 00:25:57', 0, 6, '江西省宜春市靖安县', 2, '靖安县', ',1243,1319,', 1319); INSERT INTO `area` VALUES (1326, '2015-10-19 00:25:58', '2015-10-19 00:25:58', 0, 7, '江西省宜春市铜鼓县', 2, '铜鼓县', ',1243,1319,', 1319); INSERT INTO `area` VALUES (1327, '2015-10-19 00:25:59', '2015-10-19 00:25:59', 0, 8, '江西省宜春市丰城市', 2, '丰城市', ',1243,1319,', 1319); INSERT INTO `area` VALUES (1328, '2015-10-19 00:26:00', '2015-10-19 00:26:00', 0, 9, '江西省宜春市樟树市', 2, '樟树市', ',1243,1319,', 1319); INSERT INTO `area` VALUES (1329, '2015-10-19 00:26:01', '2015-10-19 00:26:01', 0, 10, '江西省宜春市高安市', 2, '高安市', ',1243,1319,', 1319); INSERT INTO `area` VALUES (1330, '2015-10-19 00:26:02', '2015-10-19 00:26:02', 0, 10, '江西省抚州市', 1, '抚州市', ',1243,', 1243); INSERT INTO `area` VALUES (1331, '2015-10-19 00:26:03', '2015-10-19 00:26:03', 0, 1, '江西省抚州市临川区', 2, '临川区', ',1243,1330,', 1330); INSERT INTO `area` VALUES (1332, '2015-10-19 00:26:04', '2015-10-19 00:26:04', 0, 2, '江西省抚州市南城县', 2, '南城县', ',1243,1330,', 1330); INSERT INTO `area` VALUES (1333, '2015-10-19 00:26:05', '2015-10-19 00:26:05', 0, 3, '江西省抚州市黎川县', 2, '黎川县', ',1243,1330,', 1330); INSERT INTO `area` VALUES (1334, '2015-10-19 00:26:06', '2015-10-19 00:26:06', 0, 4, '江西省抚州市南丰县', 2, '南丰县', ',1243,1330,', 1330); INSERT INTO `area` VALUES (1335, '2015-10-19 00:26:07', '2015-10-19 00:26:07', 0, 5, '江西省抚州市崇仁县', 2, '崇仁县', ',1243,1330,', 1330); INSERT INTO `area` VALUES (1336, '2015-10-19 00:26:08', '2015-10-19 00:26:08', 0, 6, '江西省抚州市乐安县', 2, '乐安县', ',1243,1330,', 1330); INSERT INTO `area` VALUES (1337, '2015-10-19 00:26:09', '2015-10-19 00:26:09', 0, 7, '江西省抚州市宜黄县', 2, '宜黄县', ',1243,1330,', 1330); INSERT INTO `area` VALUES (1338, '2015-10-19 00:26:10', '2015-10-19 00:26:10', 0, 8, '江西省抚州市金溪县', 2, '金溪县', ',1243,1330,', 1330); INSERT INTO `area` VALUES (1339, '2015-10-19 00:26:11', '2015-10-19 00:26:11', 0, 9, '江西省抚州市资溪县', 2, '资溪县', ',1243,1330,', 1330); INSERT INTO `area` VALUES (1340, '2015-10-19 00:26:12', '2015-10-19 00:26:12', 0, 10, '江西省抚州市东乡县', 2, '东乡县', ',1243,1330,', 1330); INSERT INTO `area` VALUES (1341, '2015-10-19 00:26:13', '2015-10-19 00:26:13', 0, 11, '江西省抚州市广昌县', 2, '广昌县', ',1243,1330,', 1330); INSERT INTO `area` VALUES (1342, '2015-10-19 00:26:14', '2015-10-19 00:26:14', 0, 11, '江西省上饶市', 1, '上饶市', ',1243,', 1243); INSERT INTO `area` VALUES (1343, '2015-10-19 00:26:15', '2015-10-19 00:26:15', 0, 1, '江西省上饶市信州区', 2, '信州区', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1344, '2015-10-19 00:26:16', '2015-10-19 00:26:16', 0, 2, '江西省上饶市上饶县', 2, '上饶县', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1345, '2015-10-19 00:26:17', '2015-10-19 00:26:17', 0, 3, '江西省上饶市广丰县', 2, '广丰县', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1346, '2015-10-19 00:26:18', '2015-10-19 00:26:18', 0, 4, '江西省上饶市玉山县', 2, '玉山县', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1347, '2015-10-19 00:26:19', '2015-10-19 00:26:19', 0, 5, '江西省上饶市铅山县', 2, '铅山县', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1348, '2015-10-19 00:26:20', '2015-10-19 00:26:20', 0, 6, '江西省上饶市横峰县', 2, '横峰县', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1349, '2015-10-19 00:26:21', '2015-10-19 00:26:21', 0, 7, '江西省上饶市弋阳县', 2, '弋阳县', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1350, '2015-10-19 00:26:22', '2015-10-19 00:26:22', 0, 8, '江西省上饶市余干县', 2, '余干县', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1351, '2015-10-19 00:26:23', '2015-10-19 00:26:23', 0, 9, '江西省上饶市鄱阳县', 2, '鄱阳县', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1352, '2015-10-19 00:26:24', '2015-10-19 00:26:24', 0, 10, '江西省上饶市万年县', 2, '万年县', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1353, '2015-10-19 00:26:25', '2015-10-19 00:26:25', 0, 11, '江西省上饶市婺源县', 2, '婺源县', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1354, '2015-10-19 00:26:26', '2015-10-19 00:26:26', 0, 12, '江西省上饶市德兴市', 2, '德兴市', ',1243,1342,', 1342); INSERT INTO `area` VALUES (1355, '2015-10-19 00:26:27', '2015-10-19 00:26:27', 0, 15, '山东省', 0, '山东省', ',', NULL); INSERT INTO `area` VALUES (1356, '2015-10-19 00:26:28', '2015-10-19 00:26:28', 0, 1, '山东省济南市', 1, '济南市', ',1355,', 1355); INSERT INTO `area` VALUES (1357, '2015-10-19 00:26:29', '2015-10-19 00:26:29', 0, 1, '山东省济南市历下区', 2, '历下区', ',1355,1356,', 1356); INSERT INTO `area` VALUES (1358, '2015-10-19 00:26:30', '2015-10-19 00:26:30', 0, 2, '山东省济南市市中区', 2, '市中区', ',1355,1356,', 1356); INSERT INTO `area` VALUES (1359, '2015-10-19 00:26:31', '2015-10-19 00:26:31', 0, 3, '山东省济南市槐荫区', 2, '槐荫区', ',1355,1356,', 1356); INSERT INTO `area` VALUES (1360, '2015-10-19 00:26:32', '2015-10-19 00:26:32', 0, 4, '山东省济南市天桥区', 2, '天桥区', ',1355,1356,', 1356); INSERT INTO `area` VALUES (1361, '2015-10-19 00:26:33', '2015-10-19 00:26:33', 0, 5, '山东省济南市历城区', 2, '历城区', ',1355,1356,', 1356); INSERT INTO `area` VALUES (1362, '2015-10-19 00:26:34', '2015-10-19 00:26:34', 0, 6, '山东省济南市长清区', 2, '长清区', ',1355,1356,', 1356); INSERT INTO `area` VALUES (1363, '2015-10-19 00:26:35', '2015-10-19 00:26:35', 0, 7, '山东省济南市平阴县', 2, '平阴县', ',1355,1356,', 1356); INSERT INTO `area` VALUES (1364, '2015-10-19 00:26:36', '2015-10-19 00:26:36', 0, 8, '山东省济南市济阳县', 2, '济阳县', ',1355,1356,', 1356); INSERT INTO `area` VALUES (1365, '2015-10-19 00:26:37', '2015-10-19 00:26:37', 0, 9, '山东省济南市商河县', 2, '商河县', ',1355,1356,', 1356); INSERT INTO `area` VALUES (1366, '2015-10-19 00:26:38', '2015-10-19 00:26:38', 0, 10, '山东省济南市章丘市', 2, '章丘市', ',1355,1356,', 1356); INSERT INTO `area` VALUES (1367, '2015-10-19 00:26:39', '2015-10-19 00:26:39', 0, 2, '山东省青岛市', 1, '青岛市', ',1355,', 1355); INSERT INTO `area` VALUES (1368, '2015-10-19 00:26:40', '2015-10-19 00:26:40', 0, 1, '山东省青岛市市南区', 2, '市南区', ',1355,1367,', 1367); INSERT INTO `area` VALUES (1369, '2015-10-19 00:26:41', '2015-10-19 00:26:41', 0, 2, '山东省青岛市市北区', 2, '市北区', ',1355,1367,', 1367); INSERT INTO `area` VALUES (1370, '2015-10-19 00:26:42', '2015-10-19 00:26:42', 0, 3, '山东省青岛市黄岛区', 2, '黄岛区', ',1355,1367,', 1367); INSERT INTO `area` VALUES (1371, '2015-10-19 00:26:43', '2015-10-19 00:26:43', 0, 4, '山东省青岛市崂山区', 2, '崂山区', ',1355,1367,', 1367); INSERT INTO `area` VALUES (1372, '2015-10-19 00:26:44', '2015-10-19 00:26:44', 0, 5, '山东省青岛市李沧区', 2, '李沧区', ',1355,1367,', 1367); INSERT INTO `area` VALUES (1373, '2015-10-19 00:26:45', '2015-10-19 00:26:45', 0, 6, '山东省青岛市城阳区', 2, '城阳区', ',1355,1367,', 1367); INSERT INTO `area` VALUES (1374, '2015-10-19 00:26:46', '2015-10-19 00:26:46', 0, 7, '山东省青岛市胶州市', 2, '胶州市', ',1355,1367,', 1367); INSERT INTO `area` VALUES (1375, '2015-10-19 00:26:47', '2015-10-19 00:26:47', 0, 8, '山东省青岛市即墨市', 2, '即墨市', ',1355,1367,', 1367); INSERT INTO `area` VALUES (1376, '2015-10-19 00:26:48', '2015-10-19 00:26:48', 0, 9, '山东省青岛市平度市', 2, '平度市', ',1355,1367,', 1367); INSERT INTO `area` VALUES (1377, '2015-10-19 00:26:49', '2015-10-19 00:26:49', 0, 10, '山东省青岛市莱西市', 2, '莱西市', ',1355,1367,', 1367); INSERT INTO `area` VALUES (1378, '2015-10-19 00:26:50', '2015-10-19 00:26:50', 0, 3, '山东省淄博市', 1, '淄博市', ',1355,', 1355); INSERT INTO `area` VALUES (1379, '2015-10-19 00:26:51', '2015-10-19 00:26:51', 0, 1, '山东省淄博市淄川区', 2, '淄川区', ',1355,1378,', 1378); INSERT INTO `area` VALUES (1380, '2015-10-19 00:26:52', '2015-10-19 00:26:52', 0, 2, '山东省淄博市张店区', 2, '张店区', ',1355,1378,', 1378); INSERT INTO `area` VALUES (1381, '2015-10-19 00:26:53', '2015-10-19 00:26:53', 0, 3, '山东省淄博市博山区', 2, '博山区', ',1355,1378,', 1378); INSERT INTO `area` VALUES (1382, '2015-10-19 00:26:54', '2015-10-19 00:26:54', 0, 4, '山东省淄博市临淄区', 2, '临淄区', ',1355,1378,', 1378); INSERT INTO `area` VALUES (1383, '2015-10-19 00:26:55', '2015-10-19 00:26:55', 0, 5, '山东省淄博市周村区', 2, '周村区', ',1355,1378,', 1378); INSERT INTO `area` VALUES (1384, '2015-10-19 00:26:56', '2015-10-19 00:26:56', 0, 6, '山东省淄博市桓台县', 2, '桓台县', ',1355,1378,', 1378); INSERT INTO `area` VALUES (1385, '2015-10-19 00:26:57', '2015-10-19 00:26:57', 0, 7, '山东省淄博市高青县', 2, '高青县', ',1355,1378,', 1378); INSERT INTO `area` VALUES (1386, '2015-10-19 00:26:58', '2015-10-19 00:26:58', 0, 8, '山东省淄博市沂源县', 2, '沂源县', ',1355,1378,', 1378); INSERT INTO `area` VALUES (1387, '2015-10-19 00:26:59', '2015-10-19 00:26:59', 0, 4, '山东省枣庄市', 1, '枣庄市', ',1355,', 1355); INSERT INTO `area` VALUES (1388, '2015-10-19 00:27:00', '2015-10-19 00:27:00', 0, 1, '山东省枣庄市市中区', 2, '市中区', ',1355,1387,', 1387); INSERT INTO `area` VALUES (1389, '2015-10-19 00:27:01', '2015-10-19 00:27:01', 0, 2, '山东省枣庄市薛城区', 2, '薛城区', ',1355,1387,', 1387); INSERT INTO `area` VALUES (1390, '2015-10-19 00:27:02', '2015-10-19 00:27:02', 0, 3, '山东省枣庄市峄城区', 2, '峄城区', ',1355,1387,', 1387); INSERT INTO `area` VALUES (1391, '2015-10-19 00:27:03', '2015-10-19 00:27:03', 0, 4, '山东省枣庄市台儿庄区', 2, '台儿庄区', ',1355,1387,', 1387); INSERT INTO `area` VALUES (1392, '2015-10-19 00:27:04', '2015-10-19 00:27:04', 0, 5, '山东省枣庄市山亭区', 2, '山亭区', ',1355,1387,', 1387); INSERT INTO `area` VALUES (1393, '2015-10-19 00:27:05', '2015-10-19 00:27:05', 0, 6, '山东省枣庄市滕州市', 2, '滕州市', ',1355,1387,', 1387); INSERT INTO `area` VALUES (1394, '2015-10-19 00:27:06', '2015-10-19 00:27:06', 0, 5, '山东省东营市', 1, '东营市', ',1355,', 1355); INSERT INTO `area` VALUES (1395, '2015-10-19 00:27:07', '2015-10-19 00:27:07', 0, 1, '山东省东营市东营区', 2, '东营区', ',1355,1394,', 1394); INSERT INTO `area` VALUES (1396, '2015-10-19 00:27:08', '2015-10-19 00:27:08', 0, 2, '山东省东营市河口区', 2, '河口区', ',1355,1394,', 1394); INSERT INTO `area` VALUES (1397, '2015-10-19 00:27:09', '2015-10-19 00:27:09', 0, 3, '山东省东营市垦利县', 2, '垦利县', ',1355,1394,', 1394); INSERT INTO `area` VALUES (1398, '2015-10-19 00:27:10', '2015-10-19 00:27:10', 0, 4, '山东省东营市利津县', 2, '利津县', ',1355,1394,', 1394); INSERT INTO `area` VALUES (1399, '2015-10-19 00:27:11', '2015-10-19 00:27:11', 0, 5, '山东省东营市广饶县', 2, '广饶县', ',1355,1394,', 1394); INSERT INTO `area` VALUES (1400, '2015-10-19 00:27:12', '2015-10-19 00:27:12', 0, 6, '山东省烟台市', 1, '烟台市', ',1355,', 1355); INSERT INTO `area` VALUES (1401, '2015-10-19 00:27:13', '2015-10-19 00:27:13', 0, 1, '山东省烟台市芝罘区', 2, '芝罘区', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1402, '2015-10-19 00:27:14', '2015-10-19 00:27:14', 0, 2, '山东省烟台市福山区', 2, '福山区', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1403, '2015-10-19 00:27:15', '2015-10-19 00:27:15', 0, 3, '山东省烟台市牟平区', 2, '牟平区', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1404, '2015-10-19 00:27:16', '2015-10-19 00:27:16', 0, 4, '山东省烟台市莱山区', 2, '莱山区', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1405, '2015-10-19 00:27:17', '2015-10-19 00:27:17', 0, 5, '山东省烟台市长岛县', 2, '长岛县', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1406, '2015-10-19 00:27:18', '2015-10-19 00:27:18', 0, 6, '山东省烟台市龙口市', 2, '龙口市', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1407, '2015-10-19 00:27:19', '2015-10-19 00:27:19', 0, 7, '山东省烟台市莱阳市', 2, '莱阳市', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1408, '2015-10-19 00:27:20', '2015-10-19 00:27:20', 0, 8, '山东省烟台市莱州市', 2, '莱州市', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1409, '2015-10-19 00:27:21', '2015-10-19 00:27:21', 0, 9, '山东省烟台市蓬莱市', 2, '蓬莱市', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1410, '2015-10-19 00:27:22', '2015-10-19 00:27:22', 0, 10, '山东省烟台市招远市', 2, '招远市', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1411, '2015-10-19 00:27:23', '2015-10-19 00:27:23', 0, 11, '山东省烟台市栖霞市', 2, '栖霞市', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1412, '2015-10-19 00:27:24', '2015-10-19 00:27:24', 0, 12, '山东省烟台市海阳市', 2, '海阳市', ',1355,1400,', 1400); INSERT INTO `area` VALUES (1413, '2015-10-19 00:27:25', '2015-10-19 00:27:25', 0, 7, '山东省潍坊市', 1, '潍坊市', ',1355,', 1355); INSERT INTO `area` VALUES (1414, '2015-10-19 00:27:26', '2015-10-19 00:27:26', 0, 1, '山东省潍坊市潍城区', 2, '潍城区', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1415, '2015-10-19 00:27:27', '2015-10-19 00:27:27', 0, 2, '山东省潍坊市寒亭区', 2, '寒亭区', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1416, '2015-10-19 00:27:28', '2015-10-19 00:27:28', 0, 3, '山东省潍坊市坊子区', 2, '坊子区', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1417, '2015-10-19 00:27:29', '2015-10-19 00:27:29', 0, 4, '山东省潍坊市奎文区', 2, '奎文区', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1418, '2015-10-19 00:27:30', '2015-10-19 00:27:30', 0, 5, '山东省潍坊市临朐县', 2, '临朐县', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1419, '2015-10-19 00:27:31', '2015-10-19 00:27:31', 0, 6, '山东省潍坊市昌乐县', 2, '昌乐县', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1420, '2015-10-19 00:27:32', '2015-10-19 00:27:32', 0, 7, '山东省潍坊市青州市', 2, '青州市', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1421, '2015-10-19 00:27:33', '2015-10-19 00:27:33', 0, 8, '山东省潍坊市诸城市', 2, '诸城市', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1422, '2015-10-19 00:27:34', '2015-10-19 00:27:34', 0, 9, '山东省潍坊市寿光市', 2, '寿光市', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1423, '2015-10-19 00:27:35', '2015-10-19 00:27:35', 0, 10, '山东省潍坊市安丘市', 2, '安丘市', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1424, '2015-10-19 00:27:36', '2015-10-19 00:27:36', 0, 11, '山东省潍坊市高密市', 2, '高密市', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1425, '2015-10-19 00:27:37', '2015-10-19 00:27:37', 0, 12, '山东省潍坊市昌邑市', 2, '昌邑市', ',1355,1413,', 1413); INSERT INTO `area` VALUES (1426, '2015-10-19 00:27:38', '2015-10-19 00:27:38', 0, 8, '山东省济宁市', 1, '济宁市', ',1355,', 1355); INSERT INTO `area` VALUES (1427, '2015-10-19 00:27:39', '2015-10-19 00:27:39', 0, 1, '山东省济宁市市中区', 2, '市中区', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1428, '2015-10-19 00:27:40', '2015-10-19 00:27:40', 0, 2, '山东省济宁市任城区', 2, '任城区', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1429, '2015-10-19 00:27:41', '2015-10-19 00:27:41', 0, 3, '山东省济宁市微山县', 2, '微山县', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1430, '2015-10-19 00:27:42', '2015-10-19 00:27:42', 0, 4, '山东省济宁市鱼台县', 2, '鱼台县', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1431, '2015-10-19 00:27:43', '2015-10-19 00:27:43', 0, 5, '山东省济宁市金乡县', 2, '金乡县', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1432, '2015-10-19 00:27:44', '2015-10-19 00:27:44', 0, 6, '山东省济宁市嘉祥县', 2, '嘉祥县', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1433, '2015-10-19 00:27:45', '2015-10-19 00:27:45', 0, 7, '山东省济宁市汶上县', 2, '汶上县', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1434, '2015-10-19 00:27:46', '2015-10-19 00:27:46', 0, 8, '山东省济宁市泗水县', 2, '泗水县', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1435, '2015-10-19 00:27:47', '2015-10-19 00:27:47', 0, 9, '山东省济宁市梁山县', 2, '梁山县', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1436, '2015-10-19 00:27:48', '2015-10-19 00:27:48', 0, 10, '山东省济宁市曲阜市', 2, '曲阜市', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1437, '2015-10-19 00:27:49', '2015-10-19 00:27:49', 0, 11, '山东省济宁市兖州市', 2, '兖州市', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1438, '2015-10-19 00:27:50', '2015-10-19 00:27:50', 0, 12, '山东省济宁市邹城市', 2, '邹城市', ',1355,1426,', 1426); INSERT INTO `area` VALUES (1439, '2015-10-19 00:27:51', '2015-10-19 00:27:51', 0, 9, '山东省泰安市', 1, '泰安市', ',1355,', 1355); INSERT INTO `area` VALUES (1440, '2015-10-19 00:27:52', '2015-10-19 00:27:52', 0, 1, '山东省泰安市泰山区', 2, '泰山区', ',1355,1439,', 1439); INSERT INTO `area` VALUES (1441, '2015-10-19 00:27:53', '2015-10-19 00:27:53', 0, 2, '山东省泰安市岱岳区', 2, '岱岳区', ',1355,1439,', 1439); INSERT INTO `area` VALUES (1442, '2015-10-19 00:27:54', '2015-10-19 00:27:54', 0, 3, '山东省泰安市宁阳县', 2, '宁阳县', ',1355,1439,', 1439); INSERT INTO `area` VALUES (1443, '2015-10-19 00:27:55', '2015-10-19 00:27:55', 0, 4, '山东省泰安市东平县', 2, '东平县', ',1355,1439,', 1439); INSERT INTO `area` VALUES (1444, '2015-10-19 00:27:56', '2015-10-19 00:27:56', 0, 5, '山东省泰安市新泰市', 2, '新泰市', ',1355,1439,', 1439); INSERT INTO `area` VALUES (1445, '2015-10-19 00:27:57', '2015-10-19 00:27:57', 0, 6, '山东省泰安市肥城市', 2, '肥城市', ',1355,1439,', 1439); INSERT INTO `area` VALUES (1446, '2015-10-19 00:27:58', '2015-10-19 00:27:58', 0, 10, '山东省威海市', 1, '威海市', ',1355,', 1355); INSERT INTO `area` VALUES (1447, '2015-10-19 00:27:59', '2015-10-19 00:27:59', 0, 1, '山东省威海市环翠区', 2, '环翠区', ',1355,1446,', 1446); INSERT INTO `area` VALUES (1448, '2015-10-19 00:28:00', '2015-10-19 00:28:00', 0, 2, '山东省威海市文登市', 2, '文登市', ',1355,1446,', 1446); INSERT INTO `area` VALUES (1449, '2015-10-19 00:28:01', '2015-10-19 00:28:01', 0, 3, '山东省威海市荣成市', 2, '荣成市', ',1355,1446,', 1446); INSERT INTO `area` VALUES (1450, '2015-10-19 00:28:02', '2015-10-19 00:28:02', 0, 4, '山东省威海市乳山市', 2, '乳山市', ',1355,1446,', 1446); INSERT INTO `area` VALUES (1451, '2015-10-19 00:28:03', '2015-10-19 00:28:03', 0, 11, '山东省日照市', 1, '日照市', ',1355,', 1355); INSERT INTO `area` VALUES (1452, '2015-10-19 00:28:04', '2015-10-19 00:28:04', 0, 1, '山东省日照市东港区', 2, '东港区', ',1355,1451,', 1451); INSERT INTO `area` VALUES (1453, '2015-10-19 00:28:05', '2015-10-19 00:28:05', 0, 2, '山东省日照市岚山区', 2, '岚山区', ',1355,1451,', 1451); INSERT INTO `area` VALUES (1454, '2015-10-19 00:28:06', '2015-10-19 00:28:06', 0, 3, '山东省日照市五莲县', 2, '五莲县', ',1355,1451,', 1451); INSERT INTO `area` VALUES (1455, '2015-10-19 00:28:07', '2015-10-19 00:28:07', 0, 4, '山东省日照市莒县', 2, '莒县', ',1355,1451,', 1451); INSERT INTO `area` VALUES (1456, '2015-10-19 00:28:08', '2015-10-19 00:28:08', 0, 12, '山东省莱芜市', 1, '莱芜市', ',1355,', 1355); INSERT INTO `area` VALUES (1457, '2015-10-19 00:28:09', '2015-10-19 00:28:09', 0, 1, '山东省莱芜市莱城区', 2, '莱城区', ',1355,1456,', 1456); INSERT INTO `area` VALUES (1458, '2015-10-19 00:28:10', '2015-10-19 00:28:10', 0, 2, '山东省莱芜市钢城区', 2, '钢城区', ',1355,1456,', 1456); INSERT INTO `area` VALUES (1459, '2015-10-19 00:28:11', '2015-10-19 00:28:11', 0, 13, '山东省临沂市', 1, '临沂市', ',1355,', 1355); INSERT INTO `area` VALUES (1460, '2015-10-19 00:28:12', '2015-10-19 00:28:12', 0, 1, '山东省临沂市兰山区', 2, '兰山区', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1461, '2015-10-19 00:28:13', '2015-10-19 00:28:13', 0, 2, '山东省临沂市罗庄区', 2, '罗庄区', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1462, '2015-10-19 00:28:14', '2015-10-19 00:28:14', 0, 3, '山东省临沂市河东区', 2, '河东区', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1463, '2015-10-19 00:28:15', '2015-10-19 00:28:15', 0, 4, '山东省临沂市沂南县', 2, '沂南县', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1464, '2015-10-19 00:28:16', '2015-10-19 00:28:16', 0, 5, '山东省临沂市郯城县', 2, '郯城县', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1465, '2015-10-19 00:28:17', '2015-10-19 00:28:17', 0, 6, '山东省临沂市沂水县', 2, '沂水县', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1466, '2015-10-19 00:28:18', '2015-10-19 00:28:18', 0, 7, '山东省临沂市苍山县', 2, '苍山县', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1467, '2015-10-19 00:28:19', '2015-10-19 00:28:19', 0, 8, '山东省临沂市费县', 2, '费县', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1468, '2015-10-19 00:28:20', '2015-10-19 00:28:20', 0, 9, '山东省临沂市平邑县', 2, '平邑县', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1469, '2015-10-19 00:28:21', '2015-10-19 00:28:21', 0, 10, '山东省临沂市莒南县', 2, '莒南县', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1470, '2015-10-19 00:28:22', '2015-10-19 00:28:22', 0, 11, '山东省临沂市蒙阴县', 2, '蒙阴县', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1471, '2015-10-19 00:28:23', '2015-10-19 00:28:23', 0, 12, '山东省临沂市临沭县', 2, '临沭县', ',1355,1459,', 1459); INSERT INTO `area` VALUES (1472, '2015-10-19 00:28:24', '2015-10-19 00:28:24', 0, 14, '山东省德州市', 1, '德州市', ',1355,', 1355); INSERT INTO `area` VALUES (1473, '2015-10-19 00:28:25', '2015-10-19 00:28:25', 0, 1, '山东省德州市德城区', 2, '德城区', ',1355,1472,', 1472); INSERT INTO `area` VALUES (1474, '2015-10-19 00:28:26', '2015-10-19 00:28:26', 0, 2, '山东省德州市陵县', 2, '陵县', ',1355,1472,', 1472); INSERT INTO `area` VALUES (1475, '2015-10-19 00:28:27', '2015-10-19 00:28:27', 0, 3, '山东省德州市宁津县', 2, '宁津县', ',1355,1472,', 1472); INSERT INTO `area` VALUES (1476, '2015-10-19 00:28:28', '2015-10-19 00:28:28', 0, 4, '山东省德州市庆云县', 2, '庆云县', ',1355,1472,', 1472); INSERT INTO `area` VALUES (1477, '2015-10-19 00:28:29', '2015-10-19 00:28:29', 0, 5, '山东省德州市临邑县', 2, '临邑县', ',1355,1472,', 1472); INSERT INTO `area` VALUES (1478, '2015-10-19 00:28:30', '2015-10-19 00:28:30', 0, 6, '山东省德州市齐河县', 2, '齐河县', ',1355,1472,', 1472); INSERT INTO `area` VALUES (1479, '2015-10-19 00:28:31', '2015-10-19 00:28:31', 0, 7, '山东省德州市平原县', 2, '平原县', ',1355,1472,', 1472); INSERT INTO `area` VALUES (1480, '2015-10-19 00:28:32', '2015-10-19 00:28:32', 0, 8, '山东省德州市夏津县', 2, '夏津县', ',1355,1472,', 1472); INSERT INTO `area` VALUES (1481, '2015-10-19 00:28:33', '2015-10-19 00:28:33', 0, 9, '山东省德州市武城县', 2, '武城县', ',1355,1472,', 1472); INSERT INTO `area` VALUES (1482, '2015-10-19 00:28:34', '2015-10-19 00:28:34', 0, 10, '山东省德州市乐陵市', 2, '乐陵市', ',1355,1472,', 1472); INSERT INTO `area` VALUES (1483, '2015-10-19 00:28:35', '2015-10-19 00:28:35', 0, 11, '山东省德州市禹城市', 2, '禹城市', ',1355,1472,', 1472); INSERT INTO `area` VALUES (1484, '2015-10-19 00:28:36', '2015-10-19 00:28:36', 0, 15, '山东省聊城市', 1, '聊城市', ',1355,', 1355); INSERT INTO `area` VALUES (1485, '2015-10-19 00:28:37', '2015-10-19 00:28:37', 0, 1, '山东省聊城市东昌府区', 2, '东昌府区', ',1355,1484,', 1484); INSERT INTO `area` VALUES (1486, '2015-10-19 00:28:38', '2015-10-19 00:28:38', 0, 2, '山东省聊城市阳谷县', 2, '阳谷县', ',1355,1484,', 1484); INSERT INTO `area` VALUES (1487, '2015-10-19 00:28:39', '2015-10-19 00:28:39', 0, 3, '山东省聊城市莘县', 2, '莘县', ',1355,1484,', 1484); INSERT INTO `area` VALUES (1488, '2015-10-19 00:28:40', '2015-10-19 00:28:40', 0, 4, '山东省聊城市茌平县', 2, '茌平县', ',1355,1484,', 1484); INSERT INTO `area` VALUES (1489, '2015-10-19 00:28:41', '2015-10-19 00:28:41', 0, 5, '山东省聊城市东阿县', 2, '东阿县', ',1355,1484,', 1484); INSERT INTO `area` VALUES (1490, '2015-10-19 00:28:42', '2015-10-19 00:28:42', 0, 6, '山东省聊城市冠县', 2, '冠县', ',1355,1484,', 1484); INSERT INTO `area` VALUES (1491, '2015-10-19 00:28:43', '2015-10-19 00:28:43', 0, 7, '山东省聊城市高唐县', 2, '高唐县', ',1355,1484,', 1484); INSERT INTO `area` VALUES (1492, '2015-10-19 00:28:44', '2015-10-19 00:28:44', 0, 8, '山东省聊城市临清市', 2, '临清市', ',1355,1484,', 1484); INSERT INTO `area` VALUES (1493, '2015-10-19 00:28:45', '2015-10-19 00:28:45', 0, 16, '山东省滨州市', 1, '滨州市', ',1355,', 1355); INSERT INTO `area` VALUES (1494, '2015-10-19 00:28:46', '2015-10-19 00:28:46', 0, 1, '山东省滨州市滨城区', 2, '滨城区', ',1355,1493,', 1493); INSERT INTO `area` VALUES (1495, '2015-10-19 00:28:47', '2015-10-19 00:28:47', 0, 2, '山东省滨州市惠民县', 2, '惠民县', ',1355,1493,', 1493); INSERT INTO `area` VALUES (1496, '2015-10-19 00:28:48', '2015-10-19 00:28:48', 0, 3, '山东省滨州市阳信县', 2, '阳信县', ',1355,1493,', 1493); INSERT INTO `area` VALUES (1497, '2015-10-19 00:28:49', '2015-10-19 00:28:49', 0, 4, '山东省滨州市无棣县', 2, '无棣县', ',1355,1493,', 1493); INSERT INTO `area` VALUES (1498, '2015-10-19 00:28:50', '2015-10-19 00:28:50', 0, 5, '山东省滨州市沾化县', 2, '沾化县', ',1355,1493,', 1493); INSERT INTO `area` VALUES (1499, '2015-10-19 00:28:51', '2015-10-19 00:28:51', 0, 6, '山东省滨州市博兴县', 2, '博兴县', ',1355,1493,', 1493); INSERT INTO `area` VALUES (1500, '2015-10-19 00:28:52', '2015-10-19 00:28:52', 0, 7, '山东省滨州市邹平县', 2, '邹平县', ',1355,1493,', 1493); INSERT INTO `area` VALUES (1501, '2015-10-19 00:28:53', '2015-10-19 00:28:53', 0, 17, '山东省菏泽市', 1, '菏泽市', ',1355,', 1355); INSERT INTO `area` VALUES (1502, '2015-10-19 00:28:54', '2015-10-19 00:28:54', 0, 1, '山东省菏泽市牡丹区', 2, '牡丹区', ',1355,1501,', 1501); INSERT INTO `area` VALUES (1503, '2015-10-19 00:28:55', '2015-10-19 00:28:55', 0, 2, '山东省菏泽市曹县', 2, '曹县', ',1355,1501,', 1501); INSERT INTO `area` VALUES (1504, '2015-10-19 00:28:56', '2015-10-19 00:28:56', 0, 3, '山东省菏泽市单县', 2, '单县', ',1355,1501,', 1501); INSERT INTO `area` VALUES (1505, '2015-10-19 00:28:57', '2015-10-19 00:28:57', 0, 4, '山东省菏泽市成武县', 2, '成武县', ',1355,1501,', 1501); INSERT INTO `area` VALUES (1506, '2015-10-19 00:28:58', '2015-10-19 00:28:58', 0, 5, '山东省菏泽市巨野县', 2, '巨野县', ',1355,1501,', 1501); INSERT INTO `area` VALUES (1507, '2015-10-19 00:28:59', '2015-10-19 00:28:59', 0, 6, '山东省菏泽市郓城县', 2, '郓城县', ',1355,1501,', 1501); INSERT INTO `area` VALUES (1508, '2015-10-19 00:29:00', '2015-10-19 00:29:00', 0, 7, '山东省菏泽市鄄城县', 2, '鄄城县', ',1355,1501,', 1501); INSERT INTO `area` VALUES (1509, '2015-10-19 00:29:01', '2015-10-19 00:29:01', 0, 8, '山东省菏泽市定陶县', 2, '定陶县', ',1355,1501,', 1501); INSERT INTO `area` VALUES (1510, '2015-10-19 00:29:02', '2015-10-19 00:29:02', 0, 9, '山东省菏泽市东明县', 2, '东明县', ',1355,1501,', 1501); INSERT INTO `area` VALUES (1511, '2015-10-19 00:29:03', '2015-10-19 00:29:03', 0, 16, '河南省', 0, '河南省', ',', NULL); INSERT INTO `area` VALUES (1512, '2015-10-19 00:29:04', '2015-10-19 00:29:04', 0, 1, '河南省郑州市', 1, '郑州市', ',1511,', 1511); INSERT INTO `area` VALUES (1513, '2015-10-19 00:29:05', '2015-10-19 00:29:05', 0, 1, '河南省郑州市中原区', 2, '中原区', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1514, '2015-10-19 00:29:06', '2015-10-19 00:29:06', 0, 2, '河南省郑州市二七区', 2, '二七区', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1515, '2015-10-19 00:29:07', '2015-10-19 00:29:07', 0, 3, '河南省郑州市管城回族区', 2, '管城回族区', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1516, '2015-10-19 00:29:08', '2015-10-19 00:29:08', 0, 4, '河南省郑州市金水区', 2, '金水区', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1517, '2015-10-19 00:29:09', '2015-10-19 00:29:09', 0, 5, '河南省郑州市上街区', 2, '上街区', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1518, '2015-10-19 00:29:10', '2015-10-19 00:29:10', 0, 6, '河南省郑州市惠济区', 2, '惠济区', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1519, '2015-10-19 00:29:11', '2015-10-19 00:29:11', 0, 7, '河南省郑州市中牟县', 2, '中牟县', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1520, '2015-10-19 00:29:12', '2015-10-19 00:29:12', 0, 8, '河南省郑州市巩义市', 2, '巩义市', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1521, '2015-10-19 00:29:13', '2015-10-19 00:29:13', 0, 9, '河南省郑州市荥阳市', 2, '荥阳市', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1522, '2015-10-19 00:29:14', '2015-10-19 00:29:14', 0, 10, '河南省郑州市新密市', 2, '新密市', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1523, '2015-10-19 00:29:15', '2015-10-19 00:29:15', 0, 11, '河南省郑州市新郑市', 2, '新郑市', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1524, '2015-10-19 00:29:16', '2015-10-19 00:29:16', 0, 12, '河南省郑州市登封市', 2, '登封市', ',1511,1512,', 1512); INSERT INTO `area` VALUES (1525, '2015-10-19 00:29:17', '2015-10-19 00:29:17', 0, 2, '河南省开封市', 1, '开封市', ',1511,', 1511); INSERT INTO `area` VALUES (1526, '2015-10-19 00:29:18', '2015-10-19 00:29:18', 0, 1, '河南省开封市龙亭区', 2, '龙亭区', ',1511,1525,', 1525); INSERT INTO `area` VALUES (1527, '2015-10-19 00:29:19', '2015-10-19 00:29:19', 0, 2, '河南省开封市顺河回族区', 2, '顺河回族区', ',1511,1525,', 1525); INSERT INTO `area` VALUES (1528, '2015-10-19 00:29:20', '2015-10-19 00:29:20', 0, 3, '河南省开封市鼓楼区', 2, '鼓楼区', ',1511,1525,', 1525); INSERT INTO `area` VALUES (1529, '2015-10-19 00:29:21', '2015-10-19 00:29:21', 0, 4, '河南省开封市禹王台区', 2, '禹王台区', ',1511,1525,', 1525); INSERT INTO `area` VALUES (1530, '2015-10-19 00:29:22', '2015-10-19 00:29:22', 0, 5, '河南省开封市金明区', 2, '金明区', ',1511,1525,', 1525); INSERT INTO `area` VALUES (1531, '2015-10-19 00:29:23', '2015-10-19 00:29:23', 0, 6, '河南省开封市杞县', 2, '杞县', ',1511,1525,', 1525); INSERT INTO `area` VALUES (1532, '2015-10-19 00:29:24', '2015-10-19 00:29:24', 0, 7, '河南省开封市通许县', 2, '通许县', ',1511,1525,', 1525); INSERT INTO `area` VALUES (1533, '2015-10-19 00:29:25', '2015-10-19 00:29:25', 0, 8, '河南省开封市尉氏县', 2, '尉氏县', ',1511,1525,', 1525); INSERT INTO `area` VALUES (1534, '2015-10-19 00:29:26', '2015-10-19 00:29:26', 0, 9, '河南省开封市开封县', 2, '开封县', ',1511,1525,', 1525); INSERT INTO `area` VALUES (1535, '2015-10-19 00:29:27', '2015-10-19 00:29:27', 0, 10, '河南省开封市兰考县', 2, '兰考县', ',1511,1525,', 1525); INSERT INTO `area` VALUES (1536, '2015-10-19 00:29:28', '2015-10-19 00:29:28', 0, 3, '河南省洛阳市', 1, '洛阳市', ',1511,', 1511); INSERT INTO `area` VALUES (1537, '2015-10-19 00:29:29', '2015-10-19 00:29:29', 0, 1, '河南省洛阳市老城区', 2, '老城区', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1538, '2015-10-19 00:29:30', '2015-10-19 00:29:30', 0, 2, '河南省洛阳市西工区', 2, '西工区', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1539, '2015-10-19 00:29:31', '2015-10-19 00:29:31', 0, 3, '河南省洛阳市瀍河回族区', 2, '瀍河回族区', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1540, '2015-10-19 00:29:32', '2015-10-19 00:29:32', 0, 4, '河南省洛阳市涧西区', 2, '涧西区', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1541, '2015-10-19 00:29:33', '2015-10-19 00:29:33', 0, 5, '河南省洛阳市吉利区', 2, '吉利区', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1542, '2015-10-19 00:29:34', '2015-10-19 00:29:34', 0, 6, '河南省洛阳市洛龙区', 2, '洛龙区', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1543, '2015-10-19 00:29:35', '2015-10-19 00:29:35', 0, 7, '河南省洛阳市孟津县', 2, '孟津县', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1544, '2015-10-19 00:29:36', '2015-10-19 00:29:36', 0, 8, '河南省洛阳市新安县', 2, '新安县', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1545, '2015-10-19 00:29:37', '2015-10-19 00:29:37', 0, 9, '河南省洛阳市栾川县', 2, '栾川县', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1546, '2015-10-19 00:29:38', '2015-10-19 00:29:38', 0, 10, '河南省洛阳市嵩县', 2, '嵩县', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1547, '2015-10-19 00:29:39', '2015-10-19 00:29:39', 0, 11, '河南省洛阳市汝阳县', 2, '汝阳县', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1548, '2015-10-19 00:29:40', '2015-10-19 00:29:40', 0, 12, '河南省洛阳市宜阳县', 2, '宜阳县', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1549, '2015-10-19 00:29:41', '2015-10-19 00:29:41', 0, 13, '河南省洛阳市洛宁县', 2, '洛宁县', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1550, '2015-10-19 00:29:42', '2015-10-19 00:29:42', 0, 14, '河南省洛阳市伊川县', 2, '伊川县', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1551, '2015-10-19 00:29:43', '2015-10-19 00:29:43', 0, 15, '河南省洛阳市偃师市', 2, '偃师市', ',1511,1536,', 1536); INSERT INTO `area` VALUES (1552, '2015-10-19 00:29:44', '2015-10-19 00:29:44', 0, 4, '河南省平顶山市', 1, '平顶山市', ',1511,', 1511); INSERT INTO `area` VALUES (1553, '2015-10-19 00:29:45', '2015-10-19 00:29:45', 0, 1, '河南省平顶山市新华区', 2, '新华区', ',1511,1552,', 1552); INSERT INTO `area` VALUES (1554, '2015-10-19 00:29:46', '2015-10-19 00:29:46', 0, 2, '河南省平顶山市卫东区', 2, '卫东区', ',1511,1552,', 1552); INSERT INTO `area` VALUES (1555, '2015-10-19 00:29:47', '2015-10-19 00:29:47', 0, 3, '河南省平顶山市石龙区', 2, '石龙区', ',1511,1552,', 1552); INSERT INTO `area` VALUES (1556, '2015-10-19 00:29:48', '2015-10-19 00:29:48', 0, 4, '河南省平顶山市湛河区', 2, '湛河区', ',1511,1552,', 1552); INSERT INTO `area` VALUES (1557, '2015-10-19 00:29:49', '2015-10-19 00:29:49', 0, 5, '河南省平顶山市宝丰县', 2, '宝丰县', ',1511,1552,', 1552); INSERT INTO `area` VALUES (1558, '2015-10-19 00:29:50', '2015-10-19 00:29:50', 0, 6, '河南省平顶山市叶县', 2, '叶县', ',1511,1552,', 1552); INSERT INTO `area` VALUES (1559, '2015-10-19 00:29:51', '2015-10-19 00:29:51', 0, 7, '河南省平顶山市鲁山县', 2, '鲁山县', ',1511,1552,', 1552); INSERT INTO `area` VALUES (1560, '2015-10-19 00:29:52', '2015-10-19 00:29:52', 0, 8, '河南省平顶山市郏县', 2, '郏县', ',1511,1552,', 1552); INSERT INTO `area` VALUES (1561, '2015-10-19 00:29:53', '2015-10-19 00:29:53', 0, 9, '河南省平顶山市舞钢市', 2, '舞钢市', ',1511,1552,', 1552); INSERT INTO `area` VALUES (1562, '2015-10-19 00:29:54', '2015-10-19 00:29:54', 0, 10, '河南省平顶山市汝州市', 2, '汝州市', ',1511,1552,', 1552); INSERT INTO `area` VALUES (1563, '2015-10-19 00:29:55', '2015-10-19 00:29:55', 0, 5, '河南省安阳市', 1, '安阳市', ',1511,', 1511); INSERT INTO `area` VALUES (1564, '2015-10-19 00:29:56', '2015-10-19 00:29:56', 0, 1, '河南省安阳市文峰区', 2, '文峰区', ',1511,1563,', 1563); INSERT INTO `area` VALUES (1565, '2015-10-19 00:29:57', '2015-10-19 00:29:57', 0, 2, '河南省安阳市北关区', 2, '北关区', ',1511,1563,', 1563); INSERT INTO `area` VALUES (1566, '2015-10-19 00:29:58', '2015-10-19 00:29:58', 0, 3, '河南省安阳市殷都区', 2, '殷都区', ',1511,1563,', 1563); INSERT INTO `area` VALUES (1567, '2015-10-19 00:29:59', '2015-10-19 00:29:59', 0, 4, '河南省安阳市龙安区', 2, '龙安区', ',1511,1563,', 1563); INSERT INTO `area` VALUES (1568, '2015-10-19 00:30:00', '2015-10-19 00:30:00', 0, 5, '河南省安阳市安阳县', 2, '安阳县', ',1511,1563,', 1563); INSERT INTO `area` VALUES (1569, '2015-10-19 00:30:01', '2015-10-19 00:30:01', 0, 6, '河南省安阳市汤阴县', 2, '汤阴县', ',1511,1563,', 1563); INSERT INTO `area` VALUES (1570, '2015-10-19 00:30:02', '2015-10-19 00:30:02', 0, 7, '河南省安阳市滑县', 2, '滑县', ',1511,1563,', 1563); INSERT INTO `area` VALUES (1571, '2015-10-19 00:30:03', '2015-10-19 00:30:03', 0, 8, '河南省安阳市内黄县', 2, '内黄县', ',1511,1563,', 1563); INSERT INTO `area` VALUES (1572, '2015-10-19 00:30:04', '2015-10-19 00:30:04', 0, 9, '河南省安阳市林州市', 2, '林州市', ',1511,1563,', 1563); INSERT INTO `area` VALUES (1573, '2015-10-19 00:30:05', '2015-10-19 00:30:05', 0, 6, '河南省鹤壁市', 1, '鹤壁市', ',1511,', 1511); INSERT INTO `area` VALUES (1574, '2015-10-19 00:30:06', '2015-10-19 00:30:06', 0, 1, '河南省鹤壁市鹤山区', 2, '鹤山区', ',1511,1573,', 1573); INSERT INTO `area` VALUES (1575, '2015-10-19 00:30:07', '2015-10-19 00:30:07', 0, 2, '河南省鹤壁市山城区', 2, '山城区', ',1511,1573,', 1573); INSERT INTO `area` VALUES (1576, '2015-10-19 00:30:08', '2015-10-19 00:30:08', 0, 3, '河南省鹤壁市淇滨区', 2, '淇滨区', ',1511,1573,', 1573); INSERT INTO `area` VALUES (1577, '2015-10-19 00:30:09', '2015-10-19 00:30:09', 0, 4, '河南省鹤壁市浚县', 2, '浚县', ',1511,1573,', 1573); INSERT INTO `area` VALUES (1578, '2015-10-19 00:30:10', '2015-10-19 00:30:10', 0, 5, '河南省鹤壁市淇县', 2, '淇县', ',1511,1573,', 1573); INSERT INTO `area` VALUES (1579, '2015-10-19 00:30:11', '2015-10-19 00:30:11', 0, 7, '河南省新乡市', 1, '新乡市', ',1511,', 1511); INSERT INTO `area` VALUES (1580, '2015-10-19 00:30:12', '2015-10-19 00:30:12', 0, 1, '河南省新乡市红旗区', 2, '红旗区', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1581, '2015-10-19 00:30:13', '2015-10-19 00:30:13', 0, 2, '河南省新乡市卫滨区', 2, '卫滨区', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1582, '2015-10-19 00:30:14', '2015-10-19 00:30:14', 0, 3, '河南省新乡市凤泉区', 2, '凤泉区', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1583, '2015-10-19 00:30:15', '2015-10-19 00:30:15', 0, 4, '河南省新乡市牧野区', 2, '牧野区', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1584, '2015-10-19 00:30:16', '2015-10-19 00:30:16', 0, 5, '河南省新乡市新乡县', 2, '新乡县', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1585, '2015-10-19 00:30:17', '2015-10-19 00:30:17', 0, 6, '河南省新乡市获嘉县', 2, '获嘉县', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1586, '2015-10-19 00:30:18', '2015-10-19 00:30:18', 0, 7, '河南省新乡市原阳县', 2, '原阳县', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1587, '2015-10-19 00:30:19', '2015-10-19 00:30:19', 0, 8, '河南省新乡市延津县', 2, '延津县', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1588, '2015-10-19 00:30:20', '2015-10-19 00:30:20', 0, 9, '河南省新乡市封丘县', 2, '封丘县', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1589, '2015-10-19 00:30:21', '2015-10-19 00:30:21', 0, 10, '河南省新乡市长垣县', 2, '长垣县', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1590, '2015-10-19 00:30:22', '2015-10-19 00:30:22', 0, 11, '河南省新乡市卫辉市', 2, '卫辉市', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1591, '2015-10-19 00:30:23', '2015-10-19 00:30:23', 0, 12, '河南省新乡市辉县市', 2, '辉县市', ',1511,1579,', 1579); INSERT INTO `area` VALUES (1592, '2015-10-19 00:30:24', '2015-10-19 00:30:24', 0, 8, '河南省焦作市', 1, '焦作市', ',1511,', 1511); INSERT INTO `area` VALUES (1593, '2015-10-19 00:30:25', '2015-10-19 00:30:25', 0, 1, '河南省焦作市解放区', 2, '解放区', ',1511,1592,', 1592); INSERT INTO `area` VALUES (1594, '2015-10-19 00:30:26', '2015-10-19 00:30:26', 0, 2, '河南省焦作市中站区', 2, '中站区', ',1511,1592,', 1592); INSERT INTO `area` VALUES (1595, '2015-10-19 00:30:27', '2015-10-19 00:30:27', 0, 3, '河南省焦作市马村区', 2, '马村区', ',1511,1592,', 1592); INSERT INTO `area` VALUES (1596, '2015-10-19 00:30:28', '2015-10-19 00:30:28', 0, 4, '河南省焦作市山阳区', 2, '山阳区', ',1511,1592,', 1592); INSERT INTO `area` VALUES (1597, '2015-10-19 00:30:29', '2015-10-19 00:30:29', 0, 5, '河南省焦作市修武县', 2, '修武县', ',1511,1592,', 1592); INSERT INTO `area` VALUES (1598, '2015-10-19 00:30:30', '2015-10-19 00:30:30', 0, 6, '河南省焦作市博爱县', 2, '博爱县', ',1511,1592,', 1592); INSERT INTO `area` VALUES (1599, '2015-10-19 00:30:31', '2015-10-19 00:30:31', 0, 7, '河南省焦作市武陟县', 2, '武陟县', ',1511,1592,', 1592); INSERT INTO `area` VALUES (1600, '2015-10-19 00:30:32', '2015-10-19 00:30:32', 0, 8, '河南省焦作市温县', 2, '温县', ',1511,1592,', 1592); INSERT INTO `area` VALUES (1601, '2015-10-19 00:30:33', '2015-10-19 00:30:33', 0, 9, '河南省焦作市沁阳市', 2, '沁阳市', ',1511,1592,', 1592); INSERT INTO `area` VALUES (1602, '2015-10-19 00:30:34', '2015-10-19 00:30:34', 0, 10, '河南省焦作市孟州市', 2, '孟州市', ',1511,1592,', 1592); INSERT INTO `area` VALUES (1603, '2015-10-19 00:30:35', '2015-10-19 00:30:35', 0, 9, '河南省濮阳市', 1, '濮阳市', ',1511,', 1511); INSERT INTO `area` VALUES (1604, '2015-10-19 00:30:36', '2015-10-19 00:30:36', 0, 1, '河南省濮阳市华龙区', 2, '华龙区', ',1511,1603,', 1603); INSERT INTO `area` VALUES (1605, '2015-10-19 00:30:37', '2015-10-19 00:30:37', 0, 2, '河南省濮阳市清丰县', 2, '清丰县', ',1511,1603,', 1603); INSERT INTO `area` VALUES (1606, '2015-10-19 00:30:38', '2015-10-19 00:30:38', 0, 3, '河南省濮阳市南乐县', 2, '南乐县', ',1511,1603,', 1603); INSERT INTO `area` VALUES (1607, '2015-10-19 00:30:39', '2015-10-19 00:30:39', 0, 4, '河南省濮阳市范县', 2, '范县', ',1511,1603,', 1603); INSERT INTO `area` VALUES (1608, '2015-10-19 00:30:40', '2015-10-19 00:30:40', 0, 5, '河南省濮阳市台前县', 2, '台前县', ',1511,1603,', 1603); INSERT INTO `area` VALUES (1609, '2015-10-19 00:30:41', '2015-10-19 00:30:41', 0, 6, '河南省濮阳市濮阳县', 2, '濮阳县', ',1511,1603,', 1603); INSERT INTO `area` VALUES (1610, '2015-10-19 00:30:42', '2015-10-19 00:30:42', 0, 10, '河南省许昌市', 1, '许昌市', ',1511,', 1511); INSERT INTO `area` VALUES (1611, '2015-10-19 00:30:43', '2015-10-19 00:30:43', 0, 1, '河南省许昌市魏都区', 2, '魏都区', ',1511,1610,', 1610); INSERT INTO `area` VALUES (1612, '2015-10-19 00:30:44', '2015-10-19 00:30:44', 0, 2, '河南省许昌市许昌县', 2, '许昌县', ',1511,1610,', 1610); INSERT INTO `area` VALUES (1613, '2015-10-19 00:30:45', '2015-10-19 00:30:45', 0, 3, '河南省许昌市鄢陵县', 2, '鄢陵县', ',1511,1610,', 1610); INSERT INTO `area` VALUES (1614, '2015-10-19 00:30:46', '2015-10-19 00:30:46', 0, 4, '河南省许昌市襄城县', 2, '襄城县', ',1511,1610,', 1610); INSERT INTO `area` VALUES (1615, '2015-10-19 00:30:47', '2015-10-19 00:30:47', 0, 5, '河南省许昌市禹州市', 2, '禹州市', ',1511,1610,', 1610); INSERT INTO `area` VALUES (1616, '2015-10-19 00:30:48', '2015-10-19 00:30:48', 0, 6, '河南省许昌市长葛市', 2, '长葛市', ',1511,1610,', 1610); INSERT INTO `area` VALUES (1617, '2015-10-19 00:30:49', '2015-10-19 00:30:49', 0, 11, '河南省漯河市', 1, '漯河市', ',1511,', 1511); INSERT INTO `area` VALUES (1618, '2015-10-19 00:30:50', '2015-10-19 00:30:50', 0, 1, '河南省漯河市源汇区', 2, '源汇区', ',1511,1617,', 1617); INSERT INTO `area` VALUES (1619, '2015-10-19 00:30:51', '2015-10-19 00:30:51', 0, 2, '河南省漯河市郾城区', 2, '郾城区', ',1511,1617,', 1617); INSERT INTO `area` VALUES (1620, '2015-10-19 00:30:52', '2015-10-19 00:30:52', 0, 3, '河南省漯河市召陵区', 2, '召陵区', ',1511,1617,', 1617); INSERT INTO `area` VALUES (1621, '2015-10-19 00:30:53', '2015-10-19 00:30:53', 0, 4, '河南省漯河市舞阳县', 2, '舞阳县', ',1511,1617,', 1617); INSERT INTO `area` VALUES (1622, '2015-10-19 00:30:54', '2015-10-19 00:30:54', 0, 5, '河南省漯河市临颍县', 2, '临颍县', ',1511,1617,', 1617); INSERT INTO `area` VALUES (1623, '2015-10-19 00:30:55', '2015-10-19 00:30:55', 0, 12, '河南省三门峡市', 1, '三门峡市', ',1511,', 1511); INSERT INTO `area` VALUES (1624, '2015-10-19 00:30:56', '2015-10-19 00:30:56', 0, 1, '河南省三门峡市湖滨区', 2, '湖滨区', ',1511,1623,', 1623); INSERT INTO `area` VALUES (1625, '2015-10-19 00:30:57', '2015-10-19 00:30:57', 0, 2, '河南省三门峡市渑池县', 2, '渑池县', ',1511,1623,', 1623); INSERT INTO `area` VALUES (1626, '2015-10-19 00:30:58', '2015-10-19 00:30:58', 0, 3, '河南省三门峡市陕县', 2, '陕县', ',1511,1623,', 1623); INSERT INTO `area` VALUES (1627, '2015-10-19 00:30:59', '2015-10-19 00:30:59', 0, 4, '河南省三门峡市卢氏县', 2, '卢氏县', ',1511,1623,', 1623); INSERT INTO `area` VALUES (1628, '2015-10-19 00:31:00', '2015-10-19 00:31:00', 0, 5, '河南省三门峡市义马市', 2, '义马市', ',1511,1623,', 1623); INSERT INTO `area` VALUES (1629, '2015-10-19 00:31:01', '2015-10-19 00:31:01', 0, 6, '河南省三门峡市灵宝市', 2, '灵宝市', ',1511,1623,', 1623); INSERT INTO `area` VALUES (1630, '2015-10-19 00:31:02', '2015-10-19 00:31:02', 0, 13, '河南省南阳市', 1, '南阳市', ',1511,', 1511); INSERT INTO `area` VALUES (1631, '2015-10-19 00:31:03', '2015-10-19 00:31:03', 0, 1, '河南省南阳市宛城区', 2, '宛城区', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1632, '2015-10-19 00:31:04', '2015-10-19 00:31:04', 0, 2, '河南省南阳市卧龙区', 2, '卧龙区', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1633, '2015-10-19 00:31:05', '2015-10-19 00:31:05', 0, 3, '河南省南阳市南召县', 2, '南召县', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1634, '2015-10-19 00:31:06', '2015-10-19 00:31:06', 0, 4, '河南省南阳市方城县', 2, '方城县', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1635, '2015-10-19 00:31:07', '2015-10-19 00:31:07', 0, 5, '河南省南阳市西峡县', 2, '西峡县', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1636, '2015-10-19 00:31:08', '2015-10-19 00:31:08', 0, 6, '河南省南阳市镇平县', 2, '镇平县', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1637, '2015-10-19 00:31:09', '2015-10-19 00:31:09', 0, 7, '河南省南阳市内乡县', 2, '内乡县', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1638, '2015-10-19 00:31:10', '2015-10-19 00:31:10', 0, 8, '河南省南阳市淅川县', 2, '淅川县', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1639, '2015-10-19 00:31:11', '2015-10-19 00:31:11', 0, 9, '河南省南阳市社旗县', 2, '社旗县', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1640, '2015-10-19 00:31:12', '2015-10-19 00:31:12', 0, 10, '河南省南阳市唐河县', 2, '唐河县', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1641, '2015-10-19 00:31:13', '2015-10-19 00:31:13', 0, 11, '河南省南阳市新野县', 2, '新野县', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1642, '2015-10-19 00:31:14', '2015-10-19 00:31:14', 0, 12, '河南省南阳市桐柏县', 2, '桐柏县', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1643, '2015-10-19 00:31:15', '2015-10-19 00:31:15', 0, 13, '河南省南阳市邓州市', 2, '邓州市', ',1511,1630,', 1630); INSERT INTO `area` VALUES (1644, '2015-10-19 00:31:16', '2015-10-19 00:31:16', 0, 14, '河南省商丘市', 1, '商丘市', ',1511,', 1511); INSERT INTO `area` VALUES (1645, '2015-10-19 00:31:17', '2015-10-19 00:31:17', 0, 1, '河南省商丘市梁园区', 2, '梁园区', ',1511,1644,', 1644); INSERT INTO `area` VALUES (1646, '2015-10-19 00:31:18', '2015-10-19 00:31:18', 0, 2, '河南省商丘市睢阳区', 2, '睢阳区', ',1511,1644,', 1644); INSERT INTO `area` VALUES (1647, '2015-10-19 00:31:19', '2015-10-19 00:31:19', 0, 3, '河南省商丘市民权县', 2, '民权县', ',1511,1644,', 1644); INSERT INTO `area` VALUES (1648, '2015-10-19 00:31:20', '2015-10-19 00:31:20', 0, 4, '河南省商丘市睢县', 2, '睢县', ',1511,1644,', 1644); INSERT INTO `area` VALUES (1649, '2015-10-19 00:31:21', '2015-10-19 00:31:21', 0, 5, '河南省商丘市宁陵县', 2, '宁陵县', ',1511,1644,', 1644); INSERT INTO `area` VALUES (1650, '2015-10-19 00:31:22', '2015-10-19 00:31:22', 0, 6, '河南省商丘市柘城县', 2, '柘城县', ',1511,1644,', 1644); INSERT INTO `area` VALUES (1651, '2015-10-19 00:31:23', '2015-10-19 00:31:23', 0, 7, '河南省商丘市虞城县', 2, '虞城县', ',1511,1644,', 1644); INSERT INTO `area` VALUES (1652, '2015-10-19 00:31:24', '2015-10-19 00:31:24', 0, 8, '河南省商丘市夏邑县', 2, '夏邑县', ',1511,1644,', 1644); INSERT INTO `area` VALUES (1653, '2015-10-19 00:31:25', '2015-10-19 00:31:25', 0, 9, '河南省商丘市永城市', 2, '永城市', ',1511,1644,', 1644); INSERT INTO `area` VALUES (1654, '2015-10-19 00:31:26', '2015-10-19 00:31:26', 0, 15, '河南省信阳市', 1, '信阳市', ',1511,', 1511); INSERT INTO `area` VALUES (1655, '2015-10-19 00:31:27', '2015-10-19 00:31:27', 0, 1, '河南省信阳市浉河区', 2, '浉河区', ',1511,1654,', 1654); INSERT INTO `area` VALUES (1656, '2015-10-19 00:31:28', '2015-10-19 00:31:28', 0, 2, '河南省信阳市平桥区', 2, '平桥区', ',1511,1654,', 1654); INSERT INTO `area` VALUES (1657, '2015-10-19 00:31:29', '2015-10-19 00:31:29', 0, 3, '河南省信阳市罗山县', 2, '罗山县', ',1511,1654,', 1654); INSERT INTO `area` VALUES (1658, '2015-10-19 00:31:30', '2015-10-19 00:31:30', 0, 4, '河南省信阳市光山县', 2, '光山县', ',1511,1654,', 1654); INSERT INTO `area` VALUES (1659, '2015-10-19 00:31:31', '2015-10-19 00:31:31', 0, 5, '河南省信阳市新县', 2, '新县', ',1511,1654,', 1654); INSERT INTO `area` VALUES (1660, '2015-10-19 00:31:32', '2015-10-19 00:31:32', 0, 6, '河南省信阳市商城县', 2, '商城县', ',1511,1654,', 1654); INSERT INTO `area` VALUES (1661, '2015-10-19 00:31:33', '2015-10-19 00:31:33', 0, 7, '河南省信阳市固始县', 2, '固始县', ',1511,1654,', 1654); INSERT INTO `area` VALUES (1662, '2015-10-19 00:31:34', '2015-10-19 00:31:34', 0, 8, '河南省信阳市潢川县', 2, '潢川县', ',1511,1654,', 1654); INSERT INTO `area` VALUES (1663, '2015-10-19 00:31:35', '2015-10-19 00:31:35', 0, 9, '河南省信阳市淮滨县', 2, '淮滨县', ',1511,1654,', 1654); INSERT INTO `area` VALUES (1664, '2015-10-19 00:31:36', '2015-10-19 00:31:36', 0, 10, '河南省信阳市息县', 2, '息县', ',1511,1654,', 1654); INSERT INTO `area` VALUES (1665, '2015-10-19 00:31:37', '2015-10-19 00:31:37', 0, 16, '河南省周口市', 1, '周口市', ',1511,', 1511); INSERT INTO `area` VALUES (1666, '2015-10-19 00:31:38', '2015-10-19 00:31:38', 0, 1, '河南省周口市川汇区', 2, '川汇区', ',1511,1665,', 1665); INSERT INTO `area` VALUES (1667, '2015-10-19 00:31:39', '2015-10-19 00:31:39', 0, 2, '河南省周口市扶沟县', 2, '扶沟县', ',1511,1665,', 1665); INSERT INTO `area` VALUES (1668, '2015-10-19 00:31:40', '2015-10-19 00:31:40', 0, 3, '河南省周口市西华县', 2, '西华县', ',1511,1665,', 1665); INSERT INTO `area` VALUES (1669, '2015-10-19 00:31:41', '2015-10-19 00:31:41', 0, 4, '河南省周口市商水县', 2, '商水县', ',1511,1665,', 1665); INSERT INTO `area` VALUES (1670, '2015-10-19 00:31:42', '2015-10-19 00:31:42', 0, 5, '河南省周口市沈丘县', 2, '沈丘县', ',1511,1665,', 1665); INSERT INTO `area` VALUES (1671, '2015-10-19 00:31:43', '2015-10-19 00:31:43', 0, 6, '河南省周口市郸城县', 2, '郸城县', ',1511,1665,', 1665); INSERT INTO `area` VALUES (1672, '2015-10-19 00:31:44', '2015-10-19 00:31:44', 0, 7, '河南省周口市淮阳县', 2, '淮阳县', ',1511,1665,', 1665); INSERT INTO `area` VALUES (1673, '2015-10-19 00:31:45', '2015-10-19 00:31:45', 0, 8, '河南省周口市太康县', 2, '太康县', ',1511,1665,', 1665); INSERT INTO `area` VALUES (1674, '2015-10-19 00:31:46', '2015-10-19 00:31:46', 0, 9, '河南省周口市鹿邑县', 2, '鹿邑县', ',1511,1665,', 1665); INSERT INTO `area` VALUES (1675, '2015-10-19 00:31:47', '2015-10-19 00:31:47', 0, 10, '河南省周口市项城市', 2, '项城市', ',1511,1665,', 1665); INSERT INTO `area` VALUES (1676, '2015-10-19 00:31:48', '2015-10-19 00:31:48', 0, 17, '河南省驻马店市', 1, '驻马店市', ',1511,', 1511); INSERT INTO `area` VALUES (1677, '2015-10-19 00:31:49', '2015-10-19 00:31:49', 0, 1, '河南省驻马店市驿城区', 2, '驿城区', ',1511,1676,', 1676); INSERT INTO `area` VALUES (1678, '2015-10-19 00:31:50', '2015-10-19 00:31:50', 0, 2, '河南省驻马店市西平县', 2, '西平县', ',1511,1676,', 1676); INSERT INTO `area` VALUES (1679, '2015-10-19 00:31:51', '2015-10-19 00:31:51', 0, 3, '河南省驻马店市上蔡县', 2, '上蔡县', ',1511,1676,', 1676); INSERT INTO `area` VALUES (1680, '2015-10-19 00:31:52', '2015-10-19 00:31:52', 0, 4, '河南省驻马店市平舆县', 2, '平舆县', ',1511,1676,', 1676); INSERT INTO `area` VALUES (1681, '2015-10-19 00:31:53', '2015-10-19 00:31:53', 0, 5, '河南省驻马店市正阳县', 2, '正阳县', ',1511,1676,', 1676); INSERT INTO `area` VALUES (1682, '2015-10-19 00:31:54', '2015-10-19 00:31:54', 0, 6, '河南省驻马店市确山县', 2, '确山县', ',1511,1676,', 1676); INSERT INTO `area` VALUES (1683, '2015-10-19 00:31:55', '2015-10-19 00:31:55', 0, 7, '河南省驻马店市泌阳县', 2, '泌阳县', ',1511,1676,', 1676); INSERT INTO `area` VALUES (1684, '2015-10-19 00:31:56', '2015-10-19 00:31:56', 0, 8, '河南省驻马店市汝南县', 2, '汝南县', ',1511,1676,', 1676); INSERT INTO `area` VALUES (1685, '2015-10-19 00:31:57', '2015-10-19 00:31:57', 0, 9, '河南省驻马店市遂平县', 2, '遂平县', ',1511,1676,', 1676); INSERT INTO `area` VALUES (1686, '2015-10-19 00:31:58', '2015-10-19 00:31:58', 0, 10, '河南省驻马店市新蔡县', 2, '新蔡县', ',1511,1676,', 1676); INSERT INTO `area` VALUES (1687, '2015-10-19 00:31:59', '2015-10-19 00:31:59', 0, 18, '河南省济源市', 1, '济源市', ',1511,', 1511); INSERT INTO `area` VALUES (1688, '2015-10-19 00:32:00', '2015-10-19 00:32:00', 0, 17, '湖北省', 0, '湖北省', ',', NULL); INSERT INTO `area` VALUES (1689, '2015-10-19 00:32:01', '2015-10-19 00:32:01', 0, 1, '湖北省武汉市', 1, '武汉市', ',1688,', 1688); INSERT INTO `area` VALUES (1690, '2015-10-19 00:32:02', '2015-10-19 00:32:02', 0, 1, '湖北省武汉市江岸区', 2, '江岸区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1691, '2015-10-19 00:32:03', '2015-10-19 00:32:03', 0, 2, '湖北省武汉市江汉区', 2, '江汉区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1692, '2015-10-19 00:32:04', '2015-10-19 00:32:04', 0, 3, '湖北省武汉市硚口区', 2, '硚口区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1693, '2015-10-19 00:32:05', '2015-10-19 00:32:05', 0, 4, '湖北省武汉市汉阳区', 2, '汉阳区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1694, '2015-10-19 00:32:06', '2015-10-19 00:32:06', 0, 5, '湖北省武汉市武昌区', 2, '武昌区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1695, '2015-10-19 00:32:07', '2015-10-19 00:32:07', 0, 6, '湖北省武汉市青山区', 2, '青山区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1696, '2015-10-19 00:32:08', '2015-10-19 00:32:08', 0, 7, '湖北省武汉市洪山区', 2, '洪山区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1697, '2015-10-19 00:32:09', '2015-10-19 00:32:09', 0, 8, '湖北省武汉市东西湖区', 2, '东西湖区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1698, '2015-10-19 00:32:10', '2015-10-19 00:32:10', 0, 9, '湖北省武汉市汉南区', 2, '汉南区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1699, '2015-10-19 00:32:11', '2015-10-19 00:32:11', 0, 10, '湖北省武汉市蔡甸区', 2, '蔡甸区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1700, '2015-10-19 00:32:12', '2015-10-19 00:32:12', 0, 11, '湖北省武汉市江夏区', 2, '江夏区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1701, '2015-10-19 00:32:13', '2015-10-19 00:32:13', 0, 12, '湖北省武汉市黄陂区', 2, '黄陂区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1702, '2015-10-19 00:32:14', '2015-10-19 00:32:14', 0, 13, '湖北省武汉市新洲区', 2, '新洲区', ',1688,1689,', 1689); INSERT INTO `area` VALUES (1703, '2015-10-19 00:32:15', '2015-10-19 00:32:15', 0, 2, '湖北省黄石市', 1, '黄石市', ',1688,', 1688); INSERT INTO `area` VALUES (1704, '2015-10-19 00:32:16', '2015-10-19 00:32:16', 0, 1, '湖北省黄石市黄石港区', 2, '黄石港区', ',1688,1703,', 1703); INSERT INTO `area` VALUES (1705, '2015-10-19 00:32:17', '2015-10-19 00:32:17', 0, 2, '湖北省黄石市西塞山区', 2, '西塞山区', ',1688,1703,', 1703); INSERT INTO `area` VALUES (1706, '2015-10-19 00:32:18', '2015-10-19 00:32:18', 0, 3, '湖北省黄石市下陆区', 2, '下陆区', ',1688,1703,', 1703); INSERT INTO `area` VALUES (1707, '2015-10-19 00:32:19', '2015-10-19 00:32:19', 0, 4, '湖北省黄石市铁山区', 2, '铁山区', ',1688,1703,', 1703); INSERT INTO `area` VALUES (1708, '2015-10-19 00:32:20', '2015-10-19 00:32:20', 0, 5, '湖北省黄石市阳新县', 2, '阳新县', ',1688,1703,', 1703); INSERT INTO `area` VALUES (1709, '2015-10-19 00:32:21', '2015-10-19 00:32:21', 0, 6, '湖北省黄石市大冶市', 2, '大冶市', ',1688,1703,', 1703); INSERT INTO `area` VALUES (1710, '2015-10-19 00:32:22', '2015-10-19 00:32:22', 0, 3, '湖北省十堰市', 1, '十堰市', ',1688,', 1688); INSERT INTO `area` VALUES (1711, '2015-10-19 00:32:23', '2015-10-19 00:32:23', 0, 1, '湖北省十堰市茅箭区', 2, '茅箭区', ',1688,1710,', 1710); INSERT INTO `area` VALUES (1712, '2015-10-19 00:32:24', '2015-10-19 00:32:24', 0, 2, '湖北省十堰市张湾区', 2, '张湾区', ',1688,1710,', 1710); INSERT INTO `area` VALUES (1713, '2015-10-19 00:32:25', '2015-10-19 00:32:25', 0, 3, '湖北省十堰市郧县', 2, '郧县', ',1688,1710,', 1710); INSERT INTO `area` VALUES (1714, '2015-10-19 00:32:26', '2015-10-19 00:32:26', 0, 4, '湖北省十堰市郧西县', 2, '郧西县', ',1688,1710,', 1710); INSERT INTO `area` VALUES (1715, '2015-10-19 00:32:27', '2015-10-19 00:32:27', 0, 5, '湖北省十堰市竹山县', 2, '竹山县', ',1688,1710,', 1710); INSERT INTO `area` VALUES (1716, '2015-10-19 00:32:28', '2015-10-19 00:32:28', 0, 6, '湖北省十堰市竹溪县', 2, '竹溪县', ',1688,1710,', 1710); INSERT INTO `area` VALUES (1717, '2015-10-19 00:32:29', '2015-10-19 00:32:29', 0, 7, '湖北省十堰市房县', 2, '房县', ',1688,1710,', 1710); INSERT INTO `area` VALUES (1718, '2015-10-19 00:32:30', '2015-10-19 00:32:30', 0, 8, '湖北省十堰市丹江口市', 2, '丹江口市', ',1688,1710,', 1710); INSERT INTO `area` VALUES (1719, '2015-10-19 00:32:31', '2015-10-19 00:32:31', 0, 4, '湖北省宜昌市', 1, '宜昌市', ',1688,', 1688); INSERT INTO `area` VALUES (1720, '2015-10-19 00:32:32', '2015-10-19 00:32:32', 0, 1, '湖北省宜昌市西陵区', 2, '西陵区', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1721, '2015-10-19 00:32:33', '2015-10-19 00:32:33', 0, 2, '湖北省宜昌市伍家岗区', 2, '伍家岗区', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1722, '2015-10-19 00:32:34', '2015-10-19 00:32:34', 0, 3, '湖北省宜昌市点军区', 2, '点军区', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1723, '2015-10-19 00:32:35', '2015-10-19 00:32:35', 0, 4, '湖北省宜昌市猇亭区', 2, '猇亭区', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1724, '2015-10-19 00:32:36', '2015-10-19 00:32:36', 0, 5, '湖北省宜昌市夷陵区', 2, '夷陵区', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1725, '2015-10-19 00:32:37', '2015-10-19 00:32:37', 0, 6, '湖北省宜昌市远安县', 2, '远安县', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1726, '2015-10-19 00:32:38', '2015-10-19 00:32:38', 0, 7, '湖北省宜昌市兴山县', 2, '兴山县', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1727, '2015-10-19 00:32:39', '2015-10-19 00:32:39', 0, 8, '湖北省宜昌市秭归县', 2, '秭归县', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1728, '2015-10-19 00:32:40', '2015-10-19 00:32:40', 0, 9, '湖北省宜昌市长阳土家族自治县', 2, '长阳土家族自治县', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1729, '2015-10-19 00:32:41', '2015-10-19 00:32:41', 0, 10, '湖北省宜昌市五峰土家族自治县', 2, '五峰土家族自治县', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1730, '2015-10-19 00:32:42', '2015-10-19 00:32:42', 0, 11, '湖北省宜昌市宜都市', 2, '宜都市', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1731, '2015-10-19 00:32:43', '2015-10-19 00:32:43', 0, 12, '湖北省宜昌市当阳市', 2, '当阳市', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1732, '2015-10-19 00:32:44', '2015-10-19 00:32:44', 0, 13, '湖北省宜昌市枝江市', 2, '枝江市', ',1688,1719,', 1719); INSERT INTO `area` VALUES (1733, '2015-10-19 00:32:45', '2015-10-19 00:32:45', 0, 5, '湖北省襄阳市', 1, '襄阳市', ',1688,', 1688); INSERT INTO `area` VALUES (1734, '2015-10-19 00:32:46', '2015-10-19 00:32:46', 0, 1, '湖北省襄阳市襄城区', 2, '襄城区', ',1688,1733,', 1733); INSERT INTO `area` VALUES (1735, '2015-10-19 00:32:47', '2015-10-19 00:32:47', 0, 2, '湖北省襄阳市樊城区', 2, '樊城区', ',1688,1733,', 1733); INSERT INTO `area` VALUES (1736, '2015-10-19 00:32:48', '2015-10-19 00:32:48', 0, 3, '湖北省襄阳市襄州区', 2, '襄州区', ',1688,1733,', 1733); INSERT INTO `area` VALUES (1737, '2015-10-19 00:32:49', '2015-10-19 00:32:49', 0, 4, '湖北省襄阳市南漳县', 2, '南漳县', ',1688,1733,', 1733); INSERT INTO `area` VALUES (1738, '2015-10-19 00:32:50', '2015-10-19 00:32:50', 0, 5, '湖北省襄阳市谷城县', 2, '谷城县', ',1688,1733,', 1733); INSERT INTO `area` VALUES (1739, '2015-10-19 00:32:51', '2015-10-19 00:32:51', 0, 6, '湖北省襄阳市保康县', 2, '保康县', ',1688,1733,', 1733); INSERT INTO `area` VALUES (1740, '2015-10-19 00:32:52', '2015-10-19 00:32:52', 0, 7, '湖北省襄阳市老河口市', 2, '老河口市', ',1688,1733,', 1733); INSERT INTO `area` VALUES (1741, '2015-10-19 00:32:53', '2015-10-19 00:32:53', 0, 8, '湖北省襄阳市枣阳市', 2, '枣阳市', ',1688,1733,', 1733); INSERT INTO `area` VALUES (1742, '2015-10-19 00:32:54', '2015-10-19 00:32:54', 0, 9, '湖北省襄阳市宜城市', 2, '宜城市', ',1688,1733,', 1733); INSERT INTO `area` VALUES (1743, '2015-10-19 00:32:55', '2015-10-19 00:32:55', 0, 6, '湖北省鄂州市', 1, '鄂州市', ',1688,', 1688); INSERT INTO `area` VALUES (1744, '2015-10-19 00:32:56', '2015-10-19 00:32:56', 0, 1, '湖北省鄂州市梁子湖区', 2, '梁子湖区', ',1688,1743,', 1743); INSERT INTO `area` VALUES (1745, '2015-10-19 00:32:57', '2015-10-19 00:32:57', 0, 2, '湖北省鄂州市华容区', 2, '华容区', ',1688,1743,', 1743); INSERT INTO `area` VALUES (1746, '2015-10-19 00:32:58', '2015-10-19 00:32:58', 0, 3, '湖北省鄂州市鄂城区', 2, '鄂城区', ',1688,1743,', 1743); INSERT INTO `area` VALUES (1747, '2015-10-19 00:32:59', '2015-10-19 00:32:59', 0, 7, '湖北省荆门市', 1, '荆门市', ',1688,', 1688); INSERT INTO `area` VALUES (1748, '2015-10-19 00:33:00', '2015-10-19 00:33:00', 0, 1, '湖北省荆门市东宝区', 2, '东宝区', ',1688,1747,', 1747); INSERT INTO `area` VALUES (1749, '2015-10-19 00:33:01', '2015-10-19 00:33:01', 0, 2, '湖北省荆门市掇刀区', 2, '掇刀区', ',1688,1747,', 1747); INSERT INTO `area` VALUES (1750, '2015-10-19 00:33:02', '2015-10-19 00:33:02', 0, 3, '湖北省荆门市京山县', 2, '京山县', ',1688,1747,', 1747); INSERT INTO `area` VALUES (1751, '2015-10-19 00:33:03', '2015-10-19 00:33:03', 0, 4, '湖北省荆门市沙洋县', 2, '沙洋县', ',1688,1747,', 1747); INSERT INTO `area` VALUES (1752, '2015-10-19 00:33:04', '2015-10-19 00:33:04', 0, 5, '湖北省荆门市钟祥市', 2, '钟祥市', ',1688,1747,', 1747); INSERT INTO `area` VALUES (1753, '2015-10-19 00:33:05', '2015-10-19 00:33:05', 0, 8, '湖北省孝感市', 1, '孝感市', ',1688,', 1688); INSERT INTO `area` VALUES (1754, '2015-10-19 00:33:06', '2015-10-19 00:33:06', 0, 1, '湖北省孝感市孝南区', 2, '孝南区', ',1688,1753,', 1753); INSERT INTO `area` VALUES (1755, '2015-10-19 00:33:07', '2015-10-19 00:33:07', 0, 2, '湖北省孝感市孝昌县', 2, '孝昌县', ',1688,1753,', 1753); INSERT INTO `area` VALUES (1756, '2015-10-19 00:33:08', '2015-10-19 00:33:08', 0, 3, '湖北省孝感市大悟县', 2, '大悟县', ',1688,1753,', 1753); INSERT INTO `area` VALUES (1757, '2015-10-19 00:33:09', '2015-10-19 00:33:09', 0, 4, '湖北省孝感市云梦县', 2, '云梦县', ',1688,1753,', 1753); INSERT INTO `area` VALUES (1758, '2015-10-19 00:33:10', '2015-10-19 00:33:10', 0, 5, '湖北省孝感市应城市', 2, '应城市', ',1688,1753,', 1753); INSERT INTO `area` VALUES (1759, '2015-10-19 00:33:11', '2015-10-19 00:33:11', 0, 6, '湖北省孝感市安陆市', 2, '安陆市', ',1688,1753,', 1753); INSERT INTO `area` VALUES (1760, '2015-10-19 00:33:12', '2015-10-19 00:33:12', 0, 7, '湖北省孝感市汉川市', 2, '汉川市', ',1688,1753,', 1753); INSERT INTO `area` VALUES (1761, '2015-10-19 00:33:13', '2015-10-19 00:33:13', 0, 9, '湖北省荆州市', 1, '荆州市', ',1688,', 1688); INSERT INTO `area` VALUES (1762, '2015-10-19 00:33:14', '2015-10-19 00:33:14', 0, 1, '湖北省荆州市沙市区', 2, '沙市区', ',1688,1761,', 1761); INSERT INTO `area` VALUES (1763, '2015-10-19 00:33:15', '2015-10-19 00:33:15', 0, 2, '湖北省荆州市荆州区', 2, '荆州区', ',1688,1761,', 1761); INSERT INTO `area` VALUES (1764, '2015-10-19 00:33:16', '2015-10-19 00:33:16', 0, 3, '湖北省荆州市公安县', 2, '公安县', ',1688,1761,', 1761); INSERT INTO `area` VALUES (1765, '2015-10-19 00:33:17', '2015-10-19 00:33:17', 0, 4, '湖北省荆州市监利县', 2, '监利县', ',1688,1761,', 1761); INSERT INTO `area` VALUES (1766, '2015-10-19 00:33:18', '2015-10-19 00:33:18', 0, 5, '湖北省荆州市江陵县', 2, '江陵县', ',1688,1761,', 1761); INSERT INTO `area` VALUES (1767, '2015-10-19 00:33:19', '2015-10-19 00:33:19', 0, 6, '湖北省荆州市石首市', 2, '石首市', ',1688,1761,', 1761); INSERT INTO `area` VALUES (1768, '2015-10-19 00:33:20', '2015-10-19 00:33:20', 0, 7, '湖北省荆州市洪湖市', 2, '洪湖市', ',1688,1761,', 1761); INSERT INTO `area` VALUES (1769, '2015-10-19 00:33:21', '2015-10-19 00:33:21', 0, 8, '湖北省荆州市松滋市', 2, '松滋市', ',1688,1761,', 1761); INSERT INTO `area` VALUES (1770, '2015-10-19 00:33:22', '2015-10-19 00:33:22', 0, 10, '湖北省黄冈市', 1, '黄冈市', ',1688,', 1688); INSERT INTO `area` VALUES (1771, '2015-10-19 00:33:23', '2015-10-19 00:33:23', 0, 1, '湖北省黄冈市黄州区', 2, '黄州区', ',1688,1770,', 1770); INSERT INTO `area` VALUES (1772, '2015-10-19 00:33:24', '2015-10-19 00:33:24', 0, 2, '湖北省黄冈市团风县', 2, '团风县', ',1688,1770,', 1770); INSERT INTO `area` VALUES (1773, '2015-10-19 00:33:25', '2015-10-19 00:33:25', 0, 3, '湖北省黄冈市红安县', 2, '红安县', ',1688,1770,', 1770); INSERT INTO `area` VALUES (1774, '2015-10-19 00:33:26', '2015-10-19 00:33:26', 0, 4, '湖北省黄冈市罗田县', 2, '罗田县', ',1688,1770,', 1770); INSERT INTO `area` VALUES (1775, '2015-10-19 00:33:27', '2015-10-19 00:33:27', 0, 5, '湖北省黄冈市英山县', 2, '英山县', ',1688,1770,', 1770); INSERT INTO `area` VALUES (1776, '2015-10-19 00:33:28', '2015-10-19 00:33:28', 0, 6, '湖北省黄冈市浠水县', 2, '浠水县', ',1688,1770,', 1770); INSERT INTO `area` VALUES (1777, '2015-10-19 00:33:29', '2015-10-19 00:33:29', 0, 7, '湖北省黄冈市蕲春县', 2, '蕲春县', ',1688,1770,', 1770); INSERT INTO `area` VALUES (1778, '2015-10-19 00:33:30', '2015-10-19 00:33:30', 0, 8, '湖北省黄冈市黄梅县', 2, '黄梅县', ',1688,1770,', 1770); INSERT INTO `area` VALUES (1779, '2015-10-19 00:33:31', '2015-10-19 00:33:31', 0, 9, '湖北省黄冈市麻城市', 2, '麻城市', ',1688,1770,', 1770); INSERT INTO `area` VALUES (1780, '2015-10-19 00:33:32', '2015-10-19 00:33:32', 0, 10, '湖北省黄冈市武穴市', 2, '武穴市', ',1688,1770,', 1770); INSERT INTO `area` VALUES (1781, '2015-10-19 00:33:33', '2015-10-19 00:33:33', 0, 11, '湖北省咸宁市', 1, '咸宁市', ',1688,', 1688); INSERT INTO `area` VALUES (1782, '2015-10-19 00:33:34', '2015-10-19 00:33:34', 0, 1, '湖北省咸宁市咸安区', 2, '咸安区', ',1688,1781,', 1781); INSERT INTO `area` VALUES (1783, '2015-10-19 00:33:35', '2015-10-19 00:33:35', 0, 2, '湖北省咸宁市嘉鱼县', 2, '嘉鱼县', ',1688,1781,', 1781); INSERT INTO `area` VALUES (1784, '2015-10-19 00:33:36', '2015-10-19 00:33:36', 0, 3, '湖北省咸宁市通城县', 2, '通城县', ',1688,1781,', 1781); INSERT INTO `area` VALUES (1785, '2015-10-19 00:33:37', '2015-10-19 00:33:37', 0, 4, '湖北省咸宁市崇阳县', 2, '崇阳县', ',1688,1781,', 1781); INSERT INTO `area` VALUES (1786, '2015-10-19 00:33:38', '2015-10-19 00:33:38', 0, 5, '湖北省咸宁市通山县', 2, '通山县', ',1688,1781,', 1781); INSERT INTO `area` VALUES (1787, '2015-10-19 00:33:39', '2015-10-19 00:33:39', 0, 6, '湖北省咸宁市赤壁市', 2, '赤壁市', ',1688,1781,', 1781); INSERT INTO `area` VALUES (1788, '2015-10-19 00:33:40', '2015-10-19 00:33:40', 0, 12, '湖北省随州市', 1, '随州市', ',1688,', 1688); INSERT INTO `area` VALUES (1789, '2015-10-19 00:33:41', '2015-10-19 00:33:41', 0, 1, '湖北省随州市曾都区', 2, '曾都区', ',1688,1788,', 1788); INSERT INTO `area` VALUES (1790, '2015-10-19 00:33:42', '2015-10-19 00:33:42', 0, 2, '湖北省随州市随县', 2, '随县', ',1688,1788,', 1788); INSERT INTO `area` VALUES (1791, '2015-10-19 00:33:43', '2015-10-19 00:33:43', 0, 3, '湖北省随州市广水市', 2, '广水市', ',1688,1788,', 1788); INSERT INTO `area` VALUES (1792, '2015-10-19 00:33:44', '2015-10-19 00:33:44', 0, 13, '湖北省恩施土家族苗族自治州', 1, '恩施土家族苗族自治州', ',1688,', 1688); INSERT INTO `area` VALUES (1793, '2015-10-19 00:33:45', '2015-10-19 00:33:45', 0, 1, '湖北省恩施土家族苗族自治州恩施市', 2, '恩施市', ',1688,1792,', 1792); INSERT INTO `area` VALUES (1794, '2015-10-19 00:33:46', '2015-10-19 00:33:46', 0, 2, '湖北省恩施土家族苗族自治州利川市', 2, '利川市', ',1688,1792,', 1792); INSERT INTO `area` VALUES (1795, '2015-10-19 00:33:47', '2015-10-19 00:33:47', 0, 3, '湖北省恩施土家族苗族自治州建始县', 2, '建始县', ',1688,1792,', 1792); INSERT INTO `area` VALUES (1796, '2015-10-19 00:33:48', '2015-10-19 00:33:48', 0, 4, '湖北省恩施土家族苗族自治州巴东县', 2, '巴东县', ',1688,1792,', 1792); INSERT INTO `area` VALUES (1797, '2015-10-19 00:33:49', '2015-10-19 00:33:49', 0, 5, '湖北省恩施土家族苗族自治州宣恩县', 2, '宣恩县', ',1688,1792,', 1792); INSERT INTO `area` VALUES (1798, '2015-10-19 00:33:50', '2015-10-19 00:33:50', 0, 6, '湖北省恩施土家族苗族自治州咸丰县', 2, '咸丰县', ',1688,1792,', 1792); INSERT INTO `area` VALUES (1799, '2015-10-19 00:33:51', '2015-10-19 00:33:51', 0, 7, '湖北省恩施土家族苗族自治州来凤县', 2, '来凤县', ',1688,1792,', 1792); INSERT INTO `area` VALUES (1800, '2015-10-19 00:33:52', '2015-10-19 00:33:52', 0, 8, '湖北省恩施土家族苗族自治州鹤峰县', 2, '鹤峰县', ',1688,1792,', 1792); INSERT INTO `area` VALUES (1801, '2015-10-19 00:33:53', '2015-10-19 00:33:53', 0, 14, '湖北省仙桃市', 1, '仙桃市', ',1688,', 1688); INSERT INTO `area` VALUES (1802, '2015-10-19 00:33:54', '2015-10-19 00:33:54', 0, 15, '湖北省潜江市', 1, '潜江市', ',1688,', 1688); INSERT INTO `area` VALUES (1803, '2015-10-19 00:33:55', '2015-10-19 00:33:55', 0, 16, '湖北省天门市', 1, '天门市', ',1688,', 1688); INSERT INTO `area` VALUES (1804, '2015-10-19 00:33:56', '2015-10-19 00:33:56', 0, 17, '湖北省神农架林区', 1, '神农架林区', ',1688,', 1688); INSERT INTO `area` VALUES (1805, '2015-10-19 00:33:57', '2015-10-19 00:33:57', 0, 18, '湖南省', 0, '湖南省', ',', NULL); INSERT INTO `area` VALUES (1806, '2015-10-19 00:33:58', '2015-10-19 00:33:58', 0, 1, '湖南省长沙市', 1, '长沙市', ',1805,', 1805); INSERT INTO `area` VALUES (1807, '2015-10-19 00:33:59', '2015-10-19 00:33:59', 0, 1, '湖南省长沙市芙蓉区', 2, '芙蓉区', ',1805,1806,', 1806); INSERT INTO `area` VALUES (1808, '2015-10-19 00:34:00', '2015-10-19 00:34:00', 0, 2, '湖南省长沙市天心区', 2, '天心区', ',1805,1806,', 1806); INSERT INTO `area` VALUES (1809, '2015-10-19 00:34:01', '2015-10-19 00:34:01', 0, 3, '湖南省长沙市岳麓区', 2, '岳麓区', ',1805,1806,', 1806); INSERT INTO `area` VALUES (1810, '2015-10-19 00:34:02', '2015-10-19 00:34:02', 0, 4, '湖南省长沙市开福区', 2, '开福区', ',1805,1806,', 1806); INSERT INTO `area` VALUES (1811, '2015-10-19 00:34:03', '2015-10-19 00:34:03', 0, 5, '湖南省长沙市雨花区', 2, '雨花区', ',1805,1806,', 1806); INSERT INTO `area` VALUES (1812, '2015-10-19 00:34:04', '2015-10-19 00:34:04', 0, 6, '湖南省长沙市望城区', 2, '望城区', ',1805,1806,', 1806); INSERT INTO `area` VALUES (1813, '2015-10-19 00:34:05', '2015-10-19 00:34:05', 0, 7, '湖南省长沙市长沙县', 2, '长沙县', ',1805,1806,', 1806); INSERT INTO `area` VALUES (1814, '2015-10-19 00:34:06', '2015-10-19 00:34:06', 0, 8, '湖南省长沙市宁乡县', 2, '宁乡县', ',1805,1806,', 1806); INSERT INTO `area` VALUES (1815, '2015-10-19 00:34:07', '2015-10-19 00:34:07', 0, 9, '湖南省长沙市浏阳市', 2, '浏阳市', ',1805,1806,', 1806); INSERT INTO `area` VALUES (1816, '2015-10-19 00:34:08', '2015-10-19 00:34:08', 0, 2, '湖南省株洲市', 1, '株洲市', ',1805,', 1805); INSERT INTO `area` VALUES (1817, '2015-10-19 00:34:09', '2015-10-19 00:34:09', 0, 1, '湖南省株洲市荷塘区', 2, '荷塘区', ',1805,1816,', 1816); INSERT INTO `area` VALUES (1818, '2015-10-19 00:34:10', '2015-10-19 00:34:10', 0, 2, '湖南省株洲市芦淞区', 2, '芦淞区', ',1805,1816,', 1816); INSERT INTO `area` VALUES (1819, '2015-10-19 00:34:11', '2015-10-19 00:34:11', 0, 3, '湖南省株洲市石峰区', 2, '石峰区', ',1805,1816,', 1816); INSERT INTO `area` VALUES (1820, '2015-10-19 00:34:12', '2015-10-19 00:34:12', 0, 4, '湖南省株洲市天元区', 2, '天元区', ',1805,1816,', 1816); INSERT INTO `area` VALUES (1821, '2015-10-19 00:34:13', '2015-10-19 00:34:13', 0, 5, '湖南省株洲市株洲县', 2, '株洲县', ',1805,1816,', 1816); INSERT INTO `area` VALUES (1822, '2015-10-19 00:34:14', '2015-10-19 00:34:14', 0, 6, '湖南省株洲市攸县', 2, '攸县', ',1805,1816,', 1816); INSERT INTO `area` VALUES (1823, '2015-10-19 00:34:15', '2015-10-19 00:34:15', 0, 7, '湖南省株洲市茶陵县', 2, '茶陵县', ',1805,1816,', 1816); INSERT INTO `area` VALUES (1824, '2015-10-19 00:34:16', '2015-10-19 00:34:16', 0, 8, '湖南省株洲市炎陵县', 2, '炎陵县', ',1805,1816,', 1816); INSERT INTO `area` VALUES (1825, '2015-10-19 00:34:17', '2015-10-19 00:34:17', 0, 9, '湖南省株洲市醴陵市', 2, '醴陵市', ',1805,1816,', 1816); INSERT INTO `area` VALUES (1826, '2015-10-19 00:34:18', '2015-10-19 00:34:18', 0, 3, '湖南省湘潭市', 1, '湘潭市', ',1805,', 1805); INSERT INTO `area` VALUES (1827, '2015-10-19 00:34:19', '2015-10-19 00:34:19', 0, 1, '湖南省湘潭市雨湖区', 2, '雨湖区', ',1805,1826,', 1826); INSERT INTO `area` VALUES (1828, '2015-10-19 00:34:20', '2015-10-19 00:34:20', 0, 2, '湖南省湘潭市岳塘区', 2, '岳塘区', ',1805,1826,', 1826); INSERT INTO `area` VALUES (1829, '2015-10-19 00:34:21', '2015-10-19 00:34:21', 0, 3, '湖南省湘潭市湘潭县', 2, '湘潭县', ',1805,1826,', 1826); INSERT INTO `area` VALUES (1830, '2015-10-19 00:34:22', '2015-10-19 00:34:22', 0, 4, '湖南省湘潭市湘乡市', 2, '湘乡市', ',1805,1826,', 1826); INSERT INTO `area` VALUES (1831, '2015-10-19 00:34:23', '2015-10-19 00:34:23', 0, 5, '湖南省湘潭市韶山市', 2, '韶山市', ',1805,1826,', 1826); INSERT INTO `area` VALUES (1832, '2015-10-19 00:34:24', '2015-10-19 00:34:24', 0, 4, '湖南省衡阳市', 1, '衡阳市', ',1805,', 1805); INSERT INTO `area` VALUES (1833, '2015-10-19 00:34:25', '2015-10-19 00:34:25', 0, 1, '湖南省衡阳市珠晖区', 2, '珠晖区', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1834, '2015-10-19 00:34:26', '2015-10-19 00:34:26', 0, 2, '湖南省衡阳市雁峰区', 2, '雁峰区', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1835, '2015-10-19 00:34:27', '2015-10-19 00:34:27', 0, 3, '湖南省衡阳市石鼓区', 2, '石鼓区', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1836, '2015-10-19 00:34:28', '2015-10-19 00:34:28', 0, 4, '湖南省衡阳市蒸湘区', 2, '蒸湘区', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1837, '2015-10-19 00:34:29', '2015-10-19 00:34:29', 0, 5, '湖南省衡阳市南岳区', 2, '南岳区', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1838, '2015-10-19 00:34:30', '2015-10-19 00:34:30', 0, 6, '湖南省衡阳市衡阳县', 2, '衡阳县', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1839, '2015-10-19 00:34:31', '2015-10-19 00:34:31', 0, 7, '湖南省衡阳市衡南县', 2, '衡南县', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1840, '2015-10-19 00:34:32', '2015-10-19 00:34:32', 0, 8, '湖南省衡阳市衡山县', 2, '衡山县', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1841, '2015-10-19 00:34:33', '2015-10-19 00:34:33', 0, 9, '湖南省衡阳市衡东县', 2, '衡东县', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1842, '2015-10-19 00:34:34', '2015-10-19 00:34:34', 0, 10, '湖南省衡阳市祁东县', 2, '祁东县', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1843, '2015-10-19 00:34:35', '2015-10-19 00:34:35', 0, 11, '湖南省衡阳市耒阳市', 2, '耒阳市', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1844, '2015-10-19 00:34:36', '2015-10-19 00:34:36', 0, 12, '湖南省衡阳市常宁市', 2, '常宁市', ',1805,1832,', 1832); INSERT INTO `area` VALUES (1845, '2015-10-19 00:34:37', '2015-10-19 00:34:37', 0, 5, '湖南省邵阳市', 1, '邵阳市', ',1805,', 1805); INSERT INTO `area` VALUES (1846, '2015-10-19 00:34:38', '2015-10-19 00:34:38', 0, 1, '湖南省邵阳市双清区', 2, '双清区', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1847, '2015-10-19 00:34:39', '2015-10-19 00:34:39', 0, 2, '湖南省邵阳市大祥区', 2, '大祥区', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1848, '2015-10-19 00:34:40', '2015-10-19 00:34:40', 0, 3, '湖南省邵阳市北塔区', 2, '北塔区', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1849, '2015-10-19 00:34:41', '2015-10-19 00:34:41', 0, 4, '湖南省邵阳市邵东县', 2, '邵东县', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1850, '2015-10-19 00:34:42', '2015-10-19 00:34:42', 0, 5, '湖南省邵阳市新邵县', 2, '新邵县', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1851, '2015-10-19 00:34:43', '2015-10-19 00:34:43', 0, 6, '湖南省邵阳市邵阳县', 2, '邵阳县', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1852, '2015-10-19 00:34:44', '2015-10-19 00:34:44', 0, 7, '湖南省邵阳市隆回县', 2, '隆回县', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1853, '2015-10-19 00:34:45', '2015-10-19 00:34:45', 0, 8, '湖南省邵阳市洞口县', 2, '洞口县', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1854, '2015-10-19 00:34:46', '2015-10-19 00:34:46', 0, 9, '湖南省邵阳市绥宁县', 2, '绥宁县', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1855, '2015-10-19 00:34:47', '2015-10-19 00:34:47', 0, 10, '湖南省邵阳市新宁县', 2, '新宁县', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1856, '2015-10-19 00:34:48', '2015-10-19 00:34:48', 0, 11, '湖南省邵阳市城步苗族自治县', 2, '城步苗族自治县', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1857, '2015-10-19 00:34:49', '2015-10-19 00:34:49', 0, 12, '湖南省邵阳市武冈市', 2, '武冈市', ',1805,1845,', 1845); INSERT INTO `area` VALUES (1858, '2015-10-19 00:34:50', '2015-10-19 00:34:50', 0, 6, '湖南省岳阳市', 1, '岳阳市', ',1805,', 1805); INSERT INTO `area` VALUES (1859, '2015-10-19 00:34:51', '2015-10-19 00:34:51', 0, 1, '湖南省岳阳市岳阳楼区', 2, '岳阳楼区', ',1805,1858,', 1858); INSERT INTO `area` VALUES (1860, '2015-10-19 00:34:52', '2015-10-19 00:34:52', 0, 2, '湖南省岳阳市云溪区', 2, '云溪区', ',1805,1858,', 1858); INSERT INTO `area` VALUES (1861, '2015-10-19 00:34:53', '2015-10-19 00:34:53', 0, 3, '湖南省岳阳市君山区', 2, '君山区', ',1805,1858,', 1858); INSERT INTO `area` VALUES (1862, '2015-10-19 00:34:54', '2015-10-19 00:34:54', 0, 4, '湖南省岳阳市岳阳县', 2, '岳阳县', ',1805,1858,', 1858); INSERT INTO `area` VALUES (1863, '2015-10-19 00:34:55', '2015-10-19 00:34:55', 0, 5, '湖南省岳阳市华容县', 2, '华容县', ',1805,1858,', 1858); INSERT INTO `area` VALUES (1864, '2015-10-19 00:34:56', '2015-10-19 00:34:56', 0, 6, '湖南省岳阳市湘阴县', 2, '湘阴县', ',1805,1858,', 1858); INSERT INTO `area` VALUES (1865, '2015-10-19 00:34:57', '2015-10-19 00:34:57', 0, 7, '湖南省岳阳市平江县', 2, '平江县', ',1805,1858,', 1858); INSERT INTO `area` VALUES (1866, '2015-10-19 00:34:58', '2015-10-19 00:34:58', 0, 8, '湖南省岳阳市汨罗市', 2, '汨罗市', ',1805,1858,', 1858); INSERT INTO `area` VALUES (1867, '2015-10-19 00:34:59', '2015-10-19 00:34:59', 0, 9, '湖南省岳阳市临湘市', 2, '临湘市', ',1805,1858,', 1858); INSERT INTO `area` VALUES (1868, '2015-10-19 00:35:00', '2015-10-19 00:35:00', 0, 7, '湖南省常德市', 1, '常德市', ',1805,', 1805); INSERT INTO `area` VALUES (1869, '2015-10-19 00:35:01', '2015-10-19 00:35:01', 0, 1, '湖南省常德市武陵区', 2, '武陵区', ',1805,1868,', 1868); INSERT INTO `area` VALUES (1870, '2015-10-19 00:35:02', '2015-10-19 00:35:02', 0, 2, '湖南省常德市鼎城区', 2, '鼎城区', ',1805,1868,', 1868); INSERT INTO `area` VALUES (1871, '2015-10-19 00:35:03', '2015-10-19 00:35:03', 0, 3, '湖南省常德市安乡县', 2, '安乡县', ',1805,1868,', 1868); INSERT INTO `area` VALUES (1872, '2015-10-19 00:35:04', '2015-10-19 00:35:04', 0, 4, '湖南省常德市汉寿县', 2, '汉寿县', ',1805,1868,', 1868); INSERT INTO `area` VALUES (1873, '2015-10-19 00:35:05', '2015-10-19 00:35:05', 0, 5, '湖南省常德市澧县', 2, '澧县', ',1805,1868,', 1868); INSERT INTO `area` VALUES (1874, '2015-10-19 00:35:06', '2015-10-19 00:35:06', 0, 6, '湖南省常德市临澧县', 2, '临澧县', ',1805,1868,', 1868); INSERT INTO `area` VALUES (1875, '2015-10-19 00:35:07', '2015-10-19 00:35:07', 0, 7, '湖南省常德市桃源县', 2, '桃源县', ',1805,1868,', 1868); INSERT INTO `area` VALUES (1876, '2015-10-19 00:35:08', '2015-10-19 00:35:08', 0, 8, '湖南省常德市石门县', 2, '石门县', ',1805,1868,', 1868); INSERT INTO `area` VALUES (1877, '2015-10-19 00:35:09', '2015-10-19 00:35:09', 0, 9, '湖南省常德市津市市', 2, '津市市', ',1805,1868,', 1868); INSERT INTO `area` VALUES (1878, '2015-10-19 00:35:10', '2015-10-19 00:35:10', 0, 8, '湖南省张家界市', 1, '张家界市', ',1805,', 1805); INSERT INTO `area` VALUES (1879, '2015-10-19 00:35:11', '2015-10-19 00:35:11', 0, 1, '湖南省张家界市永定区', 2, '永定区', ',1805,1878,', 1878); INSERT INTO `area` VALUES (1880, '2015-10-19 00:35:12', '2015-10-19 00:35:12', 0, 2, '湖南省张家界市武陵源区', 2, '武陵源区', ',1805,1878,', 1878); INSERT INTO `area` VALUES (1881, '2015-10-19 00:35:13', '2015-10-19 00:35:13', 0, 3, '湖南省张家界市慈利县', 2, '慈利县', ',1805,1878,', 1878); INSERT INTO `area` VALUES (1882, '2015-10-19 00:35:14', '2015-10-19 00:35:14', 0, 4, '湖南省张家界市桑植县', 2, '桑植县', ',1805,1878,', 1878); INSERT INTO `area` VALUES (1883, '2015-10-19 00:35:15', '2015-10-19 00:35:15', 0, 9, '湖南省益阳市', 1, '益阳市', ',1805,', 1805); INSERT INTO `area` VALUES (1884, '2015-10-19 00:35:16', '2015-10-19 00:35:16', 0, 1, '湖南省益阳市资阳区', 2, '资阳区', ',1805,1883,', 1883); INSERT INTO `area` VALUES (1885, '2015-10-19 00:35:17', '2015-10-19 00:35:17', 0, 2, '湖南省益阳市赫山区', 2, '赫山区', ',1805,1883,', 1883); INSERT INTO `area` VALUES (1886, '2015-10-19 00:35:18', '2015-10-19 00:35:18', 0, 3, '湖南省益阳市南县', 2, '南县', ',1805,1883,', 1883); INSERT INTO `area` VALUES (1887, '2015-10-19 00:35:19', '2015-10-19 00:35:19', 0, 4, '湖南省益阳市桃江县', 2, '桃江县', ',1805,1883,', 1883); INSERT INTO `area` VALUES (1888, '2015-10-19 00:35:20', '2015-10-19 00:35:20', 0, 5, '湖南省益阳市安化县', 2, '安化县', ',1805,1883,', 1883); INSERT INTO `area` VALUES (1889, '2015-10-19 00:35:21', '2015-10-19 00:35:21', 0, 6, '湖南省益阳市沅江市', 2, '沅江市', ',1805,1883,', 1883); INSERT INTO `area` VALUES (1890, '2015-10-19 00:35:22', '2015-10-19 00:35:22', 0, 10, '湖南省郴州市', 1, '郴州市', ',1805,', 1805); INSERT INTO `area` VALUES (1891, '2015-10-19 00:35:23', '2015-10-19 00:35:23', 0, 1, '湖南省郴州市北湖区', 2, '北湖区', ',1805,1890,', 1890); INSERT INTO `area` VALUES (1892, '2015-10-19 00:35:24', '2015-10-19 00:35:24', 0, 2, '湖南省郴州市苏仙区', 2, '苏仙区', ',1805,1890,', 1890); INSERT INTO `area` VALUES (1893, '2015-10-19 00:35:25', '2015-10-19 00:35:25', 0, 3, '湖南省郴州市桂阳县', 2, '桂阳县', ',1805,1890,', 1890); INSERT INTO `area` VALUES (1894, '2015-10-19 00:35:26', '2015-10-19 00:35:26', 0, 4, '湖南省郴州市宜章县', 2, '宜章县', ',1805,1890,', 1890); INSERT INTO `area` VALUES (1895, '2015-10-19 00:35:27', '2015-10-19 00:35:27', 0, 5, '湖南省郴州市永兴县', 2, '永兴县', ',1805,1890,', 1890); INSERT INTO `area` VALUES (1896, '2015-10-19 00:35:28', '2015-10-19 00:35:28', 0, 6, '湖南省郴州市嘉禾县', 2, '嘉禾县', ',1805,1890,', 1890); INSERT INTO `area` VALUES (1897, '2015-10-19 00:35:29', '2015-10-19 00:35:29', 0, 7, '湖南省郴州市临武县', 2, '临武县', ',1805,1890,', 1890); INSERT INTO `area` VALUES (1898, '2015-10-19 00:35:30', '2015-10-19 00:35:30', 0, 8, '湖南省郴州市汝城县', 2, '汝城县', ',1805,1890,', 1890); INSERT INTO `area` VALUES (1899, '2015-10-19 00:35:31', '2015-10-19 00:35:31', 0, 9, '湖南省郴州市桂东县', 2, '桂东县', ',1805,1890,', 1890); INSERT INTO `area` VALUES (1900, '2015-10-19 00:35:32', '2015-10-19 00:35:32', 0, 10, '湖南省郴州市安仁县', 2, '安仁县', ',1805,1890,', 1890); INSERT INTO `area` VALUES (1901, '2015-10-19 00:35:33', '2015-10-19 00:35:33', 0, 11, '湖南省郴州市资兴市', 2, '资兴市', ',1805,1890,', 1890); INSERT INTO `area` VALUES (1902, '2015-10-19 00:35:34', '2015-10-19 00:35:34', 0, 11, '湖南省永州市', 1, '永州市', ',1805,', 1805); INSERT INTO `area` VALUES (1903, '2015-10-19 00:35:35', '2015-10-19 00:35:35', 0, 1, '湖南省永州市零陵区', 2, '零陵区', ',1805,1902,', 1902); INSERT INTO `area` VALUES (1904, '2015-10-19 00:35:36', '2015-10-19 00:35:36', 0, 2, '湖南省永州市冷水滩区', 2, '冷水滩区', ',1805,1902,', 1902); INSERT INTO `area` VALUES (1905, '2015-10-19 00:35:37', '2015-10-19 00:35:37', 0, 3, '湖南省永州市祁阳县', 2, '祁阳县', ',1805,1902,', 1902); INSERT INTO `area` VALUES (1906, '2015-10-19 00:35:38', '2015-10-19 00:35:38', 0, 4, '湖南省永州市东安县', 2, '东安县', ',1805,1902,', 1902); INSERT INTO `area` VALUES (1907, '2015-10-19 00:35:39', '2015-10-19 00:35:39', 0, 5, '湖南省永州市双牌县', 2, '双牌县', ',1805,1902,', 1902); INSERT INTO `area` VALUES (1908, '2015-10-19 00:35:40', '2015-10-19 00:35:40', 0, 6, '湖南省永州市道县', 2, '道县', ',1805,1902,', 1902); INSERT INTO `area` VALUES (1909, '2015-10-19 00:35:41', '2015-10-19 00:35:41', 0, 7, '湖南省永州市江永县', 2, '江永县', ',1805,1902,', 1902); INSERT INTO `area` VALUES (1910, '2015-10-19 00:35:42', '2015-10-19 00:35:42', 0, 8, '湖南省永州市宁远县', 2, '宁远县', ',1805,1902,', 1902); INSERT INTO `area` VALUES (1911, '2015-10-19 00:35:43', '2015-10-19 00:35:43', 0, 9, '湖南省永州市蓝山县', 2, '蓝山县', ',1805,1902,', 1902); INSERT INTO `area` VALUES (1912, '2015-10-19 00:35:44', '2015-10-19 00:35:44', 0, 10, '湖南省永州市新田县', 2, '新田县', ',1805,1902,', 1902); INSERT INTO `area` VALUES (1913, '2015-10-19 00:35:45', '2015-10-19 00:35:45', 0, 11, '湖南省永州市江华瑶族自治县', 2, '江华瑶族自治县', ',1805,1902,', 1902); INSERT INTO `area` VALUES (1914, '2015-10-19 00:35:46', '2015-10-19 00:35:46', 0, 12, '湖南省怀化市', 1, '怀化市', ',1805,', 1805); INSERT INTO `area` VALUES (1915, '2015-10-19 00:35:47', '2015-10-19 00:35:47', 0, 1, '湖南省怀化市鹤城区', 2, '鹤城区', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1916, '2015-10-19 00:35:48', '2015-10-19 00:35:48', 0, 2, '湖南省怀化市中方县', 2, '中方县', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1917, '2015-10-19 00:35:49', '2015-10-19 00:35:49', 0, 3, '湖南省怀化市沅陵县', 2, '沅陵县', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1918, '2015-10-19 00:35:50', '2015-10-19 00:35:50', 0, 4, '湖南省怀化市辰溪县', 2, '辰溪县', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1919, '2015-10-19 00:35:51', '2015-10-19 00:35:51', 0, 5, '湖南省怀化市溆浦县', 2, '溆浦县', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1920, '2015-10-19 00:35:52', '2015-10-19 00:35:52', 0, 6, '湖南省怀化市会同县', 2, '会同县', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1921, '2015-10-19 00:35:53', '2015-10-19 00:35:53', 0, 7, '湖南省怀化市麻阳苗族自治县', 2, '麻阳苗族自治县', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1922, '2015-10-19 00:35:54', '2015-10-19 00:35:54', 0, 8, '湖南省怀化市新晃侗族自治县', 2, '新晃侗族自治县', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1923, '2015-10-19 00:35:55', '2015-10-19 00:35:55', 0, 9, '湖南省怀化市芷江侗族自治县', 2, '芷江侗族自治县', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1924, '2015-10-19 00:35:56', '2015-10-19 00:35:56', 0, 10, '湖南省怀化市靖州苗族侗族自治县', 2, '靖州苗族侗族自治县', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1925, '2015-10-19 00:35:57', '2015-10-19 00:35:57', 0, 11, '湖南省怀化市通道侗族自治县', 2, '通道侗族自治县', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1926, '2015-10-19 00:35:58', '2015-10-19 00:35:58', 0, 12, '湖南省怀化市洪江市', 2, '洪江市', ',1805,1914,', 1914); INSERT INTO `area` VALUES (1927, '2015-10-19 00:35:59', '2015-10-19 00:35:59', 0, 13, '湖南省娄底市', 1, '娄底市', ',1805,', 1805); INSERT INTO `area` VALUES (1928, '2015-10-19 00:36:00', '2015-10-19 00:36:00', 0, 1, '湖南省娄底市娄星区', 2, '娄星区', ',1805,1927,', 1927); INSERT INTO `area` VALUES (1929, '2015-10-19 00:36:01', '2015-10-19 00:36:01', 0, 2, '湖南省娄底市双峰县', 2, '双峰县', ',1805,1927,', 1927); INSERT INTO `area` VALUES (1930, '2015-10-19 00:36:02', '2015-10-19 00:36:02', 0, 3, '湖南省娄底市新化县', 2, '新化县', ',1805,1927,', 1927); INSERT INTO `area` VALUES (1931, '2015-10-19 00:36:03', '2015-10-19 00:36:03', 0, 4, '湖南省娄底市冷水江市', 2, '冷水江市', ',1805,1927,', 1927); INSERT INTO `area` VALUES (1932, '2015-10-19 00:36:04', '2015-10-19 00:36:04', 0, 5, '湖南省娄底市涟源市', 2, '涟源市', ',1805,1927,', 1927); INSERT INTO `area` VALUES (1933, '2015-10-19 00:36:05', '2015-10-19 00:36:05', 0, 14, '湖南省湘西土家族苗族自治州', 1, '湘西土家族苗族自治州', ',1805,', 1805); INSERT INTO `area` VALUES (1934, '2015-10-19 00:36:06', '2015-10-19 00:36:06', 0, 1, '湖南省湘西土家族苗族自治州吉首市', 2, '吉首市', ',1805,1933,', 1933); INSERT INTO `area` VALUES (1935, '2015-10-19 00:36:07', '2015-10-19 00:36:07', 0, 2, '湖南省湘西土家族苗族自治州泸溪县', 2, '泸溪县', ',1805,1933,', 1933); INSERT INTO `area` VALUES (1936, '2015-10-19 00:36:08', '2015-10-19 00:36:08', 0, 3, '湖南省湘西土家族苗族自治州凤凰县', 2, '凤凰县', ',1805,1933,', 1933); INSERT INTO `area` VALUES (1937, '2015-10-19 00:36:09', '2015-10-19 00:36:09', 0, 4, '湖南省湘西土家族苗族自治州花垣县', 2, '花垣县', ',1805,1933,', 1933); INSERT INTO `area` VALUES (1938, '2015-10-19 00:36:10', '2015-10-19 00:36:10', 0, 5, '湖南省湘西土家族苗族自治州保靖县', 2, '保靖县', ',1805,1933,', 1933); INSERT INTO `area` VALUES (1939, '2015-10-19 00:36:11', '2015-10-19 00:36:11', 0, 6, '湖南省湘西土家族苗族自治州古丈县', 2, '古丈县', ',1805,1933,', 1933); INSERT INTO `area` VALUES (1940, '2015-10-19 00:36:12', '2015-10-19 00:36:12', 0, 7, '湖南省湘西土家族苗族自治州永顺县', 2, '永顺县', ',1805,1933,', 1933); INSERT INTO `area` VALUES (1941, '2015-10-19 00:36:13', '2015-10-19 00:36:13', 0, 8, '湖南省湘西土家族苗族自治州龙山县', 2, '龙山县', ',1805,1933,', 1933); INSERT INTO `area` VALUES (1942, '2015-10-19 00:36:14', '2015-10-19 00:36:14', 0, 19, '广东省', 0, '广东省', ',', NULL); INSERT INTO `area` VALUES (1943, '2015-10-19 00:36:15', '2015-10-19 00:36:15', 0, 1, '广东省广州市', 1, '广州市', ',1942,', 1942); INSERT INTO `area` VALUES (1944, '2015-10-19 00:36:16', '2015-10-19 00:36:16', 0, 1, '广东省广州市荔湾区', 2, '荔湾区', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1945, '2015-10-19 00:36:17', '2015-10-19 00:36:17', 0, 2, '广东省广州市越秀区', 2, '越秀区', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1946, '2015-10-19 00:36:18', '2015-10-19 00:36:18', 0, 3, '广东省广州市海珠区', 2, '海珠区', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1947, '2015-10-19 00:36:19', '2015-10-19 00:36:19', 0, 4, '广东省广州市天河区', 2, '天河区', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1948, '2015-10-19 00:36:20', '2015-10-19 00:36:20', 0, 5, '广东省广州市白云区', 2, '白云区', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1949, '2015-10-19 00:36:21', '2015-10-19 00:36:21', 0, 6, '广东省广州市黄埔区', 2, '黄埔区', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1950, '2015-10-19 00:36:22', '2015-10-19 00:36:22', 0, 7, '广东省广州市番禺区', 2, '番禺区', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1951, '2015-10-19 00:36:23', '2015-10-19 00:36:23', 0, 8, '广东省广州市花都区', 2, '花都区', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1952, '2015-10-19 00:36:24', '2015-10-19 00:36:24', 0, 9, '广东省广州市南沙区', 2, '南沙区', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1953, '2015-10-19 00:36:25', '2015-10-19 00:36:25', 0, 10, '广东省广州市萝岗区', 2, '萝岗区', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1954, '2015-10-19 00:36:26', '2015-10-19 00:36:26', 0, 11, '广东省广州市增城市', 2, '增城市', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1955, '2015-10-19 00:36:27', '2015-10-19 00:36:27', 0, 12, '广东省广州市从化市', 2, '从化市', ',1942,1943,', 1943); INSERT INTO `area` VALUES (1956, '2015-10-19 00:36:28', '2015-10-19 00:36:28', 0, 2, '广东省韶关市', 1, '韶关市', ',1942,', 1942); INSERT INTO `area` VALUES (1957, '2015-10-19 00:36:29', '2015-10-19 00:36:29', 0, 1, '广东省韶关市武江区', 2, '武江区', ',1942,1956,', 1956); INSERT INTO `area` VALUES (1958, '2015-10-19 00:36:30', '2015-10-19 00:36:30', 0, 2, '广东省韶关市浈江区', 2, '浈江区', ',1942,1956,', 1956); INSERT INTO `area` VALUES (1959, '2015-10-19 00:36:31', '2015-10-19 00:36:31', 0, 3, '广东省韶关市曲江区', 2, '曲江区', ',1942,1956,', 1956); INSERT INTO `area` VALUES (1960, '2015-10-19 00:36:32', '2015-10-19 00:36:32', 0, 4, '广东省韶关市始兴县', 2, '始兴县', ',1942,1956,', 1956); INSERT INTO `area` VALUES (1961, '2015-10-19 00:36:33', '2015-10-19 00:36:33', 0, 5, '广东省韶关市仁化县', 2, '仁化县', ',1942,1956,', 1956); INSERT INTO `area` VALUES (1962, '2015-10-19 00:36:34', '2015-10-19 00:36:34', 0, 6, '广东省韶关市翁源县', 2, '翁源县', ',1942,1956,', 1956); INSERT INTO `area` VALUES (1963, '2015-10-19 00:36:35', '2015-10-19 00:36:35', 0, 7, '广东省韶关市乳源瑶族自治县', 2, '乳源瑶族自治县', ',1942,1956,', 1956); INSERT INTO `area` VALUES (1964, '2015-10-19 00:36:36', '2015-10-19 00:36:36', 0, 8, '广东省韶关市新丰县', 2, '新丰县', ',1942,1956,', 1956); INSERT INTO `area` VALUES (1965, '2015-10-19 00:36:37', '2015-10-19 00:36:37', 0, 9, '广东省韶关市乐昌市', 2, '乐昌市', ',1942,1956,', 1956); INSERT INTO `area` VALUES (1966, '2015-10-19 00:36:38', '2015-10-19 00:36:38', 0, 10, '广东省韶关市南雄市', 2, '南雄市', ',1942,1956,', 1956); INSERT INTO `area` VALUES (1967, '2015-10-19 00:36:39', '2015-10-19 00:36:39', 0, 3, '广东省深圳市', 1, '深圳市', ',1942,', 1942); INSERT INTO `area` VALUES (1968, '2015-10-19 00:36:40', '2015-10-19 00:36:40', 0, 1, '广东省深圳市罗湖区', 2, '罗湖区', ',1942,1967,', 1967); INSERT INTO `area` VALUES (1969, '2015-10-19 00:36:41', '2015-10-19 00:36:41', 0, 2, '广东省深圳市福田区', 2, '福田区', ',1942,1967,', 1967); INSERT INTO `area` VALUES (1970, '2015-10-19 00:36:42', '2015-10-19 00:36:42', 0, 3, '广东省深圳市南山区', 2, '南山区', ',1942,1967,', 1967); INSERT INTO `area` VALUES (1971, '2015-10-19 00:36:43', '2015-10-19 00:36:43', 0, 4, '广东省深圳市宝安区', 2, '宝安区', ',1942,1967,', 1967); INSERT INTO `area` VALUES (1972, '2015-10-19 00:36:44', '2015-10-19 00:36:44', 0, 5, '广东省深圳市龙岗区', 2, '龙岗区', ',1942,1967,', 1967); INSERT INTO `area` VALUES (1973, '2015-10-19 00:36:45', '2015-10-19 00:36:45', 0, 6, '广东省深圳市盐田区', 2, '盐田区', ',1942,1967,', 1967); INSERT INTO `area` VALUES (1974, '2015-10-19 00:36:46', '2015-10-19 00:36:46', 0, 4, '广东省珠海市', 1, '珠海市', ',1942,', 1942); INSERT INTO `area` VALUES (1975, '2015-10-19 00:36:47', '2015-10-19 00:36:47', 0, 1, '广东省珠海市香洲区', 2, '香洲区', ',1942,1974,', 1974); INSERT INTO `area` VALUES (1976, '2015-10-19 00:36:48', '2015-10-19 00:36:48', 0, 2, '广东省珠海市斗门区', 2, '斗门区', ',1942,1974,', 1974); INSERT INTO `area` VALUES (1977, '2015-10-19 00:36:49', '2015-10-19 00:36:49', 0, 3, '广东省珠海市金湾区', 2, '金湾区', ',1942,1974,', 1974); INSERT INTO `area` VALUES (1978, '2015-10-19 00:36:50', '2015-10-19 00:36:50', 0, 5, '广东省汕头市', 1, '汕头市', ',1942,', 1942); INSERT INTO `area` VALUES (1979, '2015-10-19 00:36:51', '2015-10-19 00:36:51', 0, 1, '广东省汕头市龙湖区', 2, '龙湖区', ',1942,1978,', 1978); INSERT INTO `area` VALUES (1980, '2015-10-19 00:36:52', '2015-10-19 00:36:52', 0, 2, '广东省汕头市金平区', 2, '金平区', ',1942,1978,', 1978); INSERT INTO `area` VALUES (1981, '2015-10-19 00:36:53', '2015-10-19 00:36:53', 0, 3, '广东省汕头市濠江区', 2, '濠江区', ',1942,1978,', 1978); INSERT INTO `area` VALUES (1982, '2015-10-19 00:36:54', '2015-10-19 00:36:54', 0, 4, '广东省汕头市潮阳区', 2, '潮阳区', ',1942,1978,', 1978); INSERT INTO `area` VALUES (1983, '2015-10-19 00:36:55', '2015-10-19 00:36:55', 0, 5, '广东省汕头市潮南区', 2, '潮南区', ',1942,1978,', 1978); INSERT INTO `area` VALUES (1984, '2015-10-19 00:36:56', '2015-10-19 00:36:56', 0, 6, '广东省汕头市澄海区', 2, '澄海区', ',1942,1978,', 1978); INSERT INTO `area` VALUES (1985, '2015-10-19 00:36:57', '2015-10-19 00:36:57', 0, 7, '广东省汕头市南澳县', 2, '南澳县', ',1942,1978,', 1978); INSERT INTO `area` VALUES (1986, '2015-10-19 00:36:58', '2015-10-19 00:36:58', 0, 6, '广东省佛山市', 1, '佛山市', ',1942,', 1942); INSERT INTO `area` VALUES (1987, '2015-10-19 00:36:59', '2015-10-19 00:36:59', 0, 1, '广东省佛山市禅城区', 2, '禅城区', ',1942,1986,', 1986); INSERT INTO `area` VALUES (1988, '2015-10-19 00:37:00', '2015-10-19 00:37:00', 0, 2, '广东省佛山市南海区', 2, '南海区', ',1942,1986,', 1986); INSERT INTO `area` VALUES (1989, '2015-10-19 00:37:01', '2015-10-19 00:37:01', 0, 3, '广东省佛山市顺德区', 2, '顺德区', ',1942,1986,', 1986); INSERT INTO `area` VALUES (1990, '2015-10-19 00:37:02', '2015-10-19 00:37:02', 0, 4, '广东省佛山市三水区', 2, '三水区', ',1942,1986,', 1986); INSERT INTO `area` VALUES (1991, '2015-10-19 00:37:03', '2015-10-19 00:37:03', 0, 5, '广东省佛山市高明区', 2, '高明区', ',1942,1986,', 1986); INSERT INTO `area` VALUES (1992, '2015-10-19 00:37:04', '2015-10-19 00:37:04', 0, 7, '广东省江门市', 1, '江门市', ',1942,', 1942); INSERT INTO `area` VALUES (1993, '2015-10-19 00:37:05', '2015-10-19 00:37:05', 0, 1, '广东省江门市蓬江区', 2, '蓬江区', ',1942,1992,', 1992); INSERT INTO `area` VALUES (1994, '2015-10-19 00:37:06', '2015-10-19 00:37:06', 0, 2, '广东省江门市江海区', 2, '江海区', ',1942,1992,', 1992); INSERT INTO `area` VALUES (1995, '2015-10-19 00:37:07', '2015-10-19 00:37:07', 0, 3, '广东省江门市新会区', 2, '新会区', ',1942,1992,', 1992); INSERT INTO `area` VALUES (1996, '2015-10-19 00:37:08', '2015-10-19 00:37:08', 0, 4, '广东省江门市台山市', 2, '台山市', ',1942,1992,', 1992); INSERT INTO `area` VALUES (1997, '2015-10-19 00:37:09', '2015-10-19 00:37:09', 0, 5, '广东省江门市开平市', 2, '开平市', ',1942,1992,', 1992); INSERT INTO `area` VALUES (1998, '2015-10-19 00:37:10', '2015-10-19 00:37:10', 0, 6, '广东省江门市鹤山市', 2, '鹤山市', ',1942,1992,', 1992); INSERT INTO `area` VALUES (1999, '2015-10-19 00:37:11', '2015-10-19 00:37:11', 0, 7, '广东省江门市恩平市', 2, '恩平市', ',1942,1992,', 1992); INSERT INTO `area` VALUES (2000, '2015-10-19 00:37:12', '2015-10-19 00:37:12', 0, 8, '广东省湛江市', 1, '湛江市', ',1942,', 1942); INSERT INTO `area` VALUES (2001, '2015-10-19 00:37:13', '2015-10-19 00:37:13', 0, 1, '广东省湛江市赤坎区', 2, '赤坎区', ',1942,2000,', 2000); INSERT INTO `area` VALUES (2002, '2015-10-19 00:37:14', '2015-10-19 00:37:14', 0, 2, '广东省湛江市霞山区', 2, '霞山区', ',1942,2000,', 2000); INSERT INTO `area` VALUES (2003, '2015-10-19 00:37:15', '2015-10-19 00:37:15', 0, 3, '广东省湛江市坡头区', 2, '坡头区', ',1942,2000,', 2000); INSERT INTO `area` VALUES (2004, '2015-10-19 00:37:16', '2015-10-19 00:37:16', 0, 4, '广东省湛江市麻章区', 2, '麻章区', ',1942,2000,', 2000); INSERT INTO `area` VALUES (2005, '2015-10-19 00:37:17', '2015-10-19 00:37:17', 0, 5, '广东省湛江市遂溪县', 2, '遂溪县', ',1942,2000,', 2000); INSERT INTO `area` VALUES (2006, '2015-10-19 00:37:18', '2015-10-19 00:37:18', 0, 6, '广东省湛江市徐闻县', 2, '徐闻县', ',1942,2000,', 2000); INSERT INTO `area` VALUES (2007, '2015-10-19 00:37:19', '2015-10-19 00:37:19', 0, 7, '广东省湛江市廉江市', 2, '廉江市', ',1942,2000,', 2000); INSERT INTO `area` VALUES (2008, '2015-10-19 00:37:20', '2015-10-19 00:37:20', 0, 8, '广东省湛江市雷州市', 2, '雷州市', ',1942,2000,', 2000); INSERT INTO `area` VALUES (2009, '2015-10-19 00:37:21', '2015-10-19 00:37:21', 0, 9, '广东省湛江市吴川市', 2, '吴川市', ',1942,2000,', 2000); INSERT INTO `area` VALUES (2010, '2015-10-19 00:37:22', '2015-10-19 00:37:22', 0, 9, '广东省茂名市', 1, '茂名市', ',1942,', 1942); INSERT INTO `area` VALUES (2011, '2015-10-19 00:37:23', '2015-10-19 00:37:23', 0, 1, '广东省茂名市茂南区', 2, '茂南区', ',1942,2010,', 2010); INSERT INTO `area` VALUES (2012, '2015-10-19 00:37:24', '2015-10-19 00:37:24', 0, 2, '广东省茂名市茂港区', 2, '茂港区', ',1942,2010,', 2010); INSERT INTO `area` VALUES (2013, '2015-10-19 00:37:25', '2015-10-19 00:37:25', 0, 3, '广东省茂名市电白县', 2, '电白县', ',1942,2010,', 2010); INSERT INTO `area` VALUES (2014, '2015-10-19 00:37:26', '2015-10-19 00:37:26', 0, 4, '广东省茂名市高州市', 2, '高州市', ',1942,2010,', 2010); INSERT INTO `area` VALUES (2015, '2015-10-19 00:37:27', '2015-10-19 00:37:27', 0, 5, '广东省茂名市化州市', 2, '化州市', ',1942,2010,', 2010); INSERT INTO `area` VALUES (2016, '2015-10-19 00:37:28', '2015-10-19 00:37:28', 0, 6, '广东省茂名市信宜市', 2, '信宜市', ',1942,2010,', 2010); INSERT INTO `area` VALUES (2017, '2015-10-19 00:37:29', '2015-10-19 00:37:29', 0, 10, '广东省肇庆市', 1, '肇庆市', ',1942,', 1942); INSERT INTO `area` VALUES (2018, '2015-10-19 00:37:30', '2015-10-19 00:37:30', 0, 1, '广东省肇庆市端州区', 2, '端州区', ',1942,2017,', 2017); INSERT INTO `area` VALUES (2019, '2015-10-19 00:37:31', '2015-10-19 00:37:31', 0, 2, '广东省肇庆市鼎湖区', 2, '鼎湖区', ',1942,2017,', 2017); INSERT INTO `area` VALUES (2020, '2015-10-19 00:37:32', '2015-10-19 00:37:32', 0, 3, '广东省肇庆市广宁县', 2, '广宁县', ',1942,2017,', 2017); INSERT INTO `area` VALUES (2021, '2015-10-19 00:37:33', '2015-10-19 00:37:33', 0, 4, '广东省肇庆市怀集县', 2, '怀集县', ',1942,2017,', 2017); INSERT INTO `area` VALUES (2022, '2015-10-19 00:37:34', '2015-10-19 00:37:34', 0, 5, '广东省肇庆市封开县', 2, '封开县', ',1942,2017,', 2017); INSERT INTO `area` VALUES (2023, '2015-10-19 00:37:35', '2015-10-19 00:37:35', 0, 6, '广东省肇庆市德庆县', 2, '德庆县', ',1942,2017,', 2017); INSERT INTO `area` VALUES (2024, '2015-10-19 00:37:36', '2015-10-19 00:37:36', 0, 7, '广东省肇庆市高要市', 2, '高要市', ',1942,2017,', 2017); INSERT INTO `area` VALUES (2025, '2015-10-19 00:37:37', '2015-10-19 00:37:37', 0, 8, '广东省肇庆市四会市', 2, '四会市', ',1942,2017,', 2017); INSERT INTO `area` VALUES (2026, '2015-10-19 00:37:38', '2015-10-19 00:37:38', 0, 11, '广东省惠州市', 1, '惠州市', ',1942,', 1942); INSERT INTO `area` VALUES (2027, '2015-10-19 00:37:39', '2015-10-19 00:37:39', 0, 1, '广东省惠州市惠城区', 2, '惠城区', ',1942,2026,', 2026); INSERT INTO `area` VALUES (2028, '2015-10-19 00:37:40', '2015-10-19 00:37:40', 0, 2, '广东省惠州市惠阳区', 2, '惠阳区', ',1942,2026,', 2026); INSERT INTO `area` VALUES (2029, '2015-10-19 00:37:41', '2015-10-19 00:37:41', 0, 3, '广东省惠州市博罗县', 2, '博罗县', ',1942,2026,', 2026); INSERT INTO `area` VALUES (2030, '2015-10-19 00:37:42', '2015-10-19 00:37:42', 0, 4, '广东省惠州市惠东县', 2, '惠东县', ',1942,2026,', 2026); INSERT INTO `area` VALUES (2031, '2015-10-19 00:37:43', '2015-10-19 00:37:43', 0, 5, '广东省惠州市龙门县', 2, '龙门县', ',1942,2026,', 2026); INSERT INTO `area` VALUES (2032, '2015-10-19 00:37:44', '2015-10-19 00:37:44', 0, 12, '广东省梅州市', 1, '梅州市', ',1942,', 1942); INSERT INTO `area` VALUES (2033, '2015-10-19 00:37:45', '2015-10-19 00:37:45', 0, 1, '广东省梅州市梅江区', 2, '梅江区', ',1942,2032,', 2032); INSERT INTO `area` VALUES (2034, '2015-10-19 00:37:46', '2015-10-19 00:37:46', 0, 2, '广东省梅州市梅县', 2, '梅县', ',1942,2032,', 2032); INSERT INTO `area` VALUES (2035, '2015-10-19 00:37:47', '2015-10-19 00:37:47', 0, 3, '广东省梅州市大埔县', 2, '大埔县', ',1942,2032,', 2032); INSERT INTO `area` VALUES (2036, '2015-10-19 00:37:48', '2015-10-19 00:37:48', 0, 4, '广东省梅州市丰顺县', 2, '丰顺县', ',1942,2032,', 2032); INSERT INTO `area` VALUES (2037, '2015-10-19 00:37:49', '2015-10-19 00:37:49', 0, 5, '广东省梅州市五华县', 2, '五华县', ',1942,2032,', 2032); INSERT INTO `area` VALUES (2038, '2015-10-19 00:37:50', '2015-10-19 00:37:50', 0, 6, '广东省梅州市平远县', 2, '平远县', ',1942,2032,', 2032); INSERT INTO `area` VALUES (2039, '2015-10-19 00:37:51', '2015-10-19 00:37:51', 0, 7, '广东省梅州市蕉岭县', 2, '蕉岭县', ',1942,2032,', 2032); INSERT INTO `area` VALUES (2040, '2015-10-19 00:37:52', '2015-10-19 00:37:52', 0, 8, '广东省梅州市兴宁市', 2, '兴宁市', ',1942,2032,', 2032); INSERT INTO `area` VALUES (2041, '2015-10-19 00:37:53', '2015-10-19 00:37:53', 0, 13, '广东省汕尾市', 1, '汕尾市', ',1942,', 1942); INSERT INTO `area` VALUES (2042, '2015-10-19 00:37:54', '2015-10-19 00:37:54', 0, 1, '广东省汕尾市城区', 2, '城区', ',1942,2041,', 2041); INSERT INTO `area` VALUES (2043, '2015-10-19 00:37:55', '2015-10-19 00:37:55', 0, 2, '广东省汕尾市海丰县', 2, '海丰县', ',1942,2041,', 2041); INSERT INTO `area` VALUES (2044, '2015-10-19 00:37:56', '2015-10-19 00:37:56', 0, 3, '广东省汕尾市陆河县', 2, '陆河县', ',1942,2041,', 2041); INSERT INTO `area` VALUES (2045, '2015-10-19 00:37:57', '2015-10-19 00:37:57', 0, 4, '广东省汕尾市陆丰市', 2, '陆丰市', ',1942,2041,', 2041); INSERT INTO `area` VALUES (2046, '2015-10-19 00:37:58', '2015-10-19 00:37:58', 0, 14, '广东省河源市', 1, '河源市', ',1942,', 1942); INSERT INTO `area` VALUES (2047, '2015-10-19 00:37:59', '2015-10-19 00:37:59', 0, 1, '广东省河源市源城区', 2, '源城区', ',1942,2046,', 2046); INSERT INTO `area` VALUES (2048, '2015-10-19 00:38:00', '2015-10-19 00:38:00', 0, 2, '广东省河源市紫金县', 2, '紫金县', ',1942,2046,', 2046); INSERT INTO `area` VALUES (2049, '2015-10-19 00:38:01', '2015-10-19 00:38:01', 0, 3, '广东省河源市龙川县', 2, '龙川县', ',1942,2046,', 2046); INSERT INTO `area` VALUES (2050, '2015-10-19 00:38:02', '2015-10-19 00:38:02', 0, 4, '广东省河源市连平县', 2, '连平县', ',1942,2046,', 2046); INSERT INTO `area` VALUES (2051, '2015-10-19 00:38:03', '2015-10-19 00:38:03', 0, 5, '广东省河源市和平县', 2, '和平县', ',1942,2046,', 2046); INSERT INTO `area` VALUES (2052, '2015-10-19 00:38:04', '2015-10-19 00:38:04', 0, 6, '广东省河源市东源县', 2, '东源县', ',1942,2046,', 2046); INSERT INTO `area` VALUES (2053, '2015-10-19 00:38:05', '2015-10-19 00:38:05', 0, 15, '广东省阳江市', 1, '阳江市', ',1942,', 1942); INSERT INTO `area` VALUES (2054, '2015-10-19 00:38:06', '2015-10-19 00:38:06', 0, 1, '广东省阳江市江城区', 2, '江城区', ',1942,2053,', 2053); INSERT INTO `area` VALUES (2055, '2015-10-19 00:38:07', '2015-10-19 00:38:07', 0, 2, '广东省阳江市阳西县', 2, '阳西县', ',1942,2053,', 2053); INSERT INTO `area` VALUES (2056, '2015-10-19 00:38:08', '2015-10-19 00:38:08', 0, 3, '广东省阳江市阳东县', 2, '阳东县', ',1942,2053,', 2053); INSERT INTO `area` VALUES (2057, '2015-10-19 00:38:09', '2015-10-19 00:38:09', 0, 4, '广东省阳江市阳春市', 2, '阳春市', ',1942,2053,', 2053); INSERT INTO `area` VALUES (2058, '2015-10-19 00:38:10', '2015-10-19 00:38:10', 0, 16, '广东省清远市', 1, '清远市', ',1942,', 1942); INSERT INTO `area` VALUES (2059, '2015-10-19 00:38:11', '2015-10-19 00:38:11', 0, 1, '广东省清远市清城区', 2, '清城区', ',1942,2058,', 2058); INSERT INTO `area` VALUES (2060, '2015-10-19 00:38:12', '2015-10-19 00:38:12', 0, 2, '广东省清远市清新区', 2, '清新区', ',1942,2058,', 2058); INSERT INTO `area` VALUES (2061, '2015-10-19 00:38:13', '2015-10-19 00:38:13', 0, 3, '广东省清远市佛冈县', 2, '佛冈县', ',1942,2058,', 2058); INSERT INTO `area` VALUES (2062, '2015-10-19 00:38:14', '2015-10-19 00:38:14', 0, 4, '广东省清远市阳山县', 2, '阳山县', ',1942,2058,', 2058); INSERT INTO `area` VALUES (2063, '2015-10-19 00:38:15', '2015-10-19 00:38:15', 0, 5, '广东省清远市连山壮族瑶族自治县', 2, '连山壮族瑶族自治县', ',1942,2058,', 2058); INSERT INTO `area` VALUES (2064, '2015-10-19 00:38:16', '2015-10-19 00:38:16', 0, 6, '广东省清远市连南瑶族自治县', 2, '连南瑶族自治县', ',1942,2058,', 2058); INSERT INTO `area` VALUES (2065, '2015-10-19 00:38:17', '2015-10-19 00:38:17', 0, 7, '广东省清远市英德市', 2, '英德市', ',1942,2058,', 2058); INSERT INTO `area` VALUES (2066, '2015-10-19 00:38:18', '2015-10-19 00:38:18', 0, 8, '广东省清远市连州市', 2, '连州市', ',1942,2058,', 2058); INSERT INTO `area` VALUES (2067, '2015-10-19 00:38:19', '2015-10-19 00:38:19', 0, 17, '广东省东莞市', 1, '东莞市', ',1942,', 1942); INSERT INTO `area` VALUES (2068, '2015-10-19 00:38:20', '2015-10-19 00:38:20', 0, 18, '广东省中山市', 1, '中山市', ',1942,', 1942); INSERT INTO `area` VALUES (2069, '2015-10-19 00:38:21', '2015-10-19 00:38:21', 0, 19, '广东省潮州市', 1, '潮州市', ',1942,', 1942); INSERT INTO `area` VALUES (2070, '2015-10-19 00:38:22', '2015-10-19 00:38:22', 0, 1, '广东省潮州市湘桥区', 2, '湘桥区', ',1942,2069,', 2069); INSERT INTO `area` VALUES (2071, '2015-10-19 00:38:23', '2015-10-19 00:38:23', 0, 2, '广东省潮州市潮安区', 2, '潮安区', ',1942,2069,', 2069); INSERT INTO `area` VALUES (2072, '2015-10-19 00:38:24', '2015-10-19 00:38:24', 0, 3, '广东省潮州市饶平县', 2, '饶平县', ',1942,2069,', 2069); INSERT INTO `area` VALUES (2073, '2015-10-19 00:38:25', '2015-10-19 00:38:25', 0, 20, '广东省揭阳市', 1, '揭阳市', ',1942,', 1942); INSERT INTO `area` VALUES (2074, '2015-10-19 00:38:26', '2015-10-19 00:38:26', 0, 1, '广东省揭阳市榕城区', 2, '榕城区', ',1942,2073,', 2073); INSERT INTO `area` VALUES (2075, '2015-10-19 00:38:27', '2015-10-19 00:38:27', 0, 2, '广东省揭阳市揭东区', 2, '揭东区', ',1942,2073,', 2073); INSERT INTO `area` VALUES (2076, '2015-10-19 00:38:28', '2015-10-19 00:38:28', 0, 3, '广东省揭阳市揭西县', 2, '揭西县', ',1942,2073,', 2073); INSERT INTO `area` VALUES (2077, '2015-10-19 00:38:29', '2015-10-19 00:38:29', 0, 4, '广东省揭阳市惠来县', 2, '惠来县', ',1942,2073,', 2073); INSERT INTO `area` VALUES (2078, '2015-10-19 00:38:30', '2015-10-19 00:38:30', 0, 5, '广东省揭阳市普宁市', 2, '普宁市', ',1942,2073,', 2073); INSERT INTO `area` VALUES (2079, '2015-10-19 00:38:31', '2015-10-19 00:38:31', 0, 21, '广东省云浮市', 1, '云浮市', ',1942,', 1942); INSERT INTO `area` VALUES (2080, '2015-10-19 00:38:32', '2015-10-19 00:38:32', 0, 1, '广东省云浮市云城区', 2, '云城区', ',1942,2079,', 2079); INSERT INTO `area` VALUES (2081, '2015-10-19 00:38:33', '2015-10-19 00:38:33', 0, 2, '广东省云浮市新兴县', 2, '新兴县', ',1942,2079,', 2079); INSERT INTO `area` VALUES (2082, '2015-10-19 00:38:34', '2015-10-19 00:38:34', 0, 3, '广东省云浮市郁南县', 2, '郁南县', ',1942,2079,', 2079); INSERT INTO `area` VALUES (2083, '2015-10-19 00:38:35', '2015-10-19 00:38:35', 0, 4, '广东省云浮市云安县', 2, '云安县', ',1942,2079,', 2079); INSERT INTO `area` VALUES (2084, '2015-10-19 00:38:36', '2015-10-19 00:38:36', 0, 5, '广东省云浮市罗定市', 2, '罗定市', ',1942,2079,', 2079); INSERT INTO `area` VALUES (2085, '2015-10-19 00:38:37', '2015-10-19 00:38:37', 0, 20, '广西壮族自治区', 0, '广西壮族自治区', ',', NULL); INSERT INTO `area` VALUES (2086, '2015-10-19 00:38:38', '2015-10-19 00:38:38', 0, 1, '广西壮族自治区南宁市', 1, '南宁市', ',2085,', 2085); INSERT INTO `area` VALUES (2087, '2015-10-19 00:38:39', '2015-10-19 00:38:39', 0, 1, '广西壮族自治区南宁市兴宁区', 2, '兴宁区', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2088, '2015-10-19 00:38:40', '2015-10-19 00:38:40', 0, 2, '广西壮族自治区南宁市青秀区', 2, '青秀区', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2089, '2015-10-19 00:38:41', '2015-10-19 00:38:41', 0, 3, '广西壮族自治区南宁市江南区', 2, '江南区', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2090, '2015-10-19 00:38:42', '2015-10-19 00:38:42', 0, 4, '广西壮族自治区南宁市西乡塘区', 2, '西乡塘区', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2091, '2015-10-19 00:38:43', '2015-10-19 00:38:43', 0, 5, '广西壮族自治区南宁市良庆区', 2, '良庆区', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2092, '2015-10-19 00:38:44', '2015-10-19 00:38:44', 0, 6, '广西壮族自治区南宁市邕宁区', 2, '邕宁区', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2093, '2015-10-19 00:38:45', '2015-10-19 00:38:45', 0, 7, '广西壮族自治区南宁市武鸣县', 2, '武鸣县', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2094, '2015-10-19 00:38:46', '2015-10-19 00:38:46', 0, 8, '广西壮族自治区南宁市隆安县', 2, '隆安县', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2095, '2015-10-19 00:38:47', '2015-10-19 00:38:47', 0, 9, '广西壮族自治区南宁市马山县', 2, '马山县', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2096, '2015-10-19 00:38:48', '2015-10-19 00:38:48', 0, 10, '广西壮族自治区南宁市上林县', 2, '上林县', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2097, '2015-10-19 00:38:49', '2015-10-19 00:38:49', 0, 11, '广西壮族自治区南宁市宾阳县', 2, '宾阳县', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2098, '2015-10-19 00:38:50', '2015-10-19 00:38:50', 0, 12, '广西壮族自治区南宁市横县', 2, '横县', ',2085,2086,', 2086); INSERT INTO `area` VALUES (2099, '2015-10-19 00:38:51', '2015-10-19 00:38:51', 0, 2, '广西壮族自治区柳州市', 1, '柳州市', ',2085,', 2085); INSERT INTO `area` VALUES (2100, '2015-10-19 00:38:52', '2015-10-19 00:38:52', 0, 1, '广西壮族自治区柳州市城中区', 2, '城中区', ',2085,2099,', 2099); INSERT INTO `area` VALUES (2101, '2015-10-19 00:38:53', '2015-10-19 00:38:53', 0, 2, '广西壮族自治区柳州市鱼峰区', 2, '鱼峰区', ',2085,2099,', 2099); INSERT INTO `area` VALUES (2102, '2015-10-19 00:38:54', '2015-10-19 00:38:54', 0, 3, '广西壮族自治区柳州市柳南区', 2, '柳南区', ',2085,2099,', 2099); INSERT INTO `area` VALUES (2103, '2015-10-19 00:38:55', '2015-10-19 00:38:55', 0, 4, '广西壮族自治区柳州市柳北区', 2, '柳北区', ',2085,2099,', 2099); INSERT INTO `area` VALUES (2104, '2015-10-19 00:38:56', '2015-10-19 00:38:56', 0, 5, '广西壮族自治区柳州市柳江县', 2, '柳江县', ',2085,2099,', 2099); INSERT INTO `area` VALUES (2105, '2015-10-19 00:38:57', '2015-10-19 00:38:57', 0, 6, '广西壮族自治区柳州市柳城县', 2, '柳城县', ',2085,2099,', 2099); INSERT INTO `area` VALUES (2106, '2015-10-19 00:38:58', '2015-10-19 00:38:58', 0, 7, '广西壮族自治区柳州市鹿寨县', 2, '鹿寨县', ',2085,2099,', 2099); INSERT INTO `area` VALUES (2107, '2015-10-19 00:38:59', '2015-10-19 00:38:59', 0, 8, '广西壮族自治区柳州市融安县', 2, '融安县', ',2085,2099,', 2099); INSERT INTO `area` VALUES (2108, '2015-10-19 00:39:00', '2015-10-19 00:39:00', 0, 9, '广西壮族自治区柳州市融水苗族自治县', 2, '融水苗族自治县', ',2085,2099,', 2099); INSERT INTO `area` VALUES (2109, '2015-10-19 00:39:01', '2015-10-19 00:39:01', 0, 10, '广西壮族自治区柳州市三江侗族自治县', 2, '三江侗族自治县', ',2085,2099,', 2099); INSERT INTO `area` VALUES (2110, '2015-10-19 00:39:02', '2015-10-19 00:39:02', 0, 3, '广西壮族自治区桂林市', 1, '桂林市', ',2085,', 2085); INSERT INTO `area` VALUES (2111, '2015-10-19 00:39:03', '2015-10-19 00:39:03', 0, 1, '广西壮族自治区桂林市秀峰区', 2, '秀峰区', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2112, '2015-10-19 00:39:04', '2015-10-19 00:39:04', 0, 2, '广西壮族自治区桂林市叠彩区', 2, '叠彩区', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2113, '2015-10-19 00:39:05', '2015-10-19 00:39:05', 0, 3, '广西壮族自治区桂林市象山区', 2, '象山区', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2114, '2015-10-19 00:39:06', '2015-10-19 00:39:06', 0, 4, '广西壮族自治区桂林市七星区', 2, '七星区', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2115, '2015-10-19 00:39:07', '2015-10-19 00:39:07', 0, 5, '广西壮族自治区桂林市雁山区', 2, '雁山区', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2116, '2015-10-19 00:39:08', '2015-10-19 00:39:08', 0, 6, '广西壮族自治区桂林市临桂区', 2, '临桂区', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2117, '2015-10-19 00:39:09', '2015-10-19 00:39:09', 0, 7, '广西壮族自治区桂林市阳朔县', 2, '阳朔县', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2118, '2015-10-19 00:39:10', '2015-10-19 00:39:10', 0, 8, '广西壮族自治区桂林市灵川县', 2, '灵川县', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2119, '2015-10-19 00:39:11', '2015-10-19 00:39:11', 0, 9, '广西壮族自治区桂林市全州县', 2, '全州县', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2120, '2015-10-19 00:39:12', '2015-10-19 00:39:12', 0, 10, '广西壮族自治区桂林市兴安县', 2, '兴安县', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2121, '2015-10-19 00:39:13', '2015-10-19 00:39:13', 0, 11, '广西壮族自治区桂林市永福县', 2, '永福县', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2122, '2015-10-19 00:39:14', '2015-10-19 00:39:14', 0, 12, '广西壮族自治区桂林市灌阳县', 2, '灌阳县', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2123, '2015-10-19 00:39:15', '2015-10-19 00:39:15', 0, 13, '广西壮族自治区桂林市龙胜各族自治县', 2, '龙胜各族自治县', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2124, '2015-10-19 00:39:16', '2015-10-19 00:39:16', 0, 14, '广西壮族自治区桂林市资源县', 2, '资源县', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2125, '2015-10-19 00:39:17', '2015-10-19 00:39:17', 0, 15, '广西壮族自治区桂林市平乐县', 2, '平乐县', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2126, '2015-10-19 00:39:18', '2015-10-19 00:39:18', 0, 16, '广西壮族自治区桂林市荔浦县', 2, '荔浦县', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2127, '2015-10-19 00:39:19', '2015-10-19 00:39:19', 0, 17, '广西壮族自治区桂林市恭城瑶族自治县', 2, '恭城瑶族自治县', ',2085,2110,', 2110); INSERT INTO `area` VALUES (2128, '2015-10-19 00:39:20', '2015-10-19 00:39:20', 0, 4, '广西壮族自治区梧州市', 1, '梧州市', ',2085,', 2085); INSERT INTO `area` VALUES (2129, '2015-10-19 00:39:21', '2015-10-19 00:39:21', 0, 1, '广西壮族自治区梧州市万秀区', 2, '万秀区', ',2085,2128,', 2128); INSERT INTO `area` VALUES (2130, '2015-10-19 00:39:22', '2015-10-19 00:39:22', 0, 2, '广西壮族自治区梧州市长洲区', 2, '长洲区', ',2085,2128,', 2128); INSERT INTO `area` VALUES (2131, '2015-10-19 00:39:23', '2015-10-19 00:39:23', 0, 3, '广西壮族自治区梧州市龙圩区', 2, '龙圩区', ',2085,2128,', 2128); INSERT INTO `area` VALUES (2132, '2015-10-19 00:39:24', '2015-10-19 00:39:24', 0, 4, '广西壮族自治区梧州市苍梧县', 2, '苍梧县', ',2085,2128,', 2128); INSERT INTO `area` VALUES (2133, '2015-10-19 00:39:25', '2015-10-19 00:39:25', 0, 5, '广西壮族自治区梧州市藤县', 2, '藤县', ',2085,2128,', 2128); INSERT INTO `area` VALUES (2134, '2015-10-19 00:39:26', '2015-10-19 00:39:26', 0, 6, '广西壮族自治区梧州市蒙山县', 2, '蒙山县', ',2085,2128,', 2128); INSERT INTO `area` VALUES (2135, '2015-10-19 00:39:27', '2015-10-19 00:39:27', 0, 7, '广西壮族自治区梧州市岑溪市', 2, '岑溪市', ',2085,2128,', 2128); INSERT INTO `area` VALUES (2136, '2015-10-19 00:39:28', '2015-10-19 00:39:28', 0, 5, '广西壮族自治区北海市', 1, '北海市', ',2085,', 2085); INSERT INTO `area` VALUES (2137, '2015-10-19 00:39:29', '2015-10-19 00:39:29', 0, 1, '广西壮族自治区北海市海城区', 2, '海城区', ',2085,2136,', 2136); INSERT INTO `area` VALUES (2138, '2015-10-19 00:39:30', '2015-10-19 00:39:30', 0, 2, '广西壮族自治区北海市银海区', 2, '银海区', ',2085,2136,', 2136); INSERT INTO `area` VALUES (2139, '2015-10-19 00:39:31', '2015-10-19 00:39:31', 0, 3, '广西壮族自治区北海市铁山港区', 2, '铁山港区', ',2085,2136,', 2136); INSERT INTO `area` VALUES (2140, '2015-10-19 00:39:32', '2015-10-19 00:39:32', 0, 4, '广西壮族自治区北海市合浦县', 2, '合浦县', ',2085,2136,', 2136); INSERT INTO `area` VALUES (2141, '2015-10-19 00:39:33', '2015-10-19 00:39:33', 0, 6, '广西壮族自治区防城港市', 1, '防城港市', ',2085,', 2085); INSERT INTO `area` VALUES (2142, '2015-10-19 00:39:34', '2015-10-19 00:39:34', 0, 1, '广西壮族自治区防城港市港口区', 2, '港口区', ',2085,2141,', 2141); INSERT INTO `area` VALUES (2143, '2015-10-19 00:39:35', '2015-10-19 00:39:35', 0, 2, '广西壮族自治区防城港市防城区', 2, '防城区', ',2085,2141,', 2141); INSERT INTO `area` VALUES (2144, '2015-10-19 00:39:36', '2015-10-19 00:39:36', 0, 3, '广西壮族自治区防城港市上思县', 2, '上思县', ',2085,2141,', 2141); INSERT INTO `area` VALUES (2145, '2015-10-19 00:39:37', '2015-10-19 00:39:37', 0, 4, '广西壮族自治区防城港市东兴市', 2, '东兴市', ',2085,2141,', 2141); INSERT INTO `area` VALUES (2146, '2015-10-19 00:39:38', '2015-10-19 00:39:38', 0, 7, '广西壮族自治区钦州市', 1, '钦州市', ',2085,', 2085); INSERT INTO `area` VALUES (2147, '2015-10-19 00:39:39', '2015-10-19 00:39:39', 0, 1, '广西壮族自治区钦州市钦南区', 2, '钦南区', ',2085,2146,', 2146); INSERT INTO `area` VALUES (2148, '2015-10-19 00:39:40', '2015-10-19 00:39:40', 0, 2, '广西壮族自治区钦州市钦北区', 2, '钦北区', ',2085,2146,', 2146); INSERT INTO `area` VALUES (2149, '2015-10-19 00:39:41', '2015-10-19 00:39:41', 0, 3, '广西壮族自治区钦州市灵山县', 2, '灵山县', ',2085,2146,', 2146); INSERT INTO `area` VALUES (2150, '2015-10-19 00:39:42', '2015-10-19 00:39:42', 0, 4, '广西壮族自治区钦州市浦北县', 2, '浦北县', ',2085,2146,', 2146); INSERT INTO `area` VALUES (2151, '2015-10-19 00:39:43', '2015-10-19 00:39:43', 0, 8, '广西壮族自治区贵港市', 1, '贵港市', ',2085,', 2085); INSERT INTO `area` VALUES (2152, '2015-10-19 00:39:44', '2015-10-19 00:39:44', 0, 1, '广西壮族自治区贵港市港北区', 2, '港北区', ',2085,2151,', 2151); INSERT INTO `area` VALUES (2153, '2015-10-19 00:39:45', '2015-10-19 00:39:45', 0, 2, '广西壮族自治区贵港市港南区', 2, '港南区', ',2085,2151,', 2151); INSERT INTO `area` VALUES (2154, '2015-10-19 00:39:46', '2015-10-19 00:39:46', 0, 3, '广西壮族自治区贵港市覃塘区', 2, '覃塘区', ',2085,2151,', 2151); INSERT INTO `area` VALUES (2155, '2015-10-19 00:39:47', '2015-10-19 00:39:47', 0, 4, '广西壮族自治区贵港市平南县', 2, '平南县', ',2085,2151,', 2151); INSERT INTO `area` VALUES (2156, '2015-10-19 00:39:48', '2015-10-19 00:39:48', 0, 5, '广西壮族自治区贵港市桂平市', 2, '桂平市', ',2085,2151,', 2151); INSERT INTO `area` VALUES (2157, '2015-10-19 00:39:49', '2015-10-19 00:39:49', 0, 9, '广西壮族自治区玉林市', 1, '玉林市', ',2085,', 2085); INSERT INTO `area` VALUES (2158, '2015-10-19 00:39:50', '2015-10-19 00:39:50', 0, 1, '广西壮族自治区玉林市玉州区', 2, '玉州区', ',2085,2157,', 2157); INSERT INTO `area` VALUES (2159, '2015-10-19 00:39:51', '2015-10-19 00:39:51', 0, 2, '广西壮族自治区玉林市福绵区', 2, '福绵区', ',2085,2157,', 2157); INSERT INTO `area` VALUES (2160, '2015-10-19 00:39:52', '2015-10-19 00:39:52', 0, 3, '广西壮族自治区玉林市容县', 2, '容县', ',2085,2157,', 2157); INSERT INTO `area` VALUES (2161, '2015-10-19 00:39:53', '2015-10-19 00:39:53', 0, 4, '广西壮族自治区玉林市陆川县', 2, '陆川县', ',2085,2157,', 2157); INSERT INTO `area` VALUES (2162, '2015-10-19 00:39:54', '2015-10-19 00:39:54', 0, 5, '广西壮族自治区玉林市博白县', 2, '博白县', ',2085,2157,', 2157); INSERT INTO `area` VALUES (2163, '2015-10-19 00:39:55', '2015-10-19 00:39:55', 0, 6, '广西壮族自治区玉林市兴业县', 2, '兴业县', ',2085,2157,', 2157); INSERT INTO `area` VALUES (2164, '2015-10-19 00:39:56', '2015-10-19 00:39:56', 0, 7, '广西壮族自治区玉林市北流市', 2, '北流市', ',2085,2157,', 2157); INSERT INTO `area` VALUES (2165, '2015-10-19 00:39:57', '2015-10-19 00:39:57', 0, 10, '广西壮族自治区百色市', 1, '百色市', ',2085,', 2085); INSERT INTO `area` VALUES (2166, '2015-10-19 00:39:58', '2015-10-19 00:39:58', 0, 1, '广西壮族自治区百色市右江区', 2, '右江区', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2167, '2015-10-19 00:39:59', '2015-10-19 00:39:59', 0, 2, '广西壮族自治区百色市田阳县', 2, '田阳县', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2168, '2015-10-19 00:40:00', '2015-10-19 00:40:00', 0, 3, '广西壮族自治区百色市田东县', 2, '田东县', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2169, '2015-10-19 00:40:01', '2015-10-19 00:40:01', 0, 4, '广西壮族自治区百色市平果县', 2, '平果县', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2170, '2015-10-19 00:40:02', '2015-10-19 00:40:02', 0, 5, '广西壮族自治区百色市德保县', 2, '德保县', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2171, '2015-10-19 00:40:03', '2015-10-19 00:40:03', 0, 6, '广西壮族自治区百色市靖西县', 2, '靖西县', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2172, '2015-10-19 00:40:04', '2015-10-19 00:40:04', 0, 7, '广西壮族自治区百色市那坡县', 2, '那坡县', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2173, '2015-10-19 00:40:05', '2015-10-19 00:40:05', 0, 8, '广西壮族自治区百色市凌云县', 2, '凌云县', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2174, '2015-10-19 00:40:06', '2015-10-19 00:40:06', 0, 9, '广西壮族自治区百色市乐业县', 2, '乐业县', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2175, '2015-10-19 00:40:07', '2015-10-19 00:40:07', 0, 10, '广西壮族自治区百色市田林县', 2, '田林县', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2176, '2015-10-19 00:40:08', '2015-10-19 00:40:08', 0, 11, '广西壮族自治区百色市西林县', 2, '西林县', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2177, '2015-10-19 00:40:09', '2015-10-19 00:40:09', 0, 12, '广西壮族自治区百色市隆林各族自治县', 2, '隆林各族自治县', ',2085,2165,', 2165); INSERT INTO `area` VALUES (2178, '2015-10-19 00:40:10', '2015-10-19 00:40:10', 0, 11, '广西壮族自治区贺州市', 1, '贺州市', ',2085,', 2085); INSERT INTO `area` VALUES (2179, '2015-10-19 00:40:11', '2015-10-19 00:40:11', 0, 1, '广西壮族自治区贺州市八步区', 2, '八步区', ',2085,2178,', 2178); INSERT INTO `area` VALUES (2180, '2015-10-19 00:40:12', '2015-10-19 00:40:12', 0, 2, '广西壮族自治区贺州市昭平县', 2, '昭平县', ',2085,2178,', 2178); INSERT INTO `area` VALUES (2181, '2015-10-19 00:40:13', '2015-10-19 00:40:13', 0, 3, '广西壮族自治区贺州市钟山县', 2, '钟山县', ',2085,2178,', 2178); INSERT INTO `area` VALUES (2182, '2015-10-19 00:40:14', '2015-10-19 00:40:14', 0, 4, '广西壮族自治区贺州市富川瑶族自治县', 2, '富川瑶族自治县', ',2085,2178,', 2178); INSERT INTO `area` VALUES (2183, '2015-10-19 00:40:15', '2015-10-19 00:40:15', 0, 12, '广西壮族自治区河池市', 1, '河池市', ',2085,', 2085); INSERT INTO `area` VALUES (2184, '2015-10-19 00:40:16', '2015-10-19 00:40:16', 0, 1, '广西壮族自治区河池市金城江区', 2, '金城江区', ',2085,2183,', 2183); INSERT INTO `area` VALUES (2185, '2015-10-19 00:40:17', '2015-10-19 00:40:17', 0, 2, '广西壮族自治区河池市南丹县', 2, '南丹县', ',2085,2183,', 2183); INSERT INTO `area` VALUES (2186, '2015-10-19 00:40:18', '2015-10-19 00:40:18', 0, 3, '广西壮族自治区河池市天峨县', 2, '天峨县', ',2085,2183,', 2183); INSERT INTO `area` VALUES (2187, '2015-10-19 00:40:19', '2015-10-19 00:40:19', 0, 4, '广西壮族自治区河池市凤山县', 2, '凤山县', ',2085,2183,', 2183); INSERT INTO `area` VALUES (2188, '2015-10-19 00:40:20', '2015-10-19 00:40:20', 0, 5, '广西壮族自治区河池市东兰县', 2, '东兰县', ',2085,2183,', 2183); INSERT INTO `area` VALUES (2189, '2015-10-19 00:40:21', '2015-10-19 00:40:21', 0, 6, '广西壮族自治区河池市罗城仫佬族自治县', 2, '罗城仫佬族自治县', ',2085,2183,', 2183); INSERT INTO `area` VALUES (2190, '2015-10-19 00:40:22', '2015-10-19 00:40:22', 0, 7, '广西壮族自治区河池市环江毛南族自治县', 2, '环江毛南族自治县', ',2085,2183,', 2183); INSERT INTO `area` VALUES (2191, '2015-10-19 00:40:23', '2015-10-19 00:40:23', 0, 8, '广西壮族自治区河池市巴马瑶族自治县', 2, '巴马瑶族自治县', ',2085,2183,', 2183); INSERT INTO `area` VALUES (2192, '2015-10-19 00:40:24', '2015-10-19 00:40:24', 0, 9, '广西壮族自治区河池市都安瑶族自治县', 2, '都安瑶族自治县', ',2085,2183,', 2183); INSERT INTO `area` VALUES (2193, '2015-10-19 00:40:25', '2015-10-19 00:40:25', 0, 10, '广西壮族自治区河池市大化瑶族自治县', 2, '大化瑶族自治县', ',2085,2183,', 2183); INSERT INTO `area` VALUES (2194, '2015-10-19 00:40:26', '2015-10-19 00:40:26', 0, 11, '广西壮族自治区河池市宜州市', 2, '宜州市', ',2085,2183,', 2183); INSERT INTO `area` VALUES (2195, '2015-10-19 00:40:27', '2015-10-19 00:40:27', 0, 13, '广西壮族自治区来宾市', 1, '来宾市', ',2085,', 2085); INSERT INTO `area` VALUES (2196, '2015-10-19 00:40:28', '2015-10-19 00:40:28', 0, 1, '广西壮族自治区来宾市兴宾区', 2, '兴宾区', ',2085,2195,', 2195); INSERT INTO `area` VALUES (2197, '2015-10-19 00:40:29', '2015-10-19 00:40:29', 0, 2, '广西壮族自治区来宾市忻城县', 2, '忻城县', ',2085,2195,', 2195); INSERT INTO `area` VALUES (2198, '2015-10-19 00:40:30', '2015-10-19 00:40:30', 0, 3, '广西壮族自治区来宾市象州县', 2, '象州县', ',2085,2195,', 2195); INSERT INTO `area` VALUES (2199, '2015-10-19 00:40:31', '2015-10-19 00:40:31', 0, 4, '广西壮族自治区来宾市武宣县', 2, '武宣县', ',2085,2195,', 2195); INSERT INTO `area` VALUES (2200, '2015-10-19 00:40:32', '2015-10-19 00:40:32', 0, 5, '广西壮族自治区来宾市金秀瑶族自治县', 2, '金秀瑶族自治县', ',2085,2195,', 2195); INSERT INTO `area` VALUES (2201, '2015-10-19 00:40:33', '2015-10-19 00:40:33', 0, 6, '广西壮族自治区来宾市合山市', 2, '合山市', ',2085,2195,', 2195); INSERT INTO `area` VALUES (2202, '2015-10-19 00:40:34', '2015-10-19 00:40:34', 0, 14, '广西壮族自治区崇左市', 1, '崇左市', ',2085,', 2085); INSERT INTO `area` VALUES (2203, '2015-10-19 00:40:35', '2015-10-19 00:40:35', 0, 1, '广西壮族自治区崇左市江州区', 2, '江州区', ',2085,2202,', 2202); INSERT INTO `area` VALUES (2204, '2015-10-19 00:40:36', '2015-10-19 00:40:36', 0, 2, '广西壮族自治区崇左市扶绥县', 2, '扶绥县', ',2085,2202,', 2202); INSERT INTO `area` VALUES (2205, '2015-10-19 00:40:37', '2015-10-19 00:40:37', 0, 3, '广西壮族自治区崇左市宁明县', 2, '宁明县', ',2085,2202,', 2202); INSERT INTO `area` VALUES (2206, '2015-10-19 00:40:38', '2015-10-19 00:40:38', 0, 4, '广西壮族自治区崇左市龙州县', 2, '龙州县', ',2085,2202,', 2202); INSERT INTO `area` VALUES (2207, '2015-10-19 00:40:39', '2015-10-19 00:40:39', 0, 5, '广西壮族自治区崇左市大新县', 2, '大新县', ',2085,2202,', 2202); INSERT INTO `area` VALUES (2208, '2015-10-19 00:40:40', '2015-10-19 00:40:40', 0, 6, '广西壮族自治区崇左市天等县', 2, '天等县', ',2085,2202,', 2202); INSERT INTO `area` VALUES (2209, '2015-10-19 00:40:41', '2015-10-19 00:40:41', 0, 7, '广西壮族自治区崇左市凭祥市', 2, '凭祥市', ',2085,2202,', 2202); INSERT INTO `area` VALUES (2210, '2015-10-19 00:40:42', '2015-10-19 00:40:42', 0, 21, '海南省', 0, '海南省', ',', NULL); INSERT INTO `area` VALUES (2211, '2015-10-19 00:40:43', '2015-10-19 00:40:43', 0, 1, '海南省海口市', 1, '海口市', ',2210,', 2210); INSERT INTO `area` VALUES (2212, '2015-10-19 00:40:44', '2015-10-19 00:40:44', 0, 1, '海南省海口市秀英区', 2, '秀英区', ',2210,2211,', 2211); INSERT INTO `area` VALUES (2213, '2015-10-19 00:40:45', '2015-10-19 00:40:45', 0, 2, '海南省海口市龙华区', 2, '龙华区', ',2210,2211,', 2211); INSERT INTO `area` VALUES (2214, '2015-10-19 00:40:46', '2015-10-19 00:40:46', 0, 3, '海南省海口市琼山区', 2, '琼山区', ',2210,2211,', 2211); INSERT INTO `area` VALUES (2215, '2015-10-19 00:40:47', '2015-10-19 00:40:47', 0, 4, '海南省海口市美兰区', 2, '美兰区', ',2210,2211,', 2211); INSERT INTO `area` VALUES (2216, '2015-10-19 00:40:48', '2015-10-19 00:40:48', 0, 2, '海南省三亚市', 1, '三亚市', ',2210,', 2210); INSERT INTO `area` VALUES (2217, '2015-10-19 00:40:49', '2015-10-19 00:40:49', 0, 3, '海南省三沙市', 1, '三沙市', ',2210,', 2210); INSERT INTO `area` VALUES (2218, '2015-10-19 00:40:50', '2015-10-19 00:40:50', 0, 1, '海南省三沙市西沙群岛', 2, '西沙群岛', ',2210,2217,', 2217); INSERT INTO `area` VALUES (2219, '2015-10-19 00:40:51', '2015-10-19 00:40:51', 0, 2, '海南省三沙市南沙群岛', 2, '南沙群岛', ',2210,2217,', 2217); INSERT INTO `area` VALUES (2220, '2015-10-19 00:40:52', '2015-10-19 00:40:52', 0, 3, '海南省三沙市中沙群岛的岛礁及其海域', 2, '中沙群岛的岛礁及其海域', ',2210,2217,', 2217); INSERT INTO `area` VALUES (2221, '2015-10-19 00:40:53', '2015-10-19 00:40:53', 0, 4, '海南省五指山市', 1, '五指山市', ',2210,', 2210); INSERT INTO `area` VALUES (2222, '2015-10-19 00:40:54', '2015-10-19 00:40:54', 0, 5, '海南省琼海市', 1, '琼海市', ',2210,', 2210); INSERT INTO `area` VALUES (2223, '2015-10-19 00:40:55', '2015-10-19 00:40:55', 0, 6, '海南省儋州市', 1, '儋州市', ',2210,', 2210); INSERT INTO `area` VALUES (2224, '2015-10-19 00:40:56', '2015-10-19 00:40:56', 0, 7, '海南省文昌市', 1, '文昌市', ',2210,', 2210); INSERT INTO `area` VALUES (2225, '2015-10-19 00:40:57', '2015-10-19 00:40:57', 0, 8, '海南省万宁市', 1, '万宁市', ',2210,', 2210); INSERT INTO `area` VALUES (2226, '2015-10-19 00:40:58', '2015-10-19 00:40:58', 0, 9, '海南省东方市', 1, '东方市', ',2210,', 2210); INSERT INTO `area` VALUES (2227, '2015-10-19 00:40:59', '2015-10-19 00:40:59', 0, 10, '海南省定安县', 1, '定安县', ',2210,', 2210); INSERT INTO `area` VALUES (2228, '2015-10-19 00:41:00', '2015-10-19 00:41:00', 0, 11, '海南省屯昌县', 1, '屯昌县', ',2210,', 2210); INSERT INTO `area` VALUES (2229, '2015-10-19 00:41:01', '2015-10-19 00:41:01', 0, 12, '海南省澄迈县', 1, '澄迈县', ',2210,', 2210); INSERT INTO `area` VALUES (2230, '2015-10-19 00:41:02', '2015-10-19 00:41:02', 0, 13, '海南省临高县', 1, '临高县', ',2210,', 2210); INSERT INTO `area` VALUES (2231, '2015-10-19 00:41:03', '2015-10-19 00:41:03', 0, 14, '海南省白沙黎族自治县', 1, '白沙黎族自治县', ',2210,', 2210); INSERT INTO `area` VALUES (2232, '2015-10-19 00:41:04', '2015-10-19 00:41:04', 0, 15, '海南省昌江黎族自治县', 1, '昌江黎族自治县', ',2210,', 2210); INSERT INTO `area` VALUES (2233, '2015-10-19 00:41:05', '2015-10-19 00:41:05', 0, 16, '海南省乐东黎族自治县', 1, '乐东黎族自治县', ',2210,', 2210); INSERT INTO `area` VALUES (2234, '2015-10-19 00:41:06', '2015-10-19 00:41:06', 0, 17, '海南省陵水黎族自治县', 1, '陵水黎族自治县', ',2210,', 2210); INSERT INTO `area` VALUES (2235, '2015-10-19 00:41:07', '2015-10-19 00:41:07', 0, 18, '海南省保亭黎族苗族自治县', 1, '保亭黎族苗族自治县', ',2210,', 2210); INSERT INTO `area` VALUES (2236, '2015-10-19 00:41:08', '2015-10-19 00:41:08', 0, 19, '海南省琼中黎族苗族自治县', 1, '琼中黎族苗族自治县', ',2210,', 2210); INSERT INTO `area` VALUES (2237, '2015-10-19 00:41:09', '2015-10-19 00:41:09', 0, 22, '重庆市', 0, '重庆市', ',', NULL); INSERT INTO `area` VALUES (2238, '2015-10-19 00:41:10', '2015-10-19 00:41:10', 0, 1, '重庆市万州区', 1, '万州区', ',2237,', 2237); INSERT INTO `area` VALUES (2239, '2015-10-19 00:41:11', '2015-10-19 00:41:11', 0, 2, '重庆市涪陵区', 1, '涪陵区', ',2237,', 2237); INSERT INTO `area` VALUES (2240, '2015-10-19 00:41:12', '2015-10-19 00:41:12', 0, 3, '重庆市渝中区', 1, '渝中区', ',2237,', 2237); INSERT INTO `area` VALUES (2241, '2015-10-19 00:41:13', '2015-10-19 00:41:13', 0, 4, '重庆市大渡口区', 1, '大渡口区', ',2237,', 2237); INSERT INTO `area` VALUES (2242, '2015-10-19 00:41:14', '2015-10-19 00:41:14', 0, 5, '重庆市江北区', 1, '江北区', ',2237,', 2237); INSERT INTO `area` VALUES (2243, '2015-10-19 00:41:15', '2015-10-19 00:41:15', 0, 6, '重庆市沙坪坝区', 1, '沙坪坝区', ',2237,', 2237); INSERT INTO `area` VALUES (2244, '2015-10-19 00:41:16', '2015-10-19 00:41:16', 0, 7, '重庆市九龙坡区', 1, '九龙坡区', ',2237,', 2237); INSERT INTO `area` VALUES (2245, '2015-10-19 00:41:17', '2015-10-19 00:41:17', 0, 8, '重庆市南岸区', 1, '南岸区', ',2237,', 2237); INSERT INTO `area` VALUES (2246, '2015-10-19 00:41:18', '2015-10-19 00:41:18', 0, 9, '重庆市北碚区', 1, '北碚区', ',2237,', 2237); INSERT INTO `area` VALUES (2247, '2015-10-19 00:41:19', '2015-10-19 00:41:19', 0, 10, '重庆市綦江区', 1, '綦江区', ',2237,', 2237); INSERT INTO `area` VALUES (2248, '2015-10-19 00:41:20', '2015-10-19 00:41:20', 0, 11, '重庆市大足区', 1, '大足区', ',2237,', 2237); INSERT INTO `area` VALUES (2249, '2015-10-19 00:41:21', '2015-10-19 00:41:21', 0, 12, '重庆市渝北区', 1, '渝北区', ',2237,', 2237); INSERT INTO `area` VALUES (2250, '2015-10-19 00:41:22', '2015-10-19 00:41:22', 0, 13, '重庆市巴南区', 1, '巴南区', ',2237,', 2237); INSERT INTO `area` VALUES (2251, '2015-10-19 00:41:23', '2015-10-19 00:41:23', 0, 14, '重庆市黔江区', 1, '黔江区', ',2237,', 2237); INSERT INTO `area` VALUES (2252, '2015-10-19 00:41:24', '2015-10-19 00:41:24', 0, 15, '重庆市长寿区', 1, '长寿区', ',2237,', 2237); INSERT INTO `area` VALUES (2253, '2015-10-19 00:41:25', '2015-10-19 00:41:25', 0, 16, '重庆市江津区', 1, '江津区', ',2237,', 2237); INSERT INTO `area` VALUES (2254, '2015-10-19 00:41:26', '2015-10-19 00:41:26', 0, 17, '重庆市合川区', 1, '合川区', ',2237,', 2237); INSERT INTO `area` VALUES (2255, '2015-10-19 00:41:27', '2015-10-19 00:41:27', 0, 18, '重庆市永川区', 1, '永川区', ',2237,', 2237); INSERT INTO `area` VALUES (2256, '2015-10-19 00:41:28', '2015-10-19 00:41:28', 0, 19, '重庆市南川区', 1, '南川区', ',2237,', 2237); INSERT INTO `area` VALUES (2257, '2015-10-19 00:41:29', '2015-10-19 00:41:29', 0, 20, '重庆市潼南县', 1, '潼南县', ',2237,', 2237); INSERT INTO `area` VALUES (2258, '2015-10-19 00:41:30', '2015-10-19 00:41:30', 0, 21, '重庆市铜梁县', 1, '铜梁县', ',2237,', 2237); INSERT INTO `area` VALUES (2259, '2015-10-19 00:41:31', '2015-10-19 00:41:31', 0, 22, '重庆市荣昌县', 1, '荣昌县', ',2237,', 2237); INSERT INTO `area` VALUES (2260, '2015-10-19 00:41:32', '2015-10-19 00:41:32', 0, 23, '重庆市璧山县', 1, '璧山县', ',2237,', 2237); INSERT INTO `area` VALUES (2261, '2015-10-19 00:41:33', '2015-10-19 00:41:33', 0, 24, '重庆市梁平县', 1, '梁平县', ',2237,', 2237); INSERT INTO `area` VALUES (2262, '2015-10-19 00:41:34', '2015-10-19 00:41:34', 0, 25, '重庆市城口县', 1, '城口县', ',2237,', 2237); INSERT INTO `area` VALUES (2263, '2015-10-19 00:41:35', '2015-10-19 00:41:35', 0, 26, '重庆市丰都县', 1, '丰都县', ',2237,', 2237); INSERT INTO `area` VALUES (2264, '2015-10-19 00:41:36', '2015-10-19 00:41:36', 0, 27, '重庆市垫江县', 1, '垫江县', ',2237,', 2237); INSERT INTO `area` VALUES (2265, '2015-10-19 00:41:37', '2015-10-19 00:41:37', 0, 28, '重庆市武隆县', 1, '武隆县', ',2237,', 2237); INSERT INTO `area` VALUES (2266, '2015-10-19 00:41:38', '2015-10-19 00:41:38', 0, 29, '重庆市忠县', 1, '忠县', ',2237,', 2237); INSERT INTO `area` VALUES (2267, '2015-10-19 00:41:39', '2015-10-19 00:41:39', 0, 30, '重庆市开县', 1, '开县', ',2237,', 2237); INSERT INTO `area` VALUES (2268, '2015-10-19 00:41:40', '2015-10-19 00:41:40', 0, 31, '重庆市云阳县', 1, '云阳县', ',2237,', 2237); INSERT INTO `area` VALUES (2269, '2015-10-19 00:41:41', '2015-10-19 00:41:41', 0, 32, '重庆市奉节县', 1, '奉节县', ',2237,', 2237); INSERT INTO `area` VALUES (2270, '2015-10-19 00:41:42', '2015-10-19 00:41:42', 0, 33, '重庆市巫山县', 1, '巫山县', ',2237,', 2237); INSERT INTO `area` VALUES (2271, '2015-10-19 00:41:43', '2015-10-19 00:41:43', 0, 34, '重庆市巫溪县', 1, '巫溪县', ',2237,', 2237); INSERT INTO `area` VALUES (2272, '2015-10-19 00:41:44', '2015-10-19 00:41:44', 0, 35, '重庆市石柱土家族自治县', 1, '石柱土家族自治县', ',2237,', 2237); INSERT INTO `area` VALUES (2273, '2015-10-19 00:41:45', '2015-10-19 00:41:45', 0, 36, '重庆市秀山土家族苗族自治县', 1, '秀山土家族苗族自治县', ',2237,', 2237); INSERT INTO `area` VALUES (2274, '2015-10-19 00:41:46', '2015-10-19 00:41:46', 0, 37, '重庆市酉阳土家族苗族自治县', 1, '酉阳土家族苗族自治县', ',2237,', 2237); INSERT INTO `area` VALUES (2275, '2015-10-19 00:41:47', '2015-10-19 00:41:47', 0, 38, '重庆市彭水苗族土家族自治县', 1, '彭水苗族土家族自治县', ',2237,', 2237); INSERT INTO `area` VALUES (2276, '2015-10-19 00:41:48', '2015-10-19 00:41:48', 0, 23, '四川省', 0, '四川省', ',', NULL); INSERT INTO `area` VALUES (2277, '2015-10-19 00:41:49', '2015-10-19 00:41:49', 0, 1, '四川省成都市', 1, '成都市', ',2276,', 2276); INSERT INTO `area` VALUES (2278, '2015-10-19 00:41:50', '2015-10-19 00:41:50', 0, 1, '四川省成都市锦江区', 2, '锦江区', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2279, '2015-10-19 00:41:51', '2015-10-19 00:41:51', 0, 2, '四川省成都市青羊区', 2, '青羊区', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2280, '2015-10-19 00:41:52', '2015-10-19 00:41:52', 0, 3, '四川省成都市金牛区', 2, '金牛区', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2281, '2015-10-19 00:41:53', '2015-10-19 00:41:53', 0, 4, '四川省成都市武侯区', 2, '武侯区', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2282, '2015-10-19 00:41:54', '2015-10-19 00:41:54', 0, 5, '四川省成都市成华区', 2, '成华区', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2283, '2015-10-19 00:41:55', '2015-10-19 00:41:55', 0, 6, '四川省成都市龙泉驿区', 2, '龙泉驿区', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2284, '2015-10-19 00:41:56', '2015-10-19 00:41:56', 0, 7, '四川省成都市青白江区', 2, '青白江区', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2285, '2015-10-19 00:41:57', '2015-10-19 00:41:57', 0, 8, '四川省成都市新都区', 2, '新都区', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2286, '2015-10-19 00:41:58', '2015-10-19 00:41:58', 0, 9, '四川省成都市温江区', 2, '温江区', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2287, '2015-10-19 00:41:59', '2015-10-19 00:41:59', 0, 10, '四川省成都市金堂县', 2, '金堂县', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2288, '2015-10-19 00:42:00', '2015-10-19 00:42:00', 0, 11, '四川省成都市双流县', 2, '双流县', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2289, '2015-10-19 00:42:01', '2015-10-19 00:42:01', 0, 12, '四川省成都市郫县', 2, '郫县', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2290, '2015-10-19 00:42:02', '2015-10-19 00:42:02', 0, 13, '四川省成都市大邑县', 2, '大邑县', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2291, '2015-10-19 00:42:03', '2015-10-19 00:42:03', 0, 14, '四川省成都市蒲江县', 2, '蒲江县', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2292, '2015-10-19 00:42:04', '2015-10-19 00:42:04', 0, 15, '四川省成都市新津县', 2, '新津县', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2293, '2015-10-19 00:42:05', '2015-10-19 00:42:05', 0, 16, '四川省成都市都江堰市', 2, '都江堰市', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2294, '2015-10-19 00:42:06', '2015-10-19 00:42:06', 0, 17, '四川省成都市彭州市', 2, '彭州市', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2295, '2015-10-19 00:42:07', '2015-10-19 00:42:07', 0, 18, '四川省成都市邛崃市', 2, '邛崃市', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2296, '2015-10-19 00:42:08', '2015-10-19 00:42:08', 0, 19, '四川省成都市崇州市', 2, '崇州市', ',2276,2277,', 2277); INSERT INTO `area` VALUES (2297, '2015-10-19 00:42:09', '2015-10-19 00:42:09', 0, 2, '四川省自贡市', 1, '自贡市', ',2276,', 2276); INSERT INTO `area` VALUES (2298, '2015-10-19 00:42:10', '2015-10-19 00:42:10', 0, 1, '四川省自贡市自流井区', 2, '自流井区', ',2276,2297,', 2297); INSERT INTO `area` VALUES (2299, '2015-10-19 00:42:11', '2015-10-19 00:42:11', 0, 2, '四川省自贡市贡井区', 2, '贡井区', ',2276,2297,', 2297); INSERT INTO `area` VALUES (2300, '2015-10-19 00:42:12', '2015-10-19 00:42:12', 0, 3, '四川省自贡市大安区', 2, '大安区', ',2276,2297,', 2297); INSERT INTO `area` VALUES (2301, '2015-10-19 00:42:13', '2015-10-19 00:42:13', 0, 4, '四川省自贡市沿滩区', 2, '沿滩区', ',2276,2297,', 2297); INSERT INTO `area` VALUES (2302, '2015-10-19 00:42:14', '2015-10-19 00:42:14', 0, 5, '四川省自贡市荣县', 2, '荣县', ',2276,2297,', 2297); INSERT INTO `area` VALUES (2303, '2015-10-19 00:42:15', '2015-10-19 00:42:15', 0, 6, '四川省自贡市富顺县', 2, '富顺县', ',2276,2297,', 2297); INSERT INTO `area` VALUES (2304, '2015-10-19 00:42:16', '2015-10-19 00:42:16', 0, 3, '四川省攀枝花市', 1, '攀枝花市', ',2276,', 2276); INSERT INTO `area` VALUES (2305, '2015-10-19 00:42:17', '2015-10-19 00:42:17', 0, 1, '四川省攀枝花市东区', 2, '东区', ',2276,2304,', 2304); INSERT INTO `area` VALUES (2306, '2015-10-19 00:42:18', '2015-10-19 00:42:18', 0, 2, '四川省攀枝花市西区', 2, '西区', ',2276,2304,', 2304); INSERT INTO `area` VALUES (2307, '2015-10-19 00:42:19', '2015-10-19 00:42:19', 0, 3, '四川省攀枝花市仁和区', 2, '仁和区', ',2276,2304,', 2304); INSERT INTO `area` VALUES (2308, '2015-10-19 00:42:20', '2015-10-19 00:42:20', 0, 4, '四川省攀枝花市米易县', 2, '米易县', ',2276,2304,', 2304); INSERT INTO `area` VALUES (2309, '2015-10-19 00:42:21', '2015-10-19 00:42:21', 0, 5, '四川省攀枝花市盐边县', 2, '盐边县', ',2276,2304,', 2304); INSERT INTO `area` VALUES (2310, '2015-10-19 00:42:22', '2015-10-19 00:42:22', 0, 4, '四川省泸州市', 1, '泸州市', ',2276,', 2276); INSERT INTO `area` VALUES (2311, '2015-10-19 00:42:23', '2015-10-19 00:42:23', 0, 1, '四川省泸州市江阳区', 2, '江阳区', ',2276,2310,', 2310); INSERT INTO `area` VALUES (2312, '2015-10-19 00:42:24', '2015-10-19 00:42:24', 0, 2, '四川省泸州市纳溪区', 2, '纳溪区', ',2276,2310,', 2310); INSERT INTO `area` VALUES (2313, '2015-10-19 00:42:25', '2015-10-19 00:42:25', 0, 3, '四川省泸州市龙马潭区', 2, '龙马潭区', ',2276,2310,', 2310); INSERT INTO `area` VALUES (2314, '2015-10-19 00:42:26', '2015-10-19 00:42:26', 0, 4, '四川省泸州市泸县', 2, '泸县', ',2276,2310,', 2310); INSERT INTO `area` VALUES (2315, '2015-10-19 00:42:27', '2015-10-19 00:42:27', 0, 5, '四川省泸州市合江县', 2, '合江县', ',2276,2310,', 2310); INSERT INTO `area` VALUES (2316, '2015-10-19 00:42:28', '2015-10-19 00:42:28', 0, 6, '四川省泸州市叙永县', 2, '叙永县', ',2276,2310,', 2310); INSERT INTO `area` VALUES (2317, '2015-10-19 00:42:29', '2015-10-19 00:42:29', 0, 7, '四川省泸州市古蔺县', 2, '古蔺县', ',2276,2310,', 2310); INSERT INTO `area` VALUES (2318, '2015-10-19 00:42:30', '2015-10-19 00:42:30', 0, 5, '四川省德阳市', 1, '德阳市', ',2276,', 2276); INSERT INTO `area` VALUES (2319, '2015-10-19 00:42:31', '2015-10-19 00:42:31', 0, 1, '四川省德阳市旌阳区', 2, '旌阳区', ',2276,2318,', 2318); INSERT INTO `area` VALUES (2320, '2015-10-19 00:42:32', '2015-10-19 00:42:32', 0, 2, '四川省德阳市中江县', 2, '中江县', ',2276,2318,', 2318); INSERT INTO `area` VALUES (2321, '2015-10-19 00:42:33', '2015-10-19 00:42:33', 0, 3, '四川省德阳市罗江县', 2, '罗江县', ',2276,2318,', 2318); INSERT INTO `area` VALUES (2322, '2015-10-19 00:42:34', '2015-10-19 00:42:34', 0, 4, '四川省德阳市广汉市', 2, '广汉市', ',2276,2318,', 2318); INSERT INTO `area` VALUES (2323, '2015-10-19 00:42:35', '2015-10-19 00:42:35', 0, 5, '四川省德阳市什邡市', 2, '什邡市', ',2276,2318,', 2318); INSERT INTO `area` VALUES (2324, '2015-10-19 00:42:36', '2015-10-19 00:42:36', 0, 6, '四川省德阳市绵竹市', 2, '绵竹市', ',2276,2318,', 2318); INSERT INTO `area` VALUES (2325, '2015-10-19 00:42:37', '2015-10-19 00:42:37', 0, 6, '四川省绵阳市', 1, '绵阳市', ',2276,', 2276); INSERT INTO `area` VALUES (2326, '2015-10-19 00:42:38', '2015-10-19 00:42:38', 0, 1, '四川省绵阳市涪城区', 2, '涪城区', ',2276,2325,', 2325); INSERT INTO `area` VALUES (2327, '2015-10-19 00:42:39', '2015-10-19 00:42:39', 0, 2, '四川省绵阳市游仙区', 2, '游仙区', ',2276,2325,', 2325); INSERT INTO `area` VALUES (2328, '2015-10-19 00:42:40', '2015-10-19 00:42:40', 0, 3, '四川省绵阳市三台县', 2, '三台县', ',2276,2325,', 2325); INSERT INTO `area` VALUES (2329, '2015-10-19 00:42:41', '2015-10-19 00:42:41', 0, 4, '四川省绵阳市盐亭县', 2, '盐亭县', ',2276,2325,', 2325); INSERT INTO `area` VALUES (2330, '2015-10-19 00:42:42', '2015-10-19 00:42:42', 0, 5, '四川省绵阳市安县', 2, '安县', ',2276,2325,', 2325); INSERT INTO `area` VALUES (2331, '2015-10-19 00:42:43', '2015-10-19 00:42:43', 0, 6, '四川省绵阳市梓潼县', 2, '梓潼县', ',2276,2325,', 2325); INSERT INTO `area` VALUES (2332, '2015-10-19 00:42:44', '2015-10-19 00:42:44', 0, 7, '四川省绵阳市北川羌族自治县', 2, '北川羌族自治县', ',2276,2325,', 2325); INSERT INTO `area` VALUES (2333, '2015-10-19 00:42:45', '2015-10-19 00:42:45', 0, 8, '四川省绵阳市平武县', 2, '平武县', ',2276,2325,', 2325); INSERT INTO `area` VALUES (2334, '2015-10-19 00:42:46', '2015-10-19 00:42:46', 0, 9, '四川省绵阳市江油市', 2, '江油市', ',2276,2325,', 2325); INSERT INTO `area` VALUES (2335, '2015-10-19 00:42:47', '2015-10-19 00:42:47', 0, 7, '四川省广元市', 1, '广元市', ',2276,', 2276); INSERT INTO `area` VALUES (2336, '2015-10-19 00:42:48', '2015-10-19 00:42:48', 0, 1, '四川省广元市利州区', 2, '利州区', ',2276,2335,', 2335); INSERT INTO `area` VALUES (2337, '2015-10-19 00:42:49', '2015-10-19 00:42:49', 0, 2, '四川省广元市元坝区', 2, '元坝区', ',2276,2335,', 2335); INSERT INTO `area` VALUES (2338, '2015-10-19 00:42:50', '2015-10-19 00:42:50', 0, 3, '四川省广元市朝天区', 2, '朝天区', ',2276,2335,', 2335); INSERT INTO `area` VALUES (2339, '2015-10-19 00:42:51', '2015-10-19 00:42:51', 0, 4, '四川省广元市旺苍县', 2, '旺苍县', ',2276,2335,', 2335); INSERT INTO `area` VALUES (2340, '2015-10-19 00:42:52', '2015-10-19 00:42:52', 0, 5, '四川省广元市青川县', 2, '青川县', ',2276,2335,', 2335); INSERT INTO `area` VALUES (2341, '2015-10-19 00:42:53', '2015-10-19 00:42:53', 0, 6, '四川省广元市剑阁县', 2, '剑阁县', ',2276,2335,', 2335); INSERT INTO `area` VALUES (2342, '2015-10-19 00:42:54', '2015-10-19 00:42:54', 0, 7, '四川省广元市苍溪县', 2, '苍溪县', ',2276,2335,', 2335); INSERT INTO `area` VALUES (2343, '2015-10-19 00:42:55', '2015-10-19 00:42:55', 0, 8, '四川省遂宁市', 1, '遂宁市', ',2276,', 2276); INSERT INTO `area` VALUES (2344, '2015-10-19 00:42:56', '2015-10-19 00:42:56', 0, 1, '四川省遂宁市船山区', 2, '船山区', ',2276,2343,', 2343); INSERT INTO `area` VALUES (2345, '2015-10-19 00:42:57', '2015-10-19 00:42:57', 0, 2, '四川省遂宁市安居区', 2, '安居区', ',2276,2343,', 2343); INSERT INTO `area` VALUES (2346, '2015-10-19 00:42:58', '2015-10-19 00:42:58', 0, 3, '四川省遂宁市蓬溪县', 2, '蓬溪县', ',2276,2343,', 2343); INSERT INTO `area` VALUES (2347, '2015-10-19 00:42:59', '2015-10-19 00:42:59', 0, 4, '四川省遂宁市射洪县', 2, '射洪县', ',2276,2343,', 2343); INSERT INTO `area` VALUES (2348, '2015-10-19 00:43:00', '2015-10-19 00:43:00', 0, 5, '四川省遂宁市大英县', 2, '大英县', ',2276,2343,', 2343); INSERT INTO `area` VALUES (2349, '2015-10-19 00:43:01', '2015-10-19 00:43:01', 0, 9, '四川省内江市', 1, '内江市', ',2276,', 2276); INSERT INTO `area` VALUES (2350, '2015-10-19 00:43:02', '2015-10-19 00:43:02', 0, 1, '四川省内江市市中区', 2, '市中区', ',2276,2349,', 2349); INSERT INTO `area` VALUES (2351, '2015-10-19 00:43:03', '2015-10-19 00:43:03', 0, 2, '四川省内江市东兴区', 2, '东兴区', ',2276,2349,', 2349); INSERT INTO `area` VALUES (2352, '2015-10-19 00:43:04', '2015-10-19 00:43:04', 0, 3, '四川省内江市威远县', 2, '威远县', ',2276,2349,', 2349); INSERT INTO `area` VALUES (2353, '2015-10-19 00:43:05', '2015-10-19 00:43:05', 0, 4, '四川省内江市资中县', 2, '资中县', ',2276,2349,', 2349); INSERT INTO `area` VALUES (2354, '2015-10-19 00:43:06', '2015-10-19 00:43:06', 0, 5, '四川省内江市隆昌县', 2, '隆昌县', ',2276,2349,', 2349); INSERT INTO `area` VALUES (2355, '2015-10-19 00:43:07', '2015-10-19 00:43:07', 0, 10, '四川省乐山市', 1, '乐山市', ',2276,', 2276); INSERT INTO `area` VALUES (2356, '2015-10-19 00:43:08', '2015-10-19 00:43:08', 0, 1, '四川省乐山市市中区', 2, '市中区', ',2276,2355,', 2355); INSERT INTO `area` VALUES (2357, '2015-10-19 00:43:09', '2015-10-19 00:43:09', 0, 2, '四川省乐山市沙湾区', 2, '沙湾区', ',2276,2355,', 2355); INSERT INTO `area` VALUES (2358, '2015-10-19 00:43:10', '2015-10-19 00:43:10', 0, 3, '四川省乐山市五通桥区', 2, '五通桥区', ',2276,2355,', 2355); INSERT INTO `area` VALUES (2359, '2015-10-19 00:43:11', '2015-10-19 00:43:11', 0, 4, '四川省乐山市金口河区', 2, '金口河区', ',2276,2355,', 2355); INSERT INTO `area` VALUES (2360, '2015-10-19 00:43:12', '2015-10-19 00:43:12', 0, 5, '四川省乐山市犍为县', 2, '犍为县', ',2276,2355,', 2355); INSERT INTO `area` VALUES (2361, '2015-10-19 00:43:13', '2015-10-19 00:43:13', 0, 6, '四川省乐山市井研县', 2, '井研县', ',2276,2355,', 2355); INSERT INTO `area` VALUES (2362, '2015-10-19 00:43:14', '2015-10-19 00:43:14', 0, 7, '四川省乐山市夹江县', 2, '夹江县', ',2276,2355,', 2355); INSERT INTO `area` VALUES (2363, '2015-10-19 00:43:15', '2015-10-19 00:43:15', 0, 8, '四川省乐山市沐川县', 2, '沐川县', ',2276,2355,', 2355); INSERT INTO `area` VALUES (2364, '2015-10-19 00:43:16', '2015-10-19 00:43:16', 0, 9, '四川省乐山市峨边彝族自治县', 2, '峨边彝族自治县', ',2276,2355,', 2355); INSERT INTO `area` VALUES (2365, '2015-10-19 00:43:17', '2015-10-19 00:43:17', 0, 10, '四川省乐山市马边彝族自治县', 2, '马边彝族自治县', ',2276,2355,', 2355); INSERT INTO `area` VALUES (2366, '2015-10-19 00:43:18', '2015-10-19 00:43:18', 0, 11, '四川省乐山市峨眉山市', 2, '峨眉山市', ',2276,2355,', 2355); INSERT INTO `area` VALUES (2367, '2015-10-19 00:43:19', '2015-10-19 00:43:19', 0, 11, '四川省南充市', 1, '南充市', ',2276,', 2276); INSERT INTO `area` VALUES (2368, '2015-10-19 00:43:20', '2015-10-19 00:43:20', 0, 1, '四川省南充市顺庆区', 2, '顺庆区', ',2276,2367,', 2367); INSERT INTO `area` VALUES (2369, '2015-10-19 00:43:21', '2015-10-19 00:43:21', 0, 2, '四川省南充市高坪区', 2, '高坪区', ',2276,2367,', 2367); INSERT INTO `area` VALUES (2370, '2015-10-19 00:43:22', '2015-10-19 00:43:22', 0, 3, '四川省南充市嘉陵区', 2, '嘉陵区', ',2276,2367,', 2367); INSERT INTO `area` VALUES (2371, '2015-10-19 00:43:23', '2015-10-19 00:43:23', 0, 4, '四川省南充市南部县', 2, '南部县', ',2276,2367,', 2367); INSERT INTO `area` VALUES (2372, '2015-10-19 00:43:24', '2015-10-19 00:43:24', 0, 5, '四川省南充市营山县', 2, '营山县', ',2276,2367,', 2367); INSERT INTO `area` VALUES (2373, '2015-10-19 00:43:25', '2015-10-19 00:43:25', 0, 6, '四川省南充市蓬安县', 2, '蓬安县', ',2276,2367,', 2367); INSERT INTO `area` VALUES (2374, '2015-10-19 00:43:26', '2015-10-19 00:43:26', 0, 7, '四川省南充市仪陇县', 2, '仪陇县', ',2276,2367,', 2367); INSERT INTO `area` VALUES (2375, '2015-10-19 00:43:27', '2015-10-19 00:43:27', 0, 8, '四川省南充市西充县', 2, '西充县', ',2276,2367,', 2367); INSERT INTO `area` VALUES (2376, '2015-10-19 00:43:28', '2015-10-19 00:43:28', 0, 9, '四川省南充市阆中市', 2, '阆中市', ',2276,2367,', 2367); INSERT INTO `area` VALUES (2377, '2015-10-19 00:43:29', '2015-10-19 00:43:29', 0, 12, '四川省眉山市', 1, '眉山市', ',2276,', 2276); INSERT INTO `area` VALUES (2378, '2015-10-19 00:43:30', '2015-10-19 00:43:30', 0, 1, '四川省眉山市东坡区', 2, '东坡区', ',2276,2377,', 2377); INSERT INTO `area` VALUES (2379, '2015-10-19 00:43:31', '2015-10-19 00:43:31', 0, 2, '四川省眉山市仁寿县', 2, '仁寿县', ',2276,2377,', 2377); INSERT INTO `area` VALUES (2380, '2015-10-19 00:43:32', '2015-10-19 00:43:32', 0, 3, '四川省眉山市彭山县', 2, '彭山县', ',2276,2377,', 2377); INSERT INTO `area` VALUES (2381, '2015-10-19 00:43:33', '2015-10-19 00:43:33', 0, 4, '四川省眉山市洪雅县', 2, '洪雅县', ',2276,2377,', 2377); INSERT INTO `area` VALUES (2382, '2015-10-19 00:43:34', '2015-10-19 00:43:34', 0, 5, '四川省眉山市丹棱县', 2, '丹棱县', ',2276,2377,', 2377); INSERT INTO `area` VALUES (2383, '2015-10-19 00:43:35', '2015-10-19 00:43:35', 0, 6, '四川省眉山市青神县', 2, '青神县', ',2276,2377,', 2377); INSERT INTO `area` VALUES (2384, '2015-10-19 00:43:36', '2015-10-19 00:43:36', 0, 13, '四川省宜宾市', 1, '宜宾市', ',2276,', 2276); INSERT INTO `area` VALUES (2385, '2015-10-19 00:43:37', '2015-10-19 00:43:37', 0, 1, '四川省宜宾市翠屏区', 2, '翠屏区', ',2276,2384,', 2384); INSERT INTO `area` VALUES (2386, '2015-10-19 00:43:38', '2015-10-19 00:43:38', 0, 2, '四川省宜宾市南溪区', 2, '南溪区', ',2276,2384,', 2384); INSERT INTO `area` VALUES (2387, '2015-10-19 00:43:39', '2015-10-19 00:43:39', 0, 3, '四川省宜宾市宜宾县', 2, '宜宾县', ',2276,2384,', 2384); INSERT INTO `area` VALUES (2388, '2015-10-19 00:43:40', '2015-10-19 00:43:40', 0, 4, '四川省宜宾市江安县', 2, '江安县', ',2276,2384,', 2384); INSERT INTO `area` VALUES (2389, '2015-10-19 00:43:41', '2015-10-19 00:43:41', 0, 5, '四川省宜宾市长宁县', 2, '长宁县', ',2276,2384,', 2384); INSERT INTO `area` VALUES (2390, '2015-10-19 00:43:42', '2015-10-19 00:43:42', 0, 6, '四川省宜宾市高县', 2, '高县', ',2276,2384,', 2384); INSERT INTO `area` VALUES (2391, '2015-10-19 00:43:43', '2015-10-19 00:43:43', 0, 7, '四川省宜宾市珙县', 2, '珙县', ',2276,2384,', 2384); INSERT INTO `area` VALUES (2392, '2015-10-19 00:43:44', '2015-10-19 00:43:44', 0, 8, '四川省宜宾市筠连县', 2, '筠连县', ',2276,2384,', 2384); INSERT INTO `area` VALUES (2393, '2015-10-19 00:43:45', '2015-10-19 00:43:45', 0, 9, '四川省宜宾市兴文县', 2, '兴文县', ',2276,2384,', 2384); INSERT INTO `area` VALUES (2394, '2015-10-19 00:43:46', '2015-10-19 00:43:46', 0, 10, '四川省宜宾市屏山县', 2, '屏山县', ',2276,2384,', 2384); INSERT INTO `area` VALUES (2395, '2015-10-19 00:43:47', '2015-10-19 00:43:47', 0, 14, '四川省广安市', 1, '广安市', ',2276,', 2276); INSERT INTO `area` VALUES (2396, '2015-10-19 00:43:48', '2015-10-19 00:43:48', 0, 1, '四川省广安市广安区', 2, '广安区', ',2276,2395,', 2395); INSERT INTO `area` VALUES (2397, '2015-10-19 00:43:49', '2015-10-19 00:43:49', 0, 2, '四川省广安市前锋区', 2, '前锋区', ',2276,2395,', 2395); INSERT INTO `area` VALUES (2398, '2015-10-19 00:43:50', '2015-10-19 00:43:50', 0, 3, '四川省广安市岳池县', 2, '岳池县', ',2276,2395,', 2395); INSERT INTO `area` VALUES (2399, '2015-10-19 00:43:51', '2015-10-19 00:43:51', 0, 4, '四川省广安市武胜县', 2, '武胜县', ',2276,2395,', 2395); INSERT INTO `area` VALUES (2400, '2015-10-19 00:43:52', '2015-10-19 00:43:52', 0, 5, '四川省广安市邻水县', 2, '邻水县', ',2276,2395,', 2395); INSERT INTO `area` VALUES (2401, '2015-10-19 00:43:53', '2015-10-19 00:43:53', 0, 6, '四川省广安市华蓥市', 2, '华蓥市', ',2276,2395,', 2395); INSERT INTO `area` VALUES (2402, '2015-10-19 00:43:54', '2015-10-19 00:43:54', 0, 15, '四川省达州市', 1, '达州市', ',2276,', 2276); INSERT INTO `area` VALUES (2403, '2015-10-19 00:43:55', '2015-10-19 00:43:55', 0, 1, '四川省达州市通川区', 2, '通川区', ',2276,2402,', 2402); INSERT INTO `area` VALUES (2404, '2015-10-19 00:43:56', '2015-10-19 00:43:56', 0, 2, '四川省达州市达川区', 2, '达川区', ',2276,2402,', 2402); INSERT INTO `area` VALUES (2405, '2015-10-19 00:43:57', '2015-10-19 00:43:57', 0, 3, '四川省达州市宣汉县', 2, '宣汉县', ',2276,2402,', 2402); INSERT INTO `area` VALUES (2406, '2015-10-19 00:43:58', '2015-10-19 00:43:58', 0, 4, '四川省达州市开江县', 2, '开江县', ',2276,2402,', 2402); INSERT INTO `area` VALUES (2407, '2015-10-19 00:43:59', '2015-10-19 00:43:59', 0, 5, '四川省达州市大竹县', 2, '大竹县', ',2276,2402,', 2402); INSERT INTO `area` VALUES (2408, '2015-10-19 00:44:00', '2015-10-19 00:44:00', 0, 6, '四川省达州市渠县', 2, '渠县', ',2276,2402,', 2402); INSERT INTO `area` VALUES (2409, '2015-10-19 00:44:01', '2015-10-19 00:44:01', 0, 7, '四川省达州市万源市', 2, '万源市', ',2276,2402,', 2402); INSERT INTO `area` VALUES (2410, '2015-10-19 00:44:02', '2015-10-19 00:44:02', 0, 16, '四川省雅安市', 1, '雅安市', ',2276,', 2276); INSERT INTO `area` VALUES (2411, '2015-10-19 00:44:03', '2015-10-19 00:44:03', 0, 1, '四川省雅安市雨城区', 2, '雨城区', ',2276,2410,', 2410); INSERT INTO `area` VALUES (2412, '2015-10-19 00:44:04', '2015-10-19 00:44:04', 0, 2, '四川省雅安市名山区', 2, '名山区', ',2276,2410,', 2410); INSERT INTO `area` VALUES (2413, '2015-10-19 00:44:05', '2015-10-19 00:44:05', 0, 3, '四川省雅安市荥经县', 2, '荥经县', ',2276,2410,', 2410); INSERT INTO `area` VALUES (2414, '2015-10-19 00:44:06', '2015-10-19 00:44:06', 0, 4, '四川省雅安市汉源县', 2, '汉源县', ',2276,2410,', 2410); INSERT INTO `area` VALUES (2415, '2015-10-19 00:44:07', '2015-10-19 00:44:07', 0, 5, '四川省雅安市石棉县', 2, '石棉县', ',2276,2410,', 2410); INSERT INTO `area` VALUES (2416, '2015-10-19 00:44:08', '2015-10-19 00:44:08', 0, 6, '四川省雅安市天全县', 2, '天全县', ',2276,2410,', 2410); INSERT INTO `area` VALUES (2417, '2015-10-19 00:44:09', '2015-10-19 00:44:09', 0, 7, '四川省雅安市芦山县', 2, '芦山县', ',2276,2410,', 2410); INSERT INTO `area` VALUES (2418, '2015-10-19 00:44:10', '2015-10-19 00:44:10', 0, 8, '四川省雅安市宝兴县', 2, '宝兴县', ',2276,2410,', 2410); INSERT INTO `area` VALUES (2419, '2015-10-19 00:44:11', '2015-10-19 00:44:11', 0, 17, '四川省巴中市', 1, '巴中市', ',2276,', 2276); INSERT INTO `area` VALUES (2420, '2015-10-19 00:44:12', '2015-10-19 00:44:12', 0, 1, '四川省巴中市巴州区', 2, '巴州区', ',2276,2419,', 2419); INSERT INTO `area` VALUES (2421, '2015-10-19 00:44:13', '2015-10-19 00:44:13', 0, 2, '四川省巴中市恩阳区', 2, '恩阳区', ',2276,2419,', 2419); INSERT INTO `area` VALUES (2422, '2015-10-19 00:44:14', '2015-10-19 00:44:14', 0, 3, '四川省巴中市通江县', 2, '通江县', ',2276,2419,', 2419); INSERT INTO `area` VALUES (2423, '2015-10-19 00:44:15', '2015-10-19 00:44:15', 0, 4, '四川省巴中市南江县', 2, '南江县', ',2276,2419,', 2419); INSERT INTO `area` VALUES (2424, '2015-10-19 00:44:16', '2015-10-19 00:44:16', 0, 5, '四川省巴中市平昌县', 2, '平昌县', ',2276,2419,', 2419); INSERT INTO `area` VALUES (2425, '2015-10-19 00:44:17', '2015-10-19 00:44:17', 0, 18, '四川省资阳市', 1, '资阳市', ',2276,', 2276); INSERT INTO `area` VALUES (2426, '2015-10-19 00:44:18', '2015-10-19 00:44:18', 0, 1, '四川省资阳市雁江区', 2, '雁江区', ',2276,2425,', 2425); INSERT INTO `area` VALUES (2427, '2015-10-19 00:44:19', '2015-10-19 00:44:19', 0, 2, '四川省资阳市安岳县', 2, '安岳县', ',2276,2425,', 2425); INSERT INTO `area` VALUES (2428, '2015-10-19 00:44:20', '2015-10-19 00:44:20', 0, 3, '四川省资阳市乐至县', 2, '乐至县', ',2276,2425,', 2425); INSERT INTO `area` VALUES (2429, '2015-10-19 00:44:21', '2015-10-19 00:44:21', 0, 4, '四川省资阳市简阳市', 2, '简阳市', ',2276,2425,', 2425); INSERT INTO `area` VALUES (2430, '2015-10-19 00:44:22', '2015-10-19 00:44:22', 0, 19, '四川省阿坝藏族羌族自治州', 1, '阿坝藏族羌族自治州', ',2276,', 2276); INSERT INTO `area` VALUES (2431, '2015-10-19 00:44:23', '2015-10-19 00:44:23', 0, 1, '四川省阿坝藏族羌族自治州汶川县', 2, '汶川县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2432, '2015-10-19 00:44:24', '2015-10-19 00:44:24', 0, 2, '四川省阿坝藏族羌族自治州理县', 2, '理县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2433, '2015-10-19 00:44:25', '2015-10-19 00:44:25', 0, 3, '四川省阿坝藏族羌族自治州茂县', 2, '茂县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2434, '2015-10-19 00:44:26', '2015-10-19 00:44:26', 0, 4, '四川省阿坝藏族羌族自治州松潘县', 2, '松潘县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2435, '2015-10-19 00:44:27', '2015-10-19 00:44:27', 0, 5, '四川省阿坝藏族羌族自治州九寨沟县', 2, '九寨沟县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2436, '2015-10-19 00:44:28', '2015-10-19 00:44:28', 0, 6, '四川省阿坝藏族羌族自治州金川县', 2, '金川县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2437, '2015-10-19 00:44:29', '2015-10-19 00:44:29', 0, 7, '四川省阿坝藏族羌族自治州小金县', 2, '小金县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2438, '2015-10-19 00:44:30', '2015-10-19 00:44:30', 0, 8, '四川省阿坝藏族羌族自治州黑水县', 2, '黑水县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2439, '2015-10-19 00:44:31', '2015-10-19 00:44:31', 0, 9, '四川省阿坝藏族羌族自治州马尔康县', 2, '马尔康县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2440, '2015-10-19 00:44:32', '2015-10-19 00:44:32', 0, 10, '四川省阿坝藏族羌族自治州壤塘县', 2, '壤塘县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2441, '2015-10-19 00:44:33', '2015-10-19 00:44:33', 0, 11, '四川省阿坝藏族羌族自治州阿坝县', 2, '阿坝县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2442, '2015-10-19 00:44:34', '2015-10-19 00:44:34', 0, 12, '四川省阿坝藏族羌族自治州若尔盖县', 2, '若尔盖县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2443, '2015-10-19 00:44:35', '2015-10-19 00:44:35', 0, 13, '四川省阿坝藏族羌族自治州红原县', 2, '红原县', ',2276,2430,', 2430); INSERT INTO `area` VALUES (2444, '2015-10-19 00:44:36', '2015-10-19 00:44:36', 0, 20, '四川省甘孜藏族自治州', 1, '甘孜藏族自治州', ',2276,', 2276); INSERT INTO `area` VALUES (2445, '2015-10-19 00:44:37', '2015-10-19 00:44:37', 0, 1, '四川省甘孜藏族自治州康定县', 2, '康定县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2446, '2015-10-19 00:44:38', '2015-10-19 00:44:38', 0, 2, '四川省甘孜藏族自治州泸定县', 2, '泸定县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2447, '2015-10-19 00:44:39', '2015-10-19 00:44:39', 0, 3, '四川省甘孜藏族自治州丹巴县', 2, '丹巴县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2448, '2015-10-19 00:44:40', '2015-10-19 00:44:40', 0, 4, '四川省甘孜藏族自治州九龙县', 2, '九龙县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2449, '2015-10-19 00:44:41', '2015-10-19 00:44:41', 0, 5, '四川省甘孜藏族自治州雅江县', 2, '雅江县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2450, '2015-10-19 00:44:42', '2015-10-19 00:44:42', 0, 6, '四川省甘孜藏族自治州道孚县', 2, '道孚县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2451, '2015-10-19 00:44:43', '2015-10-19 00:44:43', 0, 7, '四川省甘孜藏族自治州炉霍县', 2, '炉霍县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2452, '2015-10-19 00:44:44', '2015-10-19 00:44:44', 0, 8, '四川省甘孜藏族自治州甘孜县', 2, '甘孜县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2453, '2015-10-19 00:44:45', '2015-10-19 00:44:45', 0, 9, '四川省甘孜藏族自治州新龙县', 2, '新龙县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2454, '2015-10-19 00:44:46', '2015-10-19 00:44:46', 0, 10, '四川省甘孜藏族自治州德格县', 2, '德格县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2455, '2015-10-19 00:44:47', '2015-10-19 00:44:47', 0, 11, '四川省甘孜藏族自治州白玉县', 2, '白玉县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2456, '2015-10-19 00:44:48', '2015-10-19 00:44:48', 0, 12, '四川省甘孜藏族自治州石渠县', 2, '石渠县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2457, '2015-10-19 00:44:49', '2015-10-19 00:44:49', 0, 13, '四川省甘孜藏族自治州色达县', 2, '色达县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2458, '2015-10-19 00:44:50', '2015-10-19 00:44:50', 0, 14, '四川省甘孜藏族自治州理塘县', 2, '理塘县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2459, '2015-10-19 00:44:51', '2015-10-19 00:44:51', 0, 15, '四川省甘孜藏族自治州巴塘县', 2, '巴塘县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2460, '2015-10-19 00:44:52', '2015-10-19 00:44:52', 0, 16, '四川省甘孜藏族自治州乡城县', 2, '乡城县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2461, '2015-10-19 00:44:53', '2015-10-19 00:44:53', 0, 17, '四川省甘孜藏族自治州稻城县', 2, '稻城县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2462, '2015-10-19 00:44:54', '2015-10-19 00:44:54', 0, 18, '四川省甘孜藏族自治州得荣县', 2, '得荣县', ',2276,2444,', 2444); INSERT INTO `area` VALUES (2463, '2015-10-19 00:44:55', '2015-10-19 00:44:55', 0, 21, '四川省凉山彝族自治州', 1, '凉山彝族自治州', ',2276,', 2276); INSERT INTO `area` VALUES (2464, '2015-10-19 00:44:56', '2015-10-19 00:44:56', 0, 1, '四川省凉山彝族自治州西昌市', 2, '西昌市', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2465, '2015-10-19 00:44:57', '2015-10-19 00:44:57', 0, 2, '四川省凉山彝族自治州木里藏族自治县', 2, '木里藏族自治县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2466, '2015-10-19 00:44:58', '2015-10-19 00:44:58', 0, 3, '四川省凉山彝族自治州盐源县', 2, '盐源县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2467, '2015-10-19 00:44:59', '2015-10-19 00:44:59', 0, 4, '四川省凉山彝族自治州德昌县', 2, '德昌县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2468, '2015-10-19 00:45:00', '2015-10-19 00:45:00', 0, 5, '四川省凉山彝族自治州会理县', 2, '会理县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2469, '2015-10-19 00:45:01', '2015-10-19 00:45:01', 0, 6, '四川省凉山彝族自治州会东县', 2, '会东县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2470, '2015-10-19 00:45:02', '2015-10-19 00:45:02', 0, 7, '四川省凉山彝族自治州宁南县', 2, '宁南县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2471, '2015-10-19 00:45:03', '2015-10-19 00:45:03', 0, 8, '四川省凉山彝族自治州普格县', 2, '普格县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2472, '2015-10-19 00:45:04', '2015-10-19 00:45:04', 0, 9, '四川省凉山彝族自治州布拖县', 2, '布拖县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2473, '2015-10-19 00:45:05', '2015-10-19 00:45:05', 0, 10, '四川省凉山彝族自治州金阳县', 2, '金阳县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2474, '2015-10-19 00:45:06', '2015-10-19 00:45:06', 0, 11, '四川省凉山彝族自治州昭觉县', 2, '昭觉县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2475, '2015-10-19 00:45:07', '2015-10-19 00:45:07', 0, 12, '四川省凉山彝族自治州喜德县', 2, '喜德县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2476, '2015-10-19 00:45:08', '2015-10-19 00:45:08', 0, 13, '四川省凉山彝族自治州冕宁县', 2, '冕宁县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2477, '2015-10-19 00:45:09', '2015-10-19 00:45:09', 0, 14, '四川省凉山彝族自治州越西县', 2, '越西县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2478, '2015-10-19 00:45:10', '2015-10-19 00:45:10', 0, 15, '四川省凉山彝族自治州甘洛县', 2, '甘洛县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2479, '2015-10-19 00:45:11', '2015-10-19 00:45:11', 0, 16, '四川省凉山彝族自治州美姑县', 2, '美姑县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2480, '2015-10-19 00:45:12', '2015-10-19 00:45:12', 0, 17, '四川省凉山彝族自治州雷波县', 2, '雷波县', ',2276,2463,', 2463); INSERT INTO `area` VALUES (2481, '2015-10-19 00:45:13', '2015-10-19 00:45:13', 0, 24, '贵州省', 0, '贵州省', ',', NULL); INSERT INTO `area` VALUES (2482, '2015-10-19 00:45:14', '2015-10-19 00:45:14', 0, 1, '贵州省贵阳市', 1, '贵阳市', ',2481,', 2481); INSERT INTO `area` VALUES (2483, '2015-10-19 00:45:15', '2015-10-19 00:45:15', 0, 1, '贵州省贵阳市南明区', 2, '南明区', ',2481,2482,', 2482); INSERT INTO `area` VALUES (2484, '2015-10-19 00:45:16', '2015-10-19 00:45:16', 0, 2, '贵州省贵阳市云岩区', 2, '云岩区', ',2481,2482,', 2482); INSERT INTO `area` VALUES (2485, '2015-10-19 00:45:17', '2015-10-19 00:45:17', 0, 3, '贵州省贵阳市花溪区', 2, '花溪区', ',2481,2482,', 2482); INSERT INTO `area` VALUES (2486, '2015-10-19 00:45:18', '2015-10-19 00:45:18', 0, 4, '贵州省贵阳市乌当区', 2, '乌当区', ',2481,2482,', 2482); INSERT INTO `area` VALUES (2487, '2015-10-19 00:45:19', '2015-10-19 00:45:19', 0, 5, '贵州省贵阳市白云区', 2, '白云区', ',2481,2482,', 2482); INSERT INTO `area` VALUES (2488, '2015-10-19 00:45:20', '2015-10-19 00:45:20', 0, 6, '贵州省贵阳市观山湖区', 2, '观山湖区', ',2481,2482,', 2482); INSERT INTO `area` VALUES (2489, '2015-10-19 00:45:21', '2015-10-19 00:45:21', 0, 7, '贵州省贵阳市开阳县', 2, '开阳县', ',2481,2482,', 2482); INSERT INTO `area` VALUES (2490, '2015-10-19 00:45:22', '2015-10-19 00:45:22', 0, 8, '贵州省贵阳市息烽县', 2, '息烽县', ',2481,2482,', 2482); INSERT INTO `area` VALUES (2491, '2015-10-19 00:45:23', '2015-10-19 00:45:23', 0, 9, '贵州省贵阳市修文县', 2, '修文县', ',2481,2482,', 2482); INSERT INTO `area` VALUES (2492, '2015-10-19 00:45:24', '2015-10-19 00:45:24', 0, 10, '贵州省贵阳市清镇市', 2, '清镇市', ',2481,2482,', 2482); INSERT INTO `area` VALUES (2493, '2015-10-19 00:45:25', '2015-10-19 00:45:25', 0, 2, '贵州省六盘水市', 1, '六盘水市', ',2481,', 2481); INSERT INTO `area` VALUES (2494, '2015-10-19 00:45:26', '2015-10-19 00:45:26', 0, 1, '贵州省六盘水市钟山区', 2, '钟山区', ',2481,2493,', 2493); INSERT INTO `area` VALUES (2495, '2015-10-19 00:45:27', '2015-10-19 00:45:27', 0, 2, '贵州省六盘水市六枝特区', 2, '六枝特区', ',2481,2493,', 2493); INSERT INTO `area` VALUES (2496, '2015-10-19 00:45:28', '2015-10-19 00:45:28', 0, 3, '贵州省六盘水市水城县', 2, '水城县', ',2481,2493,', 2493); INSERT INTO `area` VALUES (2497, '2015-10-19 00:45:29', '2015-10-19 00:45:29', 0, 4, '贵州省六盘水市盘县', 2, '盘县', ',2481,2493,', 2493); INSERT INTO `area` VALUES (2498, '2015-10-19 00:45:30', '2015-10-19 00:45:30', 0, 3, '贵州省遵义市', 1, '遵义市', ',2481,', 2481); INSERT INTO `area` VALUES (2499, '2015-10-19 00:45:31', '2015-10-19 00:45:31', 0, 1, '贵州省遵义市红花岗区', 2, '红花岗区', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2500, '2015-10-19 00:45:32', '2015-10-19 00:45:32', 0, 2, '贵州省遵义市汇川区', 2, '汇川区', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2501, '2015-10-19 00:45:33', '2015-10-19 00:45:33', 0, 3, '贵州省遵义市遵义县', 2, '遵义县', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2502, '2015-10-19 00:45:34', '2015-10-19 00:45:34', 0, 4, '贵州省遵义市桐梓县', 2, '桐梓县', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2503, '2015-10-19 00:45:35', '2015-10-19 00:45:35', 0, 5, '贵州省遵义市绥阳县', 2, '绥阳县', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2504, '2015-10-19 00:45:36', '2015-10-19 00:45:36', 0, 6, '贵州省遵义市正安县', 2, '正安县', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2505, '2015-10-19 00:45:37', '2015-10-19 00:45:37', 0, 7, '贵州省遵义市道真仡佬族苗族自治县', 2, '道真仡佬族苗族自治县', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2506, '2015-10-19 00:45:38', '2015-10-19 00:45:38', 0, 8, '贵州省遵义市务川仡佬族苗族自治县', 2, '务川仡佬族苗族自治县', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2507, '2015-10-19 00:45:39', '2015-10-19 00:45:39', 0, 9, '贵州省遵义市凤冈县', 2, '凤冈县', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2508, '2015-10-19 00:45:40', '2015-10-19 00:45:40', 0, 10, '贵州省遵义市湄潭县', 2, '湄潭县', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2509, '2015-10-19 00:45:41', '2015-10-19 00:45:41', 0, 11, '贵州省遵义市余庆县', 2, '余庆县', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2510, '2015-10-19 00:45:42', '2015-10-19 00:45:42', 0, 12, '贵州省遵义市习水县', 2, '习水县', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2511, '2015-10-19 00:45:43', '2015-10-19 00:45:43', 0, 13, '贵州省遵义市赤水市', 2, '赤水市', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2512, '2015-10-19 00:45:44', '2015-10-19 00:45:44', 0, 14, '贵州省遵义市仁怀市', 2, '仁怀市', ',2481,2498,', 2498); INSERT INTO `area` VALUES (2513, '2015-10-19 00:45:45', '2015-10-19 00:45:45', 0, 4, '贵州省安顺市', 1, '安顺市', ',2481,', 2481); INSERT INTO `area` VALUES (2514, '2015-10-19 00:45:46', '2015-10-19 00:45:46', 0, 1, '贵州省安顺市西秀区', 2, '西秀区', ',2481,2513,', 2513); INSERT INTO `area` VALUES (2515, '2015-10-19 00:45:47', '2015-10-19 00:45:47', 0, 2, '贵州省安顺市平坝县', 2, '平坝县', ',2481,2513,', 2513); INSERT INTO `area` VALUES (2516, '2015-10-19 00:45:48', '2015-10-19 00:45:48', 0, 3, '贵州省安顺市普定县', 2, '普定县', ',2481,2513,', 2513); INSERT INTO `area` VALUES (2517, '2015-10-19 00:45:49', '2015-10-19 00:45:49', 0, 4, '贵州省安顺市镇宁布依族苗族自治县', 2, '镇宁布依族苗族自治县', ',2481,2513,', 2513); INSERT INTO `area` VALUES (2518, '2015-10-19 00:45:50', '2015-10-19 00:45:50', 0, 5, '贵州省安顺市关岭布依族苗族自治县', 2, '关岭布依族苗族自治县', ',2481,2513,', 2513); INSERT INTO `area` VALUES (2519, '2015-10-19 00:45:51', '2015-10-19 00:45:51', 0, 6, '贵州省安顺市紫云苗族布依族自治县', 2, '紫云苗族布依族自治县', ',2481,2513,', 2513); INSERT INTO `area` VALUES (2520, '2015-10-19 00:45:52', '2015-10-19 00:45:52', 0, 5, '贵州省毕节市', 1, '毕节市', ',2481,', 2481); INSERT INTO `area` VALUES (2521, '2015-10-19 00:45:53', '2015-10-19 00:45:53', 0, 1, '贵州省毕节市七星关区', 2, '七星关区', ',2481,2520,', 2520); INSERT INTO `area` VALUES (2522, '2015-10-19 00:45:54', '2015-10-19 00:45:54', 0, 2, '贵州省毕节市大方县', 2, '大方县', ',2481,2520,', 2520); INSERT INTO `area` VALUES (2523, '2015-10-19 00:45:55', '2015-10-19 00:45:55', 0, 3, '贵州省毕节市黔西县', 2, '黔西县', ',2481,2520,', 2520); INSERT INTO `area` VALUES (2524, '2015-10-19 00:45:56', '2015-10-19 00:45:56', 0, 4, '贵州省毕节市金沙县', 2, '金沙县', ',2481,2520,', 2520); INSERT INTO `area` VALUES (2525, '2015-10-19 00:45:57', '2015-10-19 00:45:57', 0, 5, '贵州省毕节市织金县', 2, '织金县', ',2481,2520,', 2520); INSERT INTO `area` VALUES (2526, '2015-10-19 00:45:58', '2015-10-19 00:45:58', 0, 6, '贵州省毕节市纳雍县', 2, '纳雍县', ',2481,2520,', 2520); INSERT INTO `area` VALUES (2527, '2015-10-19 00:45:59', '2015-10-19 00:45:59', 0, 7, '贵州省毕节市威宁彝族回族苗族自治县', 2, '威宁彝族回族苗族自治县', ',2481,2520,', 2520); INSERT INTO `area` VALUES (2528, '2015-10-19 00:46:00', '2015-10-19 00:46:00', 0, 8, '贵州省毕节市赫章县', 2, '赫章县', ',2481,2520,', 2520); INSERT INTO `area` VALUES (2529, '2015-10-19 00:46:01', '2015-10-19 00:46:01', 0, 6, '贵州省铜仁市', 1, '铜仁市', ',2481,', 2481); INSERT INTO `area` VALUES (2530, '2015-10-19 00:46:02', '2015-10-19 00:46:02', 0, 1, '贵州省铜仁市碧江区', 2, '碧江区', ',2481,2529,', 2529); INSERT INTO `area` VALUES (2531, '2015-10-19 00:46:03', '2015-10-19 00:46:03', 0, 2, '贵州省铜仁市万山区', 2, '万山区', ',2481,2529,', 2529); INSERT INTO `area` VALUES (2532, '2015-10-19 00:46:04', '2015-10-19 00:46:04', 0, 3, '贵州省铜仁市江口县', 2, '江口县', ',2481,2529,', 2529); INSERT INTO `area` VALUES (2533, '2015-10-19 00:46:05', '2015-10-19 00:46:05', 0, 4, '贵州省铜仁市玉屏侗族自治县', 2, '玉屏侗族自治县', ',2481,2529,', 2529); INSERT INTO `area` VALUES (2534, '2015-10-19 00:46:06', '2015-10-19 00:46:06', 0, 5, '贵州省铜仁市石阡县', 2, '石阡县', ',2481,2529,', 2529); INSERT INTO `area` VALUES (2535, '2015-10-19 00:46:07', '2015-10-19 00:46:07', 0, 6, '贵州省铜仁市思南县', 2, '思南县', ',2481,2529,', 2529); INSERT INTO `area` VALUES (2536, '2015-10-19 00:46:08', '2015-10-19 00:46:08', 0, 7, '贵州省铜仁市印江土家族苗族自治县', 2, '印江土家族苗族自治县', ',2481,2529,', 2529); INSERT INTO `area` VALUES (2537, '2015-10-19 00:46:09', '2015-10-19 00:46:09', 0, 8, '贵州省铜仁市德江县', 2, '德江县', ',2481,2529,', 2529); INSERT INTO `area` VALUES (2538, '2015-10-19 00:46:10', '2015-10-19 00:46:10', 0, 9, '贵州省铜仁市沿河土家族自治县', 2, '沿河土家族自治县', ',2481,2529,', 2529); INSERT INTO `area` VALUES (2539, '2015-10-19 00:46:11', '2015-10-19 00:46:11', 0, 10, '贵州省铜仁市松桃苗族自治县', 2, '松桃苗族自治县', ',2481,2529,', 2529); INSERT INTO `area` VALUES (2540, '2015-10-19 00:46:12', '2015-10-19 00:46:12', 0, 7, '贵州省黔西南布依族苗族自治州', 1, '黔西南布依族苗族自治州', ',2481,', 2481); INSERT INTO `area` VALUES (2541, '2015-10-19 00:46:13', '2015-10-19 00:46:13', 0, 1, '贵州省黔西南布依族苗族自治州兴义市', 2, '兴义市', ',2481,2540,', 2540); INSERT INTO `area` VALUES (2542, '2015-10-19 00:46:14', '2015-10-19 00:46:14', 0, 2, '贵州省黔西南布依族苗族自治州兴仁县', 2, '兴仁县', ',2481,2540,', 2540); INSERT INTO `area` VALUES (2543, '2015-10-19 00:46:15', '2015-10-19 00:46:15', 0, 3, '贵州省黔西南布依族苗族自治州普安县', 2, '普安县', ',2481,2540,', 2540); INSERT INTO `area` VALUES (2544, '2015-10-19 00:46:16', '2015-10-19 00:46:16', 0, 4, '贵州省黔西南布依族苗族自治州晴隆县', 2, '晴隆县', ',2481,2540,', 2540); INSERT INTO `area` VALUES (2545, '2015-10-19 00:46:17', '2015-10-19 00:46:17', 0, 5, '贵州省黔西南布依族苗族自治州贞丰县', 2, '贞丰县', ',2481,2540,', 2540); INSERT INTO `area` VALUES (2546, '2015-10-19 00:46:18', '2015-10-19 00:46:18', 0, 6, '贵州省黔西南布依族苗族自治州望谟县', 2, '望谟县', ',2481,2540,', 2540); INSERT INTO `area` VALUES (2547, '2015-10-19 00:46:19', '2015-10-19 00:46:19', 0, 7, '贵州省黔西南布依族苗族自治州册亨县', 2, '册亨县', ',2481,2540,', 2540); INSERT INTO `area` VALUES (2548, '2015-10-19 00:46:20', '2015-10-19 00:46:20', 0, 8, '贵州省黔西南布依族苗族自治州安龙县', 2, '安龙县', ',2481,2540,', 2540); INSERT INTO `area` VALUES (2549, '2015-10-19 00:46:21', '2015-10-19 00:46:21', 0, 8, '贵州省黔东南苗族侗族自治州', 1, '黔东南苗族侗族自治州', ',2481,', 2481); INSERT INTO `area` VALUES (2550, '2015-10-19 00:46:22', '2015-10-19 00:46:22', 0, 1, '贵州省黔东南苗族侗族自治州凯里市', 2, '凯里市', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2551, '2015-10-19 00:46:23', '2015-10-19 00:46:23', 0, 2, '贵州省黔东南苗族侗族自治州黄平县', 2, '黄平县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2552, '2015-10-19 00:46:24', '2015-10-19 00:46:24', 0, 3, '贵州省黔东南苗族侗族自治州施秉县', 2, '施秉县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2553, '2015-10-19 00:46:25', '2015-10-19 00:46:25', 0, 4, '贵州省黔东南苗族侗族自治州三穗县', 2, '三穗县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2554, '2015-10-19 00:46:26', '2015-10-19 00:46:26', 0, 5, '贵州省黔东南苗族侗族自治州镇远县', 2, '镇远县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2555, '2015-10-19 00:46:27', '2015-10-19 00:46:27', 0, 6, '贵州省黔东南苗族侗族自治州岑巩县', 2, '岑巩县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2556, '2015-10-19 00:46:28', '2015-10-19 00:46:28', 0, 7, '贵州省黔东南苗族侗族自治州天柱县', 2, '天柱县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2557, '2015-10-19 00:46:29', '2015-10-19 00:46:29', 0, 8, '贵州省黔东南苗族侗族自治州锦屏县', 2, '锦屏县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2558, '2015-10-19 00:46:30', '2015-10-19 00:46:30', 0, 9, '贵州省黔东南苗族侗族自治州剑河县', 2, '剑河县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2559, '2015-10-19 00:46:31', '2015-10-19 00:46:31', 0, 10, '贵州省黔东南苗族侗族自治州台江县', 2, '台江县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2560, '2015-10-19 00:46:32', '2015-10-19 00:46:32', 0, 11, '贵州省黔东南苗族侗族自治州黎平县', 2, '黎平县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2561, '2015-10-19 00:46:33', '2015-10-19 00:46:33', 0, 12, '贵州省黔东南苗族侗族自治州榕江县', 2, '榕江县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2562, '2015-10-19 00:46:34', '2015-10-19 00:46:34', 0, 13, '贵州省黔东南苗族侗族自治州从江县', 2, '从江县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2563, '2015-10-19 00:46:35', '2015-10-19 00:46:35', 0, 14, '贵州省黔东南苗族侗族自治州雷山县', 2, '雷山县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2564, '2015-10-19 00:46:36', '2015-10-19 00:46:36', 0, 15, '贵州省黔东南苗族侗族自治州麻江县', 2, '麻江县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2565, '2015-10-19 00:46:37', '2015-10-19 00:46:37', 0, 16, '贵州省黔东南苗族侗族自治州丹寨县', 2, '丹寨县', ',2481,2549,', 2549); INSERT INTO `area` VALUES (2566, '2015-10-19 00:46:38', '2015-10-19 00:46:38', 0, 9, '贵州省黔南布依族苗族自治州', 1, '黔南布依族苗族自治州', ',2481,', 2481); INSERT INTO `area` VALUES (2567, '2015-10-19 00:46:39', '2015-10-19 00:46:39', 0, 1, '贵州省黔南布依族苗族自治州都匀市', 2, '都匀市', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2568, '2015-10-19 00:46:40', '2015-10-19 00:46:40', 0, 2, '贵州省黔南布依族苗族自治州福泉市', 2, '福泉市', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2569, '2015-10-19 00:46:41', '2015-10-19 00:46:41', 0, 3, '贵州省黔南布依族苗族自治州荔波县', 2, '荔波县', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2570, '2015-10-19 00:46:42', '2015-10-19 00:46:42', 0, 4, '贵州省黔南布依族苗族自治州贵定县', 2, '贵定县', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2571, '2015-10-19 00:46:43', '2015-10-19 00:46:43', 0, 5, '贵州省黔南布依族苗族自治州瓮安县', 2, '瓮安县', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2572, '2015-10-19 00:46:44', '2015-10-19 00:46:44', 0, 6, '贵州省黔南布依族苗族自治州独山县', 2, '独山县', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2573, '2015-10-19 00:46:45', '2015-10-19 00:46:45', 0, 7, '贵州省黔南布依族苗族自治州平塘县', 2, '平塘县', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2574, '2015-10-19 00:46:46', '2015-10-19 00:46:46', 0, 8, '贵州省黔南布依族苗族自治州罗甸县', 2, '罗甸县', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2575, '2015-10-19 00:46:47', '2015-10-19 00:46:47', 0, 9, '贵州省黔南布依族苗族自治州长顺县', 2, '长顺县', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2576, '2015-10-19 00:46:48', '2015-10-19 00:46:48', 0, 10, '贵州省黔南布依族苗族自治州龙里县', 2, '龙里县', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2577, '2015-10-19 00:46:49', '2015-10-19 00:46:49', 0, 11, '贵州省黔南布依族苗族自治州惠水县', 2, '惠水县', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2578, '2015-10-19 00:46:50', '2015-10-19 00:46:50', 0, 12, '贵州省黔南布依族苗族自治州三都水族自治县', 2, '三都水族自治县', ',2481,2566,', 2566); INSERT INTO `area` VALUES (2579, '2015-10-19 00:46:51', '2015-10-19 00:46:51', 0, 25, '云南省', 0, '云南省', ',', NULL); INSERT INTO `area` VALUES (2580, '2015-10-19 00:46:52', '2015-10-19 00:46:52', 0, 1, '云南省昆明市', 1, '昆明市', ',2579,', 2579); INSERT INTO `area` VALUES (2581, '2015-10-19 00:46:53', '2015-10-19 00:46:53', 0, 1, '云南省昆明市五华区', 2, '五华区', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2582, '2015-10-19 00:46:54', '2015-10-19 00:46:54', 0, 2, '云南省昆明市盘龙区', 2, '盘龙区', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2583, '2015-10-19 00:46:55', '2015-10-19 00:46:55', 0, 3, '云南省昆明市官渡区', 2, '官渡区', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2584, '2015-10-19 00:46:56', '2015-10-19 00:46:56', 0, 4, '云南省昆明市西山区', 2, '西山区', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2585, '2015-10-19 00:46:57', '2015-10-19 00:46:57', 0, 5, '云南省昆明市东川区', 2, '东川区', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2586, '2015-10-19 00:46:58', '2015-10-19 00:46:58', 0, 6, '云南省昆明市呈贡区', 2, '呈贡区', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2587, '2015-10-19 00:46:59', '2015-10-19 00:46:59', 0, 7, '云南省昆明市晋宁县', 2, '晋宁县', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2588, '2015-10-19 00:47:00', '2015-10-19 00:47:00', 0, 8, '云南省昆明市富民县', 2, '富民县', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2589, '2015-10-19 00:47:01', '2015-10-19 00:47:01', 0, 9, '云南省昆明市宜良县', 2, '宜良县', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2590, '2015-10-19 00:47:02', '2015-10-19 00:47:02', 0, 10, '云南省昆明市石林彝族自治县', 2, '石林彝族自治县', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2591, '2015-10-19 00:47:03', '2015-10-19 00:47:03', 0, 11, '云南省昆明市嵩明县', 2, '嵩明县', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2592, '2015-10-19 00:47:04', '2015-10-19 00:47:04', 0, 12, '云南省昆明市禄劝彝族苗族自治县', 2, '禄劝彝族苗族自治县', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2593, '2015-10-19 00:47:05', '2015-10-19 00:47:05', 0, 13, '云南省昆明市寻甸回族彝族自治县', 2, '寻甸回族彝族自治县', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2594, '2015-10-19 00:47:06', '2015-10-19 00:47:06', 0, 14, '云南省昆明市安宁市', 2, '安宁市', ',2579,2580,', 2580); INSERT INTO `area` VALUES (2595, '2015-10-19 00:47:07', '2015-10-19 00:47:07', 0, 2, '云南省曲靖市', 1, '曲靖市', ',2579,', 2579); INSERT INTO `area` VALUES (2596, '2015-10-19 00:47:08', '2015-10-19 00:47:08', 0, 1, '云南省曲靖市麒麟区', 2, '麒麟区', ',2579,2595,', 2595); INSERT INTO `area` VALUES (2597, '2015-10-19 00:47:09', '2015-10-19 00:47:09', 0, 2, '云南省曲靖市马龙县', 2, '马龙县', ',2579,2595,', 2595); INSERT INTO `area` VALUES (2598, '2015-10-19 00:47:10', '2015-10-19 00:47:10', 0, 3, '云南省曲靖市陆良县', 2, '陆良县', ',2579,2595,', 2595); INSERT INTO `area` VALUES (2599, '2015-10-19 00:47:11', '2015-10-19 00:47:11', 0, 4, '云南省曲靖市师宗县', 2, '师宗县', ',2579,2595,', 2595); INSERT INTO `area` VALUES (2600, '2015-10-19 00:47:12', '2015-10-19 00:47:12', 0, 5, '云南省曲靖市罗平县', 2, '罗平县', ',2579,2595,', 2595); INSERT INTO `area` VALUES (2601, '2015-10-19 00:47:13', '2015-10-19 00:47:13', 0, 6, '云南省曲靖市富源县', 2, '富源县', ',2579,2595,', 2595); INSERT INTO `area` VALUES (2602, '2015-10-19 00:47:14', '2015-10-19 00:47:14', 0, 7, '云南省曲靖市会泽县', 2, '会泽县', ',2579,2595,', 2595); INSERT INTO `area` VALUES (2603, '2015-10-19 00:47:15', '2015-10-19 00:47:15', 0, 8, '云南省曲靖市沾益县', 2, '沾益县', ',2579,2595,', 2595); INSERT INTO `area` VALUES (2604, '2015-10-19 00:47:16', '2015-10-19 00:47:16', 0, 9, '云南省曲靖市宣威市', 2, '宣威市', ',2579,2595,', 2595); INSERT INTO `area` VALUES (2605, '2015-10-19 00:47:17', '2015-10-19 00:47:17', 0, 3, '云南省玉溪市', 1, '玉溪市', ',2579,', 2579); INSERT INTO `area` VALUES (2606, '2015-10-19 00:47:18', '2015-10-19 00:47:18', 0, 1, '云南省玉溪市红塔区', 2, '红塔区', ',2579,2605,', 2605); INSERT INTO `area` VALUES (2607, '2015-10-19 00:47:19', '2015-10-19 00:47:19', 0, 2, '云南省玉溪市江川县', 2, '江川县', ',2579,2605,', 2605); INSERT INTO `area` VALUES (2608, '2015-10-19 00:47:20', '2015-10-19 00:47:20', 0, 3, '云南省玉溪市澄江县', 2, '澄江县', ',2579,2605,', 2605); INSERT INTO `area` VALUES (2609, '2015-10-19 00:47:21', '2015-10-19 00:47:21', 0, 4, '云南省玉溪市通海县', 2, '通海县', ',2579,2605,', 2605); INSERT INTO `area` VALUES (2610, '2015-10-19 00:47:22', '2015-10-19 00:47:22', 0, 5, '云南省玉溪市华宁县', 2, '华宁县', ',2579,2605,', 2605); INSERT INTO `area` VALUES (2611, '2015-10-19 00:47:23', '2015-10-19 00:47:23', 0, 6, '云南省玉溪市易门县', 2, '易门县', ',2579,2605,', 2605); INSERT INTO `area` VALUES (2612, '2015-10-19 00:47:24', '2015-10-19 00:47:24', 0, 7, '云南省玉溪市峨山彝族自治县', 2, '峨山彝族自治县', ',2579,2605,', 2605); INSERT INTO `area` VALUES (2613, '2015-10-19 00:47:25', '2015-10-19 00:47:25', 0, 8, '云南省玉溪市新平彝族傣族自治县', 2, '新平彝族傣族自治县', ',2579,2605,', 2605); INSERT INTO `area` VALUES (2614, '2015-10-19 00:47:26', '2015-10-19 00:47:26', 0, 9, '云南省玉溪市元江哈尼族彝族傣族自治县', 2, '元江哈尼族彝族傣族自治县', ',2579,2605,', 2605); INSERT INTO `area` VALUES (2615, '2015-10-19 00:47:27', '2015-10-19 00:47:27', 0, 4, '云南省保山市', 1, '保山市', ',2579,', 2579); INSERT INTO `area` VALUES (2616, '2015-10-19 00:47:28', '2015-10-19 00:47:28', 0, 1, '云南省保山市隆阳区', 2, '隆阳区', ',2579,2615,', 2615); INSERT INTO `area` VALUES (2617, '2015-10-19 00:47:29', '2015-10-19 00:47:29', 0, 2, '云南省保山市施甸县', 2, '施甸县', ',2579,2615,', 2615); INSERT INTO `area` VALUES (2618, '2015-10-19 00:47:30', '2015-10-19 00:47:30', 0, 3, '云南省保山市腾冲县', 2, '腾冲县', ',2579,2615,', 2615); INSERT INTO `area` VALUES (2619, '2015-10-19 00:47:31', '2015-10-19 00:47:31', 0, 4, '云南省保山市龙陵县', 2, '龙陵县', ',2579,2615,', 2615); INSERT INTO `area` VALUES (2620, '2015-10-19 00:47:32', '2015-10-19 00:47:32', 0, 5, '云南省保山市昌宁县', 2, '昌宁县', ',2579,2615,', 2615); INSERT INTO `area` VALUES (2621, '2015-10-19 00:47:33', '2015-10-19 00:47:33', 0, 5, '云南省昭通市', 1, '昭通市', ',2579,', 2579); INSERT INTO `area` VALUES (2622, '2015-10-19 00:47:34', '2015-10-19 00:47:34', 0, 1, '云南省昭通市昭阳区', 2, '昭阳区', ',2579,2621,', 2621); INSERT INTO `area` VALUES (2623, '2015-10-19 00:47:35', '2015-10-19 00:47:35', 0, 2, '云南省昭通市鲁甸县', 2, '鲁甸县', ',2579,2621,', 2621); INSERT INTO `area` VALUES (2624, '2015-10-19 00:47:36', '2015-10-19 00:47:36', 0, 3, '云南省昭通市巧家县', 2, '巧家县', ',2579,2621,', 2621); INSERT INTO `area` VALUES (2625, '2015-10-19 00:47:37', '2015-10-19 00:47:37', 0, 4, '云南省昭通市盐津县', 2, '盐津县', ',2579,2621,', 2621); INSERT INTO `area` VALUES (2626, '2015-10-19 00:47:38', '2015-10-19 00:47:38', 0, 5, '云南省昭通市大关县', 2, '大关县', ',2579,2621,', 2621); INSERT INTO `area` VALUES (2627, '2015-10-19 00:47:39', '2015-10-19 00:47:39', 0, 6, '云南省昭通市永善县', 2, '永善县', ',2579,2621,', 2621); INSERT INTO `area` VALUES (2628, '2015-10-19 00:47:40', '2015-10-19 00:47:40', 0, 7, '云南省昭通市绥江县', 2, '绥江县', ',2579,2621,', 2621); INSERT INTO `area` VALUES (2629, '2015-10-19 00:47:41', '2015-10-19 00:47:41', 0, 8, '云南省昭通市镇雄县', 2, '镇雄县', ',2579,2621,', 2621); INSERT INTO `area` VALUES (2630, '2015-10-19 00:47:42', '2015-10-19 00:47:42', 0, 9, '云南省昭通市彝良县', 2, '彝良县', ',2579,2621,', 2621); INSERT INTO `area` VALUES (2631, '2015-10-19 00:47:43', '2015-10-19 00:47:43', 0, 10, '云南省昭通市威信县', 2, '威信县', ',2579,2621,', 2621); INSERT INTO `area` VALUES (2632, '2015-10-19 00:47:44', '2015-10-19 00:47:44', 0, 11, '云南省昭通市水富县', 2, '水富县', ',2579,2621,', 2621); INSERT INTO `area` VALUES (2633, '2015-10-19 00:47:45', '2015-10-19 00:47:45', 0, 6, '云南省丽江市', 1, '丽江市', ',2579,', 2579); INSERT INTO `area` VALUES (2634, '2015-10-19 00:47:46', '2015-10-19 00:47:46', 0, 1, '云南省丽江市古城区', 2, '古城区', ',2579,2633,', 2633); INSERT INTO `area` VALUES (2635, '2015-10-19 00:47:47', '2015-10-19 00:47:47', 0, 2, '云南省丽江市玉龙纳西族自治县', 2, '玉龙纳西族自治县', ',2579,2633,', 2633); INSERT INTO `area` VALUES (2636, '2015-10-19 00:47:48', '2015-10-19 00:47:48', 0, 3, '云南省丽江市永胜县', 2, '永胜县', ',2579,2633,', 2633); INSERT INTO `area` VALUES (2637, '2015-10-19 00:47:49', '2015-10-19 00:47:49', 0, 4, '云南省丽江市华坪县', 2, '华坪县', ',2579,2633,', 2633); INSERT INTO `area` VALUES (2638, '2015-10-19 00:47:50', '2015-10-19 00:47:50', 0, 5, '云南省丽江市宁蒗彝族自治县', 2, '宁蒗彝族自治县', ',2579,2633,', 2633); INSERT INTO `area` VALUES (2639, '2015-10-19 00:47:51', '2015-10-19 00:47:51', 0, 7, '云南省普洱市', 1, '普洱市', ',2579,', 2579); INSERT INTO `area` VALUES (2640, '2015-10-19 00:47:52', '2015-10-19 00:47:52', 0, 1, '云南省普洱市思茅区', 2, '思茅区', ',2579,2639,', 2639); INSERT INTO `area` VALUES (2641, '2015-10-19 00:47:53', '2015-10-19 00:47:53', 0, 2, '云南省普洱市宁洱哈尼族彝族自治县', 2, '宁洱哈尼族彝族自治县', ',2579,2639,', 2639); INSERT INTO `area` VALUES (2642, '2015-10-19 00:47:54', '2015-10-19 00:47:54', 0, 3, '云南省普洱市墨江哈尼族自治县', 2, '墨江哈尼族自治县', ',2579,2639,', 2639); INSERT INTO `area` VALUES (2643, '2015-10-19 00:47:55', '2015-10-19 00:47:55', 0, 4, '云南省普洱市景东彝族自治县', 2, '景东彝族自治县', ',2579,2639,', 2639); INSERT INTO `area` VALUES (2644, '2015-10-19 00:47:56', '2015-10-19 00:47:56', 0, 5, '云南省普洱市景谷傣族彝族自治县', 2, '景谷傣族彝族自治县', ',2579,2639,', 2639); INSERT INTO `area` VALUES (2645, '2015-10-19 00:47:57', '2015-10-19 00:47:57', 0, 6, '云南省普洱市镇沅彝族哈尼族拉祜族自治县', 2, '镇沅彝族哈尼族拉祜族自治县', ',2579,2639,', 2639); INSERT INTO `area` VALUES (2646, '2015-10-19 00:47:58', '2015-10-19 00:47:58', 0, 7, '云南省普洱市江城哈尼族彝族自治县', 2, '江城哈尼族彝族自治县', ',2579,2639,', 2639); INSERT INTO `area` VALUES (2647, '2015-10-19 00:47:59', '2015-10-19 00:47:59', 0, 8, '云南省普洱市孟连傣族拉祜族佤族自治县', 2, '孟连傣族拉祜族佤族自治县', ',2579,2639,', 2639); INSERT INTO `area` VALUES (2648, '2015-10-19 00:48:00', '2015-10-19 00:48:00', 0, 9, '云南省普洱市澜沧拉祜族自治县', 2, '澜沧拉祜族自治县', ',2579,2639,', 2639); INSERT INTO `area` VALUES (2649, '2015-10-19 00:48:01', '2015-10-19 00:48:01', 0, 10, '云南省普洱市西盟佤族自治县', 2, '西盟佤族自治县', ',2579,2639,', 2639); INSERT INTO `area` VALUES (2650, '2015-10-19 00:48:02', '2015-10-19 00:48:02', 0, 8, '云南省临沧市', 1, '临沧市', ',2579,', 2579); INSERT INTO `area` VALUES (2651, '2015-10-19 00:48:03', '2015-10-19 00:48:03', 0, 1, '云南省临沧市临翔区', 2, '临翔区', ',2579,2650,', 2650); INSERT INTO `area` VALUES (2652, '2015-10-19 00:48:04', '2015-10-19 00:48:04', 0, 2, '云南省临沧市凤庆县', 2, '凤庆县', ',2579,2650,', 2650); INSERT INTO `area` VALUES (2653, '2015-10-19 00:48:05', '2015-10-19 00:48:05', 0, 3, '云南省临沧市云县', 2, '云县', ',2579,2650,', 2650); INSERT INTO `area` VALUES (2654, '2015-10-19 00:48:06', '2015-10-19 00:48:06', 0, 4, '云南省临沧市永德县', 2, '永德县', ',2579,2650,', 2650); INSERT INTO `area` VALUES (2655, '2015-10-19 00:48:07', '2015-10-19 00:48:07', 0, 5, '云南省临沧市镇康县', 2, '镇康县', ',2579,2650,', 2650); INSERT INTO `area` VALUES (2656, '2015-10-19 00:48:08', '2015-10-19 00:48:08', 0, 6, '云南省临沧市双江拉祜族佤族布朗族傣族自治县', 2, '双江拉祜族佤族布朗族傣族自治县', ',2579,2650,', 2650); INSERT INTO `area` VALUES (2657, '2015-10-19 00:48:09', '2015-10-19 00:48:09', 0, 7, '云南省临沧市耿马傣族佤族自治县', 2, '耿马傣族佤族自治县', ',2579,2650,', 2650); INSERT INTO `area` VALUES (2658, '2015-10-19 00:48:10', '2015-10-19 00:48:10', 0, 8, '云南省临沧市沧源佤族自治县', 2, '沧源佤族自治县', ',2579,2650,', 2650); INSERT INTO `area` VALUES (2659, '2015-10-19 00:48:11', '2015-10-19 00:48:11', 0, 9, '云南省楚雄彝族自治州', 1, '楚雄彝族自治州', ',2579,', 2579); INSERT INTO `area` VALUES (2660, '2015-10-19 00:48:12', '2015-10-19 00:48:12', 0, 1, '云南省楚雄彝族自治州楚雄市', 2, '楚雄市', ',2579,2659,', 2659); INSERT INTO `area` VALUES (2661, '2015-10-19 00:48:13', '2015-10-19 00:48:13', 0, 2, '云南省楚雄彝族自治州双柏县', 2, '双柏县', ',2579,2659,', 2659); INSERT INTO `area` VALUES (2662, '2015-10-19 00:48:14', '2015-10-19 00:48:14', 0, 3, '云南省楚雄彝族自治州牟定县', 2, '牟定县', ',2579,2659,', 2659); INSERT INTO `area` VALUES (2663, '2015-10-19 00:48:15', '2015-10-19 00:48:15', 0, 4, '云南省楚雄彝族自治州南华县', 2, '南华县', ',2579,2659,', 2659); INSERT INTO `area` VALUES (2664, '2015-10-19 00:48:16', '2015-10-19 00:48:16', 0, 5, '云南省楚雄彝族自治州姚安县', 2, '姚安县', ',2579,2659,', 2659); INSERT INTO `area` VALUES (2665, '2015-10-19 00:48:17', '2015-10-19 00:48:17', 0, 6, '云南省楚雄彝族自治州大姚县', 2, '大姚县', ',2579,2659,', 2659); INSERT INTO `area` VALUES (2666, '2015-10-19 00:48:18', '2015-10-19 00:48:18', 0, 7, '云南省楚雄彝族自治州永仁县', 2, '永仁县', ',2579,2659,', 2659); INSERT INTO `area` VALUES (2667, '2015-10-19 00:48:19', '2015-10-19 00:48:19', 0, 8, '云南省楚雄彝族自治州元谋县', 2, '元谋县', ',2579,2659,', 2659); INSERT INTO `area` VALUES (2668, '2015-10-19 00:48:20', '2015-10-19 00:48:20', 0, 9, '云南省楚雄彝族自治州武定县', 2, '武定县', ',2579,2659,', 2659); INSERT INTO `area` VALUES (2669, '2015-10-19 00:48:21', '2015-10-19 00:48:21', 0, 10, '云南省楚雄彝族自治州禄丰县', 2, '禄丰县', ',2579,2659,', 2659); INSERT INTO `area` VALUES (2670, '2015-10-19 00:48:22', '2015-10-19 00:48:22', 0, 10, '云南省红河哈尼族彝族自治州', 1, '红河哈尼族彝族自治州', ',2579,', 2579); INSERT INTO `area` VALUES (2671, '2015-10-19 00:48:23', '2015-10-19 00:48:23', 0, 1, '云南省红河哈尼族彝族自治州个旧市', 2, '个旧市', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2672, '2015-10-19 00:48:24', '2015-10-19 00:48:24', 0, 2, '云南省红河哈尼族彝族自治州开远市', 2, '开远市', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2673, '2015-10-19 00:48:25', '2015-10-19 00:48:25', 0, 3, '云南省红河哈尼族彝族自治州蒙自市', 2, '蒙自市', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2674, '2015-10-19 00:48:26', '2015-10-19 00:48:26', 0, 4, '云南省红河哈尼族彝族自治州弥勒市', 2, '弥勒市', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2675, '2015-10-19 00:48:27', '2015-10-19 00:48:27', 0, 5, '云南省红河哈尼族彝族自治州屏边苗族自治县', 2, '屏边苗族自治县', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2676, '2015-10-19 00:48:28', '2015-10-19 00:48:28', 0, 6, '云南省红河哈尼族彝族自治州建水县', 2, '建水县', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2677, '2015-10-19 00:48:29', '2015-10-19 00:48:29', 0, 7, '云南省红河哈尼族彝族自治州石屏县', 2, '石屏县', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2678, '2015-10-19 00:48:30', '2015-10-19 00:48:30', 0, 8, '云南省红河哈尼族彝族自治州泸西县', 2, '泸西县', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2679, '2015-10-19 00:48:31', '2015-10-19 00:48:31', 0, 9, '云南省红河哈尼族彝族自治州元阳县', 2, '元阳县', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2680, '2015-10-19 00:48:32', '2015-10-19 00:48:32', 0, 10, '云南省红河哈尼族彝族自治州红河县', 2, '红河县', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2681, '2015-10-19 00:48:33', '2015-10-19 00:48:33', 0, 11, '云南省红河哈尼族彝族自治州金平苗族瑶族傣族自治县', 2, '金平苗族瑶族傣族自治县', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2682, '2015-10-19 00:48:34', '2015-10-19 00:48:34', 0, 12, '云南省红河哈尼族彝族自治州绿春县', 2, '绿春县', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2683, '2015-10-19 00:48:35', '2015-10-19 00:48:35', 0, 13, '云南省红河哈尼族彝族自治州河口瑶族自治县', 2, '河口瑶族自治县', ',2579,2670,', 2670); INSERT INTO `area` VALUES (2684, '2015-10-19 00:48:36', '2015-10-19 00:48:36', 0, 11, '云南省文山壮族苗族自治州', 1, '文山壮族苗族自治州', ',2579,', 2579); INSERT INTO `area` VALUES (2685, '2015-10-19 00:48:37', '2015-10-19 00:48:37', 0, 1, '云南省文山壮族苗族自治州文山市', 2, '文山市', ',2579,2684,', 2684); INSERT INTO `area` VALUES (2686, '2015-10-19 00:48:38', '2015-10-19 00:48:38', 0, 2, '云南省文山壮族苗族自治州砚山县', 2, '砚山县', ',2579,2684,', 2684); INSERT INTO `area` VALUES (2687, '2015-10-19 00:48:39', '2015-10-19 00:48:39', 0, 3, '云南省文山壮族苗族自治州西畴县', 2, '西畴县', ',2579,2684,', 2684); INSERT INTO `area` VALUES (2688, '2015-10-19 00:48:40', '2015-10-19 00:48:40', 0, 4, '云南省文山壮族苗族自治州麻栗坡县', 2, '麻栗坡县', ',2579,2684,', 2684); INSERT INTO `area` VALUES (2689, '2015-10-19 00:48:41', '2015-10-19 00:48:41', 0, 5, '云南省文山壮族苗族自治州马关县', 2, '马关县', ',2579,2684,', 2684); INSERT INTO `area` VALUES (2690, '2015-10-19 00:48:42', '2015-10-19 00:48:42', 0, 6, '云南省文山壮族苗族自治州丘北县', 2, '丘北县', ',2579,2684,', 2684); INSERT INTO `area` VALUES (2691, '2015-10-19 00:48:43', '2015-10-19 00:48:43', 0, 7, '云南省文山壮族苗族自治州广南县', 2, '广南县', ',2579,2684,', 2684); INSERT INTO `area` VALUES (2692, '2015-10-19 00:48:44', '2015-10-19 00:48:44', 0, 8, '云南省文山壮族苗族自治州富宁县', 2, '富宁县', ',2579,2684,', 2684); INSERT INTO `area` VALUES (2693, '2015-10-19 00:48:45', '2015-10-19 00:48:45', 0, 12, '云南省西双版纳傣族自治州', 1, '西双版纳傣族自治州', ',2579,', 2579); INSERT INTO `area` VALUES (2694, '2015-10-19 00:48:46', '2015-10-19 00:48:46', 0, 1, '云南省西双版纳傣族自治州景洪市', 2, '景洪市', ',2579,2693,', 2693); INSERT INTO `area` VALUES (2695, '2015-10-19 00:48:47', '2015-10-19 00:48:47', 0, 2, '云南省西双版纳傣族自治州勐海县', 2, '勐海县', ',2579,2693,', 2693); INSERT INTO `area` VALUES (2696, '2015-10-19 00:48:48', '2015-10-19 00:48:48', 0, 3, '云南省西双版纳傣族自治州勐腊县', 2, '勐腊县', ',2579,2693,', 2693); INSERT INTO `area` VALUES (2697, '2015-10-19 00:48:49', '2015-10-19 00:48:49', 0, 13, '云南省大理白族自治州', 1, '大理白族自治州', ',2579,', 2579); INSERT INTO `area` VALUES (2698, '2015-10-19 00:48:50', '2015-10-19 00:48:50', 0, 1, '云南省大理白族自治州大理市', 2, '大理市', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2699, '2015-10-19 00:48:51', '2015-10-19 00:48:51', 0, 2, '云南省大理白族自治州漾濞彝族自治县', 2, '漾濞彝族自治县', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2700, '2015-10-19 00:48:52', '2015-10-19 00:48:52', 0, 3, '云南省大理白族自治州祥云县', 2, '祥云县', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2701, '2015-10-19 00:48:53', '2015-10-19 00:48:53', 0, 4, '云南省大理白族自治州宾川县', 2, '宾川县', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2702, '2015-10-19 00:48:54', '2015-10-19 00:48:54', 0, 5, '云南省大理白族自治州弥渡县', 2, '弥渡县', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2703, '2015-10-19 00:48:55', '2015-10-19 00:48:55', 0, 6, '云南省大理白族自治州南涧彝族自治县', 2, '南涧彝族自治县', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2704, '2015-10-19 00:48:56', '2015-10-19 00:48:56', 0, 7, '云南省大理白族自治州巍山彝族回族自治县', 2, '巍山彝族回族自治县', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2705, '2015-10-19 00:48:57', '2015-10-19 00:48:57', 0, 8, '云南省大理白族自治州永平县', 2, '永平县', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2706, '2015-10-19 00:48:58', '2015-10-19 00:48:58', 0, 9, '云南省大理白族自治州云龙县', 2, '云龙县', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2707, '2015-10-19 00:48:59', '2015-10-19 00:48:59', 0, 10, '云南省大理白族自治州洱源县', 2, '洱源县', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2708, '2015-10-19 00:49:00', '2015-10-19 00:49:00', 0, 11, '云南省大理白族自治州剑川县', 2, '剑川县', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2709, '2015-10-19 00:49:01', '2015-10-19 00:49:01', 0, 12, '云南省大理白族自治州鹤庆县', 2, '鹤庆县', ',2579,2697,', 2697); INSERT INTO `area` VALUES (2710, '2015-10-19 00:49:02', '2015-10-19 00:49:02', 0, 14, '云南省德宏傣族景颇族自治州', 1, '德宏傣族景颇族自治州', ',2579,', 2579); INSERT INTO `area` VALUES (2711, '2015-10-19 00:49:03', '2015-10-19 00:49:03', 0, 1, '云南省德宏傣族景颇族自治州瑞丽市', 2, '瑞丽市', ',2579,2710,', 2710); INSERT INTO `area` VALUES (2712, '2015-10-19 00:49:04', '2015-10-19 00:49:04', 0, 2, '云南省德宏傣族景颇族自治州芒市', 2, '芒市', ',2579,2710,', 2710); INSERT INTO `area` VALUES (2713, '2015-10-19 00:49:05', '2015-10-19 00:49:05', 0, 3, '云南省德宏傣族景颇族自治州梁河县', 2, '梁河县', ',2579,2710,', 2710); INSERT INTO `area` VALUES (2714, '2015-10-19 00:49:06', '2015-10-19 00:49:06', 0, 4, '云南省德宏傣族景颇族自治州盈江县', 2, '盈江县', ',2579,2710,', 2710); INSERT INTO `area` VALUES (2715, '2015-10-19 00:49:07', '2015-10-19 00:49:07', 0, 5, '云南省德宏傣族景颇族自治州陇川县', 2, '陇川县', ',2579,2710,', 2710); INSERT INTO `area` VALUES (2716, '2015-10-19 00:49:08', '2015-10-19 00:49:08', 0, 15, '云南省怒江傈僳族自治州', 1, '怒江傈僳族自治州', ',2579,', 2579); INSERT INTO `area` VALUES (2717, '2015-10-19 00:49:09', '2015-10-19 00:49:09', 0, 1, '云南省怒江傈僳族自治州泸水县', 2, '泸水县', ',2579,2716,', 2716); INSERT INTO `area` VALUES (2718, '2015-10-19 00:49:10', '2015-10-19 00:49:10', 0, 2, '云南省怒江傈僳族自治州福贡县', 2, '福贡县', ',2579,2716,', 2716); INSERT INTO `area` VALUES (2719, '2015-10-19 00:49:11', '2015-10-19 00:49:11', 0, 3, '云南省怒江傈僳族自治州贡山独龙族怒族自治县', 2, '贡山独龙族怒族自治县', ',2579,2716,', 2716); INSERT INTO `area` VALUES (2720, '2015-10-19 00:49:12', '2015-10-19 00:49:12', 0, 4, '云南省怒江傈僳族自治州兰坪白族普米族自治县', 2, '兰坪白族普米族自治县', ',2579,2716,', 2716); INSERT INTO `area` VALUES (2721, '2015-10-19 00:49:13', '2015-10-19 00:49:13', 0, 16, '云南省迪庆藏族自治州', 1, '迪庆藏族自治州', ',2579,', 2579); INSERT INTO `area` VALUES (2722, '2015-10-19 00:49:14', '2015-10-19 00:49:14', 0, 1, '云南省迪庆藏族自治州香格里拉县', 2, '香格里拉县', ',2579,2721,', 2721); INSERT INTO `area` VALUES (2723, '2015-10-19 00:49:15', '2015-10-19 00:49:15', 0, 2, '云南省迪庆藏族自治州德钦县', 2, '德钦县', ',2579,2721,', 2721); INSERT INTO `area` VALUES (2724, '2015-10-19 00:49:16', '2015-10-19 00:49:16', 0, 3, '云南省迪庆藏族自治州维西傈僳族自治县', 2, '维西傈僳族自治县', ',2579,2721,', 2721); INSERT INTO `area` VALUES (2725, '2015-10-19 00:49:17', '2015-10-19 00:49:17', 0, 26, '西藏自治区', 0, '西藏自治区', ',', NULL); INSERT INTO `area` VALUES (2726, '2015-10-19 00:49:18', '2015-10-19 00:49:18', 0, 1, '西藏自治区拉萨市', 1, '拉萨市', ',2725,', 2725); INSERT INTO `area` VALUES (2727, '2015-10-19 00:49:19', '2015-10-19 00:49:19', 0, 1, '西藏自治区拉萨市城关区', 2, '城关区', ',2725,2726,', 2726); INSERT INTO `area` VALUES (2728, '2015-10-19 00:49:20', '2015-10-19 00:49:20', 0, 2, '西藏自治区拉萨市林周县', 2, '林周县', ',2725,2726,', 2726); INSERT INTO `area` VALUES (2729, '2015-10-19 00:49:21', '2015-10-19 00:49:21', 0, 3, '西藏自治区拉萨市当雄县', 2, '当雄县', ',2725,2726,', 2726); INSERT INTO `area` VALUES (2730, '2015-10-19 00:49:22', '2015-10-19 00:49:22', 0, 4, '西藏自治区拉萨市尼木县', 2, '尼木县', ',2725,2726,', 2726); INSERT INTO `area` VALUES (2731, '2015-10-19 00:49:23', '2015-10-19 00:49:23', 0, 5, '西藏自治区拉萨市曲水县', 2, '曲水县', ',2725,2726,', 2726); INSERT INTO `area` VALUES (2732, '2015-10-19 00:49:24', '2015-10-19 00:49:24', 0, 6, '西藏自治区拉萨市堆龙德庆县', 2, '堆龙德庆县', ',2725,2726,', 2726); INSERT INTO `area` VALUES (2733, '2015-10-19 00:49:25', '2015-10-19 00:49:25', 0, 7, '西藏自治区拉萨市达孜县', 2, '达孜县', ',2725,2726,', 2726); INSERT INTO `area` VALUES (2734, '2015-10-19 00:49:26', '2015-10-19 00:49:26', 0, 8, '西藏自治区拉萨市墨竹工卡县', 2, '墨竹工卡县', ',2725,2726,', 2726); INSERT INTO `area` VALUES (2735, '2015-10-19 00:49:27', '2015-10-19 00:49:27', 0, 2, '西藏自治区昌都地区', 1, '昌都地区', ',2725,', 2725); INSERT INTO `area` VALUES (2736, '2015-10-19 00:49:28', '2015-10-19 00:49:28', 0, 1, '西藏自治区昌都地区昌都县', 2, '昌都县', ',2725,2735,', 2735); INSERT INTO `area` VALUES (2737, '2015-10-19 00:49:29', '2015-10-19 00:49:29', 0, 2, '西藏自治区昌都地区江达县', 2, '江达县', ',2725,2735,', 2735); INSERT INTO `area` VALUES (2738, '2015-10-19 00:49:30', '2015-10-19 00:49:30', 0, 3, '西藏自治区昌都地区贡觉县', 2, '贡觉县', ',2725,2735,', 2735); INSERT INTO `area` VALUES (2739, '2015-10-19 00:49:31', '2015-10-19 00:49:31', 0, 4, '西藏自治区昌都地区类乌齐县', 2, '类乌齐县', ',2725,2735,', 2735); INSERT INTO `area` VALUES (2740, '2015-10-19 00:49:32', '2015-10-19 00:49:32', 0, 5, '西藏自治区昌都地区丁青县', 2, '丁青县', ',2725,2735,', 2735); INSERT INTO `area` VALUES (2741, '2015-10-19 00:49:33', '2015-10-19 00:49:33', 0, 6, '西藏自治区昌都地区察雅县', 2, '察雅县', ',2725,2735,', 2735); INSERT INTO `area` VALUES (2742, '2015-10-19 00:49:34', '2015-10-19 00:49:34', 0, 7, '西藏自治区昌都地区八宿县', 2, '八宿县', ',2725,2735,', 2735); INSERT INTO `area` VALUES (2743, '2015-10-19 00:49:35', '2015-10-19 00:49:35', 0, 8, '西藏自治区昌都地区左贡县', 2, '左贡县', ',2725,2735,', 2735); INSERT INTO `area` VALUES (2744, '2015-10-19 00:49:36', '2015-10-19 00:49:36', 0, 9, '西藏自治区昌都地区芒康县', 2, '芒康县', ',2725,2735,', 2735); INSERT INTO `area` VALUES (2745, '2015-10-19 00:49:37', '2015-10-19 00:49:37', 0, 10, '西藏自治区昌都地区洛隆县', 2, '洛隆县', ',2725,2735,', 2735); INSERT INTO `area` VALUES (2746, '2015-10-19 00:49:38', '2015-10-19 00:49:38', 0, 11, '西藏自治区昌都地区边坝县', 2, '边坝县', ',2725,2735,', 2735); INSERT INTO `area` VALUES (2747, '2015-10-19 00:49:39', '2015-10-19 00:49:39', 0, 3, '西藏自治区山南地区', 1, '山南地区', ',2725,', 2725); INSERT INTO `area` VALUES (2748, '2015-10-19 00:49:40', '2015-10-19 00:49:40', 0, 1, '西藏自治区山南地区乃东县', 2, '乃东县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2749, '2015-10-19 00:49:41', '2015-10-19 00:49:41', 0, 2, '西藏自治区山南地区扎囊县', 2, '扎囊县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2750, '2015-10-19 00:49:42', '2015-10-19 00:49:42', 0, 3, '西藏自治区山南地区贡嘎县', 2, '贡嘎县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2751, '2015-10-19 00:49:43', '2015-10-19 00:49:43', 0, 4, '西藏自治区山南地区桑日县', 2, '桑日县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2752, '2015-10-19 00:49:44', '2015-10-19 00:49:44', 0, 5, '西藏自治区山南地区琼结县', 2, '琼结县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2753, '2015-10-19 00:49:45', '2015-10-19 00:49:45', 0, 6, '西藏自治区山南地区曲松县', 2, '曲松县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2754, '2015-10-19 00:49:46', '2015-10-19 00:49:46', 0, 7, '西藏自治区山南地区措美县', 2, '措美县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2755, '2015-10-19 00:49:47', '2015-10-19 00:49:47', 0, 8, '西藏自治区山南地区洛扎县', 2, '洛扎县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2756, '2015-10-19 00:49:48', '2015-10-19 00:49:48', 0, 9, '西藏自治区山南地区加查县', 2, '加查县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2757, '2015-10-19 00:49:49', '2015-10-19 00:49:49', 0, 10, '西藏自治区山南地区隆子县', 2, '隆子县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2758, '2015-10-19 00:49:50', '2015-10-19 00:49:50', 0, 11, '西藏自治区山南地区错那县', 2, '错那县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2759, '2015-10-19 00:49:51', '2015-10-19 00:49:51', 0, 12, '西藏自治区山南地区浪卡子县', 2, '浪卡子县', ',2725,2747,', 2747); INSERT INTO `area` VALUES (2760, '2015-10-19 00:49:52', '2015-10-19 00:49:52', 0, 4, '西藏自治区日喀则地区', 1, '日喀则地区', ',2725,', 2725); INSERT INTO `area` VALUES (2761, '2015-10-19 00:49:53', '2015-10-19 00:49:53', 0, 1, '西藏自治区日喀则地区日喀则市', 2, '日喀则市', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2762, '2015-10-19 00:49:54', '2015-10-19 00:49:54', 0, 2, '西藏自治区日喀则地区南木林县', 2, '南木林县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2763, '2015-10-19 00:49:55', '2015-10-19 00:49:55', 0, 3, '西藏自治区日喀则地区江孜县', 2, '江孜县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2764, '2015-10-19 00:49:56', '2015-10-19 00:49:56', 0, 4, '西藏自治区日喀则地区定日县', 2, '定日县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2765, '2015-10-19 00:49:57', '2015-10-19 00:49:57', 0, 5, '西藏自治区日喀则地区萨迦县', 2, '萨迦县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2766, '2015-10-19 00:49:58', '2015-10-19 00:49:58', 0, 6, '西藏自治区日喀则地区拉孜县', 2, '拉孜县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2767, '2015-10-19 00:49:59', '2015-10-19 00:49:59', 0, 7, '西藏自治区日喀则地区昂仁县', 2, '昂仁县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2768, '2015-10-19 00:50:00', '2015-10-19 00:50:00', 0, 8, '西藏自治区日喀则地区谢通门县', 2, '谢通门县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2769, '2015-10-19 00:50:01', '2015-10-19 00:50:01', 0, 9, '西藏自治区日喀则地区白朗县', 2, '白朗县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2770, '2015-10-19 00:50:02', '2015-10-19 00:50:02', 0, 10, '西藏自治区日喀则地区仁布县', 2, '仁布县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2771, '2015-10-19 00:50:03', '2015-10-19 00:50:03', 0, 11, '西藏自治区日喀则地区康马县', 2, '康马县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2772, '2015-10-19 00:50:04', '2015-10-19 00:50:04', 0, 12, '西藏自治区日喀则地区定结县', 2, '定结县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2773, '2015-10-19 00:50:05', '2015-10-19 00:50:05', 0, 13, '西藏自治区日喀则地区仲巴县', 2, '仲巴县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2774, '2015-10-19 00:50:06', '2015-10-19 00:50:06', 0, 14, '西藏自治区日喀则地区亚东县', 2, '亚东县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2775, '2015-10-19 00:50:07', '2015-10-19 00:50:07', 0, 15, '西藏自治区日喀则地区吉隆县', 2, '吉隆县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2776, '2015-10-19 00:50:08', '2015-10-19 00:50:08', 0, 16, '西藏自治区日喀则地区聂拉木县', 2, '聂拉木县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2777, '2015-10-19 00:50:09', '2015-10-19 00:50:09', 0, 17, '西藏自治区日喀则地区萨嘎县', 2, '萨嘎县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2778, '2015-10-19 00:50:10', '2015-10-19 00:50:10', 0, 18, '西藏自治区日喀则地区岗巴县', 2, '岗巴县', ',2725,2760,', 2760); INSERT INTO `area` VALUES (2779, '2015-10-19 00:50:11', '2015-10-19 00:50:11', 0, 5, '西藏自治区那曲地区', 1, '那曲地区', ',2725,', 2725); INSERT INTO `area` VALUES (2780, '2015-10-19 00:50:12', '2015-10-19 00:50:12', 0, 1, '西藏自治区那曲地区那曲县', 2, '那曲县', ',2725,2779,', 2779); INSERT INTO `area` VALUES (2781, '2015-10-19 00:50:13', '2015-10-19 00:50:13', 0, 2, '西藏自治区那曲地区嘉黎县', 2, '嘉黎县', ',2725,2779,', 2779); INSERT INTO `area` VALUES (2782, '2015-10-19 00:50:14', '2015-10-19 00:50:14', 0, 3, '西藏自治区那曲地区比如县', 2, '比如县', ',2725,2779,', 2779); INSERT INTO `area` VALUES (2783, '2015-10-19 00:50:15', '2015-10-19 00:50:15', 0, 4, '西藏自治区那曲地区聂荣县', 2, '聂荣县', ',2725,2779,', 2779); INSERT INTO `area` VALUES (2784, '2015-10-19 00:50:16', '2015-10-19 00:50:16', 0, 5, '西藏自治区那曲地区安多县', 2, '安多县', ',2725,2779,', 2779); INSERT INTO `area` VALUES (2785, '2015-10-19 00:50:17', '2015-10-19 00:50:17', 0, 6, '西藏自治区那曲地区申扎县', 2, '申扎县', ',2725,2779,', 2779); INSERT INTO `area` VALUES (2786, '2015-10-19 00:50:18', '2015-10-19 00:50:18', 0, 7, '西藏自治区那曲地区索县', 2, '索县', ',2725,2779,', 2779); INSERT INTO `area` VALUES (2787, '2015-10-19 00:50:19', '2015-10-19 00:50:19', 0, 8, '西藏自治区那曲地区班戈县', 2, '班戈县', ',2725,2779,', 2779); INSERT INTO `area` VALUES (2788, '2015-10-19 00:50:20', '2015-10-19 00:50:20', 0, 9, '西藏自治区那曲地区巴青县', 2, '巴青县', ',2725,2779,', 2779); INSERT INTO `area` VALUES (2789, '2015-10-19 00:50:21', '2015-10-19 00:50:21', 0, 10, '西藏自治区那曲地区尼玛县', 2, '尼玛县', ',2725,2779,', 2779); INSERT INTO `area` VALUES (2790, '2015-10-19 00:50:22', '2015-10-19 00:50:22', 0, 11, '西藏自治区那曲地区双湖县', 2, '双湖县', ',2725,2779,', 2779); INSERT INTO `area` VALUES (2791, '2015-10-19 00:50:23', '2015-10-19 00:50:23', 0, 6, '西藏自治区阿里地区', 1, '阿里地区', ',2725,', 2725); INSERT INTO `area` VALUES (2792, '2015-10-19 00:50:24', '2015-10-19 00:50:24', 0, 1, '西藏自治区阿里地区普兰县', 2, '普兰县', ',2725,2791,', 2791); INSERT INTO `area` VALUES (2793, '2015-10-19 00:50:25', '2015-10-19 00:50:25', 0, 2, '西藏自治区阿里地区札达县', 2, '札达县', ',2725,2791,', 2791); INSERT INTO `area` VALUES (2794, '2015-10-19 00:50:26', '2015-10-19 00:50:26', 0, 3, '西藏自治区阿里地区噶尔县', 2, '噶尔县', ',2725,2791,', 2791); INSERT INTO `area` VALUES (2795, '2015-10-19 00:50:27', '2015-10-19 00:50:27', 0, 4, '西藏自治区阿里地区日土县', 2, '日土县', ',2725,2791,', 2791); INSERT INTO `area` VALUES (2796, '2015-10-19 00:50:28', '2015-10-19 00:50:28', 0, 5, '西藏自治区阿里地区革吉县', 2, '革吉县', ',2725,2791,', 2791); INSERT INTO `area` VALUES (2797, '2015-10-19 00:50:29', '2015-10-19 00:50:29', 0, 6, '西藏自治区阿里地区改则县', 2, '改则县', ',2725,2791,', 2791); INSERT INTO `area` VALUES (2798, '2015-10-19 00:50:30', '2015-10-19 00:50:30', 0, 7, '西藏自治区阿里地区措勤县', 2, '措勤县', ',2725,2791,', 2791); INSERT INTO `area` VALUES (2799, '2015-10-19 00:50:31', '2015-10-19 00:50:31', 0, 7, '西藏自治区林芝地区', 1, '林芝地区', ',2725,', 2725); INSERT INTO `area` VALUES (2800, '2015-10-19 00:50:32', '2015-10-19 00:50:32', 0, 1, '西藏自治区林芝地区林芝县', 2, '林芝县', ',2725,2799,', 2799); INSERT INTO `area` VALUES (2801, '2015-10-19 00:50:33', '2015-10-19 00:50:33', 0, 2, '西藏自治区林芝地区工布江达县', 2, '工布江达县', ',2725,2799,', 2799); INSERT INTO `area` VALUES (2802, '2015-10-19 00:50:34', '2015-10-19 00:50:34', 0, 3, '西藏自治区林芝地区米林县', 2, '米林县', ',2725,2799,', 2799); INSERT INTO `area` VALUES (2803, '2015-10-19 00:50:35', '2015-10-19 00:50:35', 0, 4, '西藏自治区林芝地区墨脱县', 2, '墨脱县', ',2725,2799,', 2799); INSERT INTO `area` VALUES (2804, '2015-10-19 00:50:36', '2015-10-19 00:50:36', 0, 5, '西藏自治区林芝地区波密县', 2, '波密县', ',2725,2799,', 2799); INSERT INTO `area` VALUES (2805, '2015-10-19 00:50:37', '2015-10-19 00:50:37', 0, 6, '西藏自治区林芝地区察隅县', 2, '察隅县', ',2725,2799,', 2799); INSERT INTO `area` VALUES (2806, '2015-10-19 00:50:38', '2015-10-19 00:50:38', 0, 7, '西藏自治区林芝地区朗县', 2, '朗县', ',2725,2799,', 2799); INSERT INTO `area` VALUES (2807, '2015-10-19 00:50:39', '2015-10-19 00:50:39', 0, 27, '陕西省', 0, '陕西省', ',', NULL); INSERT INTO `area` VALUES (2808, '2015-10-19 00:50:40', '2015-10-19 00:50:40', 0, 1, '陕西省西安市', 1, '西安市', ',2807,', 2807); INSERT INTO `area` VALUES (2809, '2015-10-19 00:50:41', '2015-10-19 00:50:41', 0, 1, '陕西省西安市新城区', 2, '新城区', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2810, '2015-10-19 00:50:42', '2015-10-19 00:50:42', 0, 2, '陕西省西安市碑林区', 2, '碑林区', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2811, '2015-10-19 00:50:43', '2015-10-19 00:50:43', 0, 3, '陕西省西安市莲湖区', 2, '莲湖区', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2812, '2015-10-19 00:50:44', '2015-10-19 00:50:44', 0, 4, '陕西省西安市灞桥区', 2, '灞桥区', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2813, '2015-10-19 00:50:45', '2015-10-19 00:50:45', 0, 5, '陕西省西安市未央区', 2, '未央区', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2814, '2015-10-19 00:50:46', '2015-10-19 00:50:46', 0, 6, '陕西省西安市雁塔区', 2, '雁塔区', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2815, '2015-10-19 00:50:47', '2015-10-19 00:50:47', 0, 7, '陕西省西安市阎良区', 2, '阎良区', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2816, '2015-10-19 00:50:48', '2015-10-19 00:50:48', 0, 8, '陕西省西安市临潼区', 2, '临潼区', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2817, '2015-10-19 00:50:49', '2015-10-19 00:50:49', 0, 9, '陕西省西安市长安区', 2, '长安区', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2818, '2015-10-19 00:50:50', '2015-10-19 00:50:50', 0, 10, '陕西省西安市蓝田县', 2, '蓝田县', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2819, '2015-10-19 00:50:51', '2015-10-19 00:50:51', 0, 11, '陕西省西安市周至县', 2, '周至县', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2820, '2015-10-19 00:50:52', '2015-10-19 00:50:52', 0, 12, '陕西省西安市户县', 2, '户县', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2821, '2015-10-19 00:50:53', '2015-10-19 00:50:53', 0, 13, '陕西省西安市高陵县', 2, '高陵县', ',2807,2808,', 2808); INSERT INTO `area` VALUES (2822, '2015-10-19 00:50:54', '2015-10-19 00:50:54', 0, 2, '陕西省铜川市', 1, '铜川市', ',2807,', 2807); INSERT INTO `area` VALUES (2823, '2015-10-19 00:50:55', '2015-10-19 00:50:55', 0, 1, '陕西省铜川市王益区', 2, '王益区', ',2807,2822,', 2822); INSERT INTO `area` VALUES (2824, '2015-10-19 00:50:56', '2015-10-19 00:50:56', 0, 2, '陕西省铜川市印台区', 2, '印台区', ',2807,2822,', 2822); INSERT INTO `area` VALUES (2825, '2015-10-19 00:50:57', '2015-10-19 00:50:57', 0, 3, '陕西省铜川市耀州区', 2, '耀州区', ',2807,2822,', 2822); INSERT INTO `area` VALUES (2826, '2015-10-19 00:50:58', '2015-10-19 00:50:58', 0, 4, '陕西省铜川市宜君县', 2, '宜君县', ',2807,2822,', 2822); INSERT INTO `area` VALUES (2827, '2015-10-19 00:50:59', '2015-10-19 00:50:59', 0, 3, '陕西省宝鸡市', 1, '宝鸡市', ',2807,', 2807); INSERT INTO `area` VALUES (2828, '2015-10-19 00:51:00', '2015-10-19 00:51:00', 0, 1, '陕西省宝鸡市渭滨区', 2, '渭滨区', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2829, '2015-10-19 00:51:01', '2015-10-19 00:51:01', 0, 2, '陕西省宝鸡市金台区', 2, '金台区', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2830, '2015-10-19 00:51:02', '2015-10-19 00:51:02', 0, 3, '陕西省宝鸡市陈仓区', 2, '陈仓区', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2831, '2015-10-19 00:51:03', '2015-10-19 00:51:03', 0, 4, '陕西省宝鸡市凤翔县', 2, '凤翔县', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2832, '2015-10-19 00:51:04', '2015-10-19 00:51:04', 0, 5, '陕西省宝鸡市岐山县', 2, '岐山县', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2833, '2015-10-19 00:51:05', '2015-10-19 00:51:05', 0, 6, '陕西省宝鸡市扶风县', 2, '扶风县', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2834, '2015-10-19 00:51:06', '2015-10-19 00:51:06', 0, 7, '陕西省宝鸡市眉县', 2, '眉县', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2835, '2015-10-19 00:51:07', '2015-10-19 00:51:07', 0, 8, '陕西省宝鸡市陇县', 2, '陇县', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2836, '2015-10-19 00:51:08', '2015-10-19 00:51:08', 0, 9, '陕西省宝鸡市千阳县', 2, '千阳县', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2837, '2015-10-19 00:51:09', '2015-10-19 00:51:09', 0, 10, '陕西省宝鸡市麟游县', 2, '麟游县', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2838, '2015-10-19 00:51:10', '2015-10-19 00:51:10', 0, 11, '陕西省宝鸡市凤县', 2, '凤县', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2839, '2015-10-19 00:51:11', '2015-10-19 00:51:11', 0, 12, '陕西省宝鸡市太白县', 2, '太白县', ',2807,2827,', 2827); INSERT INTO `area` VALUES (2840, '2015-10-19 00:51:12', '2015-10-19 00:51:12', 0, 4, '陕西省咸阳市', 1, '咸阳市', ',2807,', 2807); INSERT INTO `area` VALUES (2841, '2015-10-19 00:51:13', '2015-10-19 00:51:13', 0, 1, '陕西省咸阳市秦都区', 2, '秦都区', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2842, '2015-10-19 00:51:14', '2015-10-19 00:51:14', 0, 2, '陕西省咸阳市杨陵区', 2, '杨陵区', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2843, '2015-10-19 00:51:15', '2015-10-19 00:51:15', 0, 3, '陕西省咸阳市渭城区', 2, '渭城区', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2844, '2015-10-19 00:51:16', '2015-10-19 00:51:16', 0, 4, '陕西省咸阳市三原县', 2, '三原县', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2845, '2015-10-19 00:51:17', '2015-10-19 00:51:17', 0, 5, '陕西省咸阳市泾阳县', 2, '泾阳县', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2846, '2015-10-19 00:51:18', '2015-10-19 00:51:18', 0, 6, '陕西省咸阳市乾县', 2, '乾县', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2847, '2015-10-19 00:51:19', '2015-10-19 00:51:19', 0, 7, '陕西省咸阳市礼泉县', 2, '礼泉县', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2848, '2015-10-19 00:51:20', '2015-10-19 00:51:20', 0, 8, '陕西省咸阳市永寿县', 2, '永寿县', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2849, '2015-10-19 00:51:21', '2015-10-19 00:51:21', 0, 9, '陕西省咸阳市彬县', 2, '彬县', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2850, '2015-10-19 00:51:22', '2015-10-19 00:51:22', 0, 10, '陕西省咸阳市长武县', 2, '长武县', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2851, '2015-10-19 00:51:23', '2015-10-19 00:51:23', 0, 11, '陕西省咸阳市旬邑县', 2, '旬邑县', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2852, '2015-10-19 00:51:24', '2015-10-19 00:51:24', 0, 12, '陕西省咸阳市淳化县', 2, '淳化县', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2853, '2015-10-19 00:51:25', '2015-10-19 00:51:25', 0, 13, '陕西省咸阳市武功县', 2, '武功县', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2854, '2015-10-19 00:51:26', '2015-10-19 00:51:26', 0, 14, '陕西省咸阳市兴平市', 2, '兴平市', ',2807,2840,', 2840); INSERT INTO `area` VALUES (2855, '2015-10-19 00:51:27', '2015-10-19 00:51:27', 0, 5, '陕西省渭南市', 1, '渭南市', ',2807,', 2807); INSERT INTO `area` VALUES (2856, '2015-10-19 00:51:28', '2015-10-19 00:51:28', 0, 1, '陕西省渭南市临渭区', 2, '临渭区', ',2807,2855,', 2855); INSERT INTO `area` VALUES (2857, '2015-10-19 00:51:29', '2015-10-19 00:51:29', 0, 2, '陕西省渭南市华县', 2, '华县', ',2807,2855,', 2855); INSERT INTO `area` VALUES (2858, '2015-10-19 00:51:30', '2015-10-19 00:51:30', 0, 3, '陕西省渭南市潼关县', 2, '潼关县', ',2807,2855,', 2855); INSERT INTO `area` VALUES (2859, '2015-10-19 00:51:31', '2015-10-19 00:51:31', 0, 4, '陕西省渭南市大荔县', 2, '大荔县', ',2807,2855,', 2855); INSERT INTO `area` VALUES (2860, '2015-10-19 00:51:32', '2015-10-19 00:51:32', 0, 5, '陕西省渭南市合阳县', 2, '合阳县', ',2807,2855,', 2855); INSERT INTO `area` VALUES (2861, '2015-10-19 00:51:33', '2015-10-19 00:51:33', 0, 6, '陕西省渭南市澄城县', 2, '澄城县', ',2807,2855,', 2855); INSERT INTO `area` VALUES (2862, '2015-10-19 00:51:34', '2015-10-19 00:51:34', 0, 7, '陕西省渭南市蒲城县', 2, '蒲城县', ',2807,2855,', 2855); INSERT INTO `area` VALUES (2863, '2015-10-19 00:51:35', '2015-10-19 00:51:35', 0, 8, '陕西省渭南市白水县', 2, '白水县', ',2807,2855,', 2855); INSERT INTO `area` VALUES (2864, '2015-10-19 00:51:36', '2015-10-19 00:51:36', 0, 9, '陕西省渭南市富平县', 2, '富平县', ',2807,2855,', 2855); INSERT INTO `area` VALUES (2865, '2015-10-19 00:51:37', '2015-10-19 00:51:37', 0, 10, '陕西省渭南市韩城市', 2, '韩城市', ',2807,2855,', 2855); INSERT INTO `area` VALUES (2866, '2015-10-19 00:51:38', '2015-10-19 00:51:38', 0, 11, '陕西省渭南市华阴市', 2, '华阴市', ',2807,2855,', 2855); INSERT INTO `area` VALUES (2867, '2015-10-19 00:51:39', '2015-10-19 00:51:39', 0, 6, '陕西省延安市', 1, '延安市', ',2807,', 2807); INSERT INTO `area` VALUES (2868, '2015-10-19 00:51:40', '2015-10-19 00:51:40', 0, 1, '陕西省延安市宝塔区', 2, '宝塔区', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2869, '2015-10-19 00:51:41', '2015-10-19 00:51:41', 0, 2, '陕西省延安市延长县', 2, '延长县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2870, '2015-10-19 00:51:42', '2015-10-19 00:51:42', 0, 3, '陕西省延安市延川县', 2, '延川县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2871, '2015-10-19 00:51:43', '2015-10-19 00:51:43', 0, 4, '陕西省延安市子长县', 2, '子长县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2872, '2015-10-19 00:51:44', '2015-10-19 00:51:44', 0, 5, '陕西省延安市安塞县', 2, '安塞县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2873, '2015-10-19 00:51:45', '2015-10-19 00:51:45', 0, 6, '陕西省延安市志丹县', 2, '志丹县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2874, '2015-10-19 00:51:46', '2015-10-19 00:51:46', 0, 7, '陕西省延安市吴起县', 2, '吴起县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2875, '2015-10-19 00:51:47', '2015-10-19 00:51:47', 0, 8, '陕西省延安市甘泉县', 2, '甘泉县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2876, '2015-10-19 00:51:48', '2015-10-19 00:51:48', 0, 9, '陕西省延安市富县', 2, '富县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2877, '2015-10-19 00:51:49', '2015-10-19 00:51:49', 0, 10, '陕西省延安市洛川县', 2, '洛川县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2878, '2015-10-19 00:51:50', '2015-10-19 00:51:50', 0, 11, '陕西省延安市宜川县', 2, '宜川县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2879, '2015-10-19 00:51:51', '2015-10-19 00:51:51', 0, 12, '陕西省延安市黄龙县', 2, '黄龙县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2880, '2015-10-19 00:51:52', '2015-10-19 00:51:52', 0, 13, '陕西省延安市黄陵县', 2, '黄陵县', ',2807,2867,', 2867); INSERT INTO `area` VALUES (2881, '2015-10-19 00:51:53', '2015-10-19 00:51:53', 0, 7, '陕西省汉中市', 1, '汉中市', ',2807,', 2807); INSERT INTO `area` VALUES (2882, '2015-10-19 00:51:54', '2015-10-19 00:51:54', 0, 1, '陕西省汉中市汉台区', 2, '汉台区', ',2807,2881,', 2881); INSERT INTO `area` VALUES (2883, '2015-10-19 00:51:55', '2015-10-19 00:51:55', 0, 2, '陕西省汉中市南郑县', 2, '南郑县', ',2807,2881,', 2881); INSERT INTO `area` VALUES (2884, '2015-10-19 00:51:56', '2015-10-19 00:51:56', 0, 3, '陕西省汉中市城固县', 2, '城固县', ',2807,2881,', 2881); INSERT INTO `area` VALUES (2885, '2015-10-19 00:51:57', '2015-10-19 00:51:57', 0, 4, '陕西省汉中市洋县', 2, '洋县', ',2807,2881,', 2881); INSERT INTO `area` VALUES (2886, '2015-10-19 00:51:58', '2015-10-19 00:51:58', 0, 5, '陕西省汉中市西乡县', 2, '西乡县', ',2807,2881,', 2881); INSERT INTO `area` VALUES (2887, '2015-10-19 00:51:59', '2015-10-19 00:51:59', 0, 6, '陕西省汉中市勉县', 2, '勉县', ',2807,2881,', 2881); INSERT INTO `area` VALUES (2888, '2015-10-19 00:52:00', '2015-10-19 00:52:00', 0, 7, '陕西省汉中市宁强县', 2, '宁强县', ',2807,2881,', 2881); INSERT INTO `area` VALUES (2889, '2015-10-19 00:52:01', '2015-10-19 00:52:01', 0, 8, '陕西省汉中市略阳县', 2, '略阳县', ',2807,2881,', 2881); INSERT INTO `area` VALUES (2890, '2015-10-19 00:52:02', '2015-10-19 00:52:02', 0, 9, '陕西省汉中市镇巴县', 2, '镇巴县', ',2807,2881,', 2881); INSERT INTO `area` VALUES (2891, '2015-10-19 00:52:03', '2015-10-19 00:52:03', 0, 10, '陕西省汉中市留坝县', 2, '留坝县', ',2807,2881,', 2881); INSERT INTO `area` VALUES (2892, '2015-10-19 00:52:04', '2015-10-19 00:52:04', 0, 11, '陕西省汉中市佛坪县', 2, '佛坪县', ',2807,2881,', 2881); INSERT INTO `area` VALUES (2893, '2015-10-19 00:52:05', '2015-10-19 00:52:05', 0, 8, '陕西省榆林市', 1, '榆林市', ',2807,', 2807); INSERT INTO `area` VALUES (2894, '2015-10-19 00:52:06', '2015-10-19 00:52:06', 0, 1, '陕西省榆林市榆阳区', 2, '榆阳区', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2895, '2015-10-19 00:52:07', '2015-10-19 00:52:07', 0, 2, '陕西省榆林市神木县', 2, '神木县', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2896, '2015-10-19 00:52:08', '2015-10-19 00:52:08', 0, 3, '陕西省榆林市府谷县', 2, '府谷县', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2897, '2015-10-19 00:52:09', '2015-10-19 00:52:09', 0, 4, '陕西省榆林市横山县', 2, '横山县', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2898, '2015-10-19 00:52:10', '2015-10-19 00:52:10', 0, 5, '陕西省榆林市靖边县', 2, '靖边县', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2899, '2015-10-19 00:52:11', '2015-10-19 00:52:11', 0, 6, '陕西省榆林市定边县', 2, '定边县', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2900, '2015-10-19 00:52:12', '2015-10-19 00:52:12', 0, 7, '陕西省榆林市绥德县', 2, '绥德县', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2901, '2015-10-19 00:52:13', '2015-10-19 00:52:13', 0, 8, '陕西省榆林市米脂县', 2, '米脂县', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2902, '2015-10-19 00:52:14', '2015-10-19 00:52:14', 0, 9, '陕西省榆林市佳县', 2, '佳县', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2903, '2015-10-19 00:52:15', '2015-10-19 00:52:15', 0, 10, '陕西省榆林市吴堡县', 2, '吴堡县', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2904, '2015-10-19 00:52:16', '2015-10-19 00:52:16', 0, 11, '陕西省榆林市清涧县', 2, '清涧县', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2905, '2015-10-19 00:52:17', '2015-10-19 00:52:17', 0, 12, '陕西省榆林市子洲县', 2, '子洲县', ',2807,2893,', 2893); INSERT INTO `area` VALUES (2906, '2015-10-19 00:52:18', '2015-10-19 00:52:18', 0, 9, '陕西省安康市', 1, '安康市', ',2807,', 2807); INSERT INTO `area` VALUES (2907, '2015-10-19 00:52:19', '2015-10-19 00:52:19', 0, 1, '陕西省安康市汉滨区', 2, '汉滨区', ',2807,2906,', 2906); INSERT INTO `area` VALUES (2908, '2015-10-19 00:52:20', '2015-10-19 00:52:20', 0, 2, '陕西省安康市汉阴县', 2, '汉阴县', ',2807,2906,', 2906); INSERT INTO `area` VALUES (2909, '2015-10-19 00:52:21', '2015-10-19 00:52:21', 0, 3, '陕西省安康市石泉县', 2, '石泉县', ',2807,2906,', 2906); INSERT INTO `area` VALUES (2910, '2015-10-19 00:52:22', '2015-10-19 00:52:22', 0, 4, '陕西省安康市宁陕县', 2, '宁陕县', ',2807,2906,', 2906); INSERT INTO `area` VALUES (2911, '2015-10-19 00:52:23', '2015-10-19 00:52:23', 0, 5, '陕西省安康市紫阳县', 2, '紫阳县', ',2807,2906,', 2906); INSERT INTO `area` VALUES (2912, '2015-10-19 00:52:24', '2015-10-19 00:52:24', 0, 6, '陕西省安康市岚皋县', 2, '岚皋县', ',2807,2906,', 2906); INSERT INTO `area` VALUES (2913, '2015-10-19 00:52:25', '2015-10-19 00:52:25', 0, 7, '陕西省安康市平利县', 2, '平利县', ',2807,2906,', 2906); INSERT INTO `area` VALUES (2914, '2015-10-19 00:52:26', '2015-10-19 00:52:26', 0, 8, '陕西省安康市镇坪县', 2, '镇坪县', ',2807,2906,', 2906); INSERT INTO `area` VALUES (2915, '2015-10-19 00:52:27', '2015-10-19 00:52:27', 0, 9, '陕西省安康市旬阳县', 2, '旬阳县', ',2807,2906,', 2906); INSERT INTO `area` VALUES (2916, '2015-10-19 00:52:28', '2015-10-19 00:52:28', 0, 10, '陕西省安康市白河县', 2, '白河县', ',2807,2906,', 2906); INSERT INTO `area` VALUES (2917, '2015-10-19 00:52:29', '2015-10-19 00:52:29', 0, 10, '陕西省商洛市', 1, '商洛市', ',2807,', 2807); INSERT INTO `area` VALUES (2918, '2015-10-19 00:52:30', '2015-10-19 00:52:30', 0, 1, '陕西省商洛市商州区', 2, '商州区', ',2807,2917,', 2917); INSERT INTO `area` VALUES (2919, '2015-10-19 00:52:31', '2015-10-19 00:52:31', 0, 2, '陕西省商洛市洛南县', 2, '洛南县', ',2807,2917,', 2917); INSERT INTO `area` VALUES (2920, '2015-10-19 00:52:32', '2015-10-19 00:52:32', 0, 3, '陕西省商洛市丹凤县', 2, '丹凤县', ',2807,2917,', 2917); INSERT INTO `area` VALUES (2921, '2015-10-19 00:52:33', '2015-10-19 00:52:33', 0, 4, '陕西省商洛市商南县', 2, '商南县', ',2807,2917,', 2917); INSERT INTO `area` VALUES (2922, '2015-10-19 00:52:34', '2015-10-19 00:52:34', 0, 5, '陕西省商洛市山阳县', 2, '山阳县', ',2807,2917,', 2917); INSERT INTO `area` VALUES (2923, '2015-10-19 00:52:35', '2015-10-19 00:52:35', 0, 6, '陕西省商洛市镇安县', 2, '镇安县', ',2807,2917,', 2917); INSERT INTO `area` VALUES (2924, '2015-10-19 00:52:36', '2015-10-19 00:52:36', 0, 7, '陕西省商洛市柞水县', 2, '柞水县', ',2807,2917,', 2917); INSERT INTO `area` VALUES (2925, '2015-10-19 00:52:37', '2015-10-19 00:52:37', 0, 28, '甘肃省', 0, '甘肃省', ',', NULL); INSERT INTO `area` VALUES (2926, '2015-10-19 00:52:38', '2015-10-19 00:52:38', 0, 1, '甘肃省兰州市', 1, '兰州市', ',2925,', 2925); INSERT INTO `area` VALUES (2927, '2015-10-19 00:52:39', '2015-10-19 00:52:39', 0, 1, '甘肃省兰州市城关区', 2, '城关区', ',2925,2926,', 2926); INSERT INTO `area` VALUES (2928, '2015-10-19 00:52:40', '2015-10-19 00:52:40', 0, 2, '甘肃省兰州市七里河区', 2, '七里河区', ',2925,2926,', 2926); INSERT INTO `area` VALUES (2929, '2015-10-19 00:52:41', '2015-10-19 00:52:41', 0, 3, '甘肃省兰州市西固区', 2, '西固区', ',2925,2926,', 2926); INSERT INTO `area` VALUES (2930, '2015-10-19 00:52:42', '2015-10-19 00:52:42', 0, 4, '甘肃省兰州市安宁区', 2, '安宁区', ',2925,2926,', 2926); INSERT INTO `area` VALUES (2931, '2015-10-19 00:52:43', '2015-10-19 00:52:43', 0, 5, '甘肃省兰州市红古区', 2, '红古区', ',2925,2926,', 2926); INSERT INTO `area` VALUES (2932, '2015-10-19 00:52:44', '2015-10-19 00:52:44', 0, 6, '甘肃省兰州市永登县', 2, '永登县', ',2925,2926,', 2926); INSERT INTO `area` VALUES (2933, '2015-10-19 00:52:45', '2015-10-19 00:52:45', 0, 7, '甘肃省兰州市皋兰县', 2, '皋兰县', ',2925,2926,', 2926); INSERT INTO `area` VALUES (2934, '2015-10-19 00:52:46', '2015-10-19 00:52:46', 0, 8, '甘肃省兰州市榆中县', 2, '榆中县', ',2925,2926,', 2926); INSERT INTO `area` VALUES (2935, '2015-10-19 00:52:47', '2015-10-19 00:52:47', 0, 2, '甘肃省嘉峪关市', 1, '嘉峪关市', ',2925,', 2925); INSERT INTO `area` VALUES (2936, '2015-10-19 00:52:48', '2015-10-19 00:52:48', 0, 3, '甘肃省金昌市', 1, '金昌市', ',2925,', 2925); INSERT INTO `area` VALUES (2937, '2015-10-19 00:52:49', '2015-10-19 00:52:49', 0, 1, '甘肃省金昌市金川区', 2, '金川区', ',2925,2936,', 2936); INSERT INTO `area` VALUES (2938, '2015-10-19 00:52:50', '2015-10-19 00:52:50', 0, 2, '甘肃省金昌市永昌县', 2, '永昌县', ',2925,2936,', 2936); INSERT INTO `area` VALUES (2939, '2015-10-19 00:52:51', '2015-10-19 00:52:51', 0, 4, '甘肃省白银市', 1, '白银市', ',2925,', 2925); INSERT INTO `area` VALUES (2940, '2015-10-19 00:52:52', '2015-10-19 00:52:52', 0, 1, '甘肃省白银市白银区', 2, '白银区', ',2925,2939,', 2939); INSERT INTO `area` VALUES (2941, '2015-10-19 00:52:53', '2015-10-19 00:52:53', 0, 2, '甘肃省白银市平川区', 2, '平川区', ',2925,2939,', 2939); INSERT INTO `area` VALUES (2942, '2015-10-19 00:52:54', '2015-10-19 00:52:54', 0, 3, '甘肃省白银市靖远县', 2, '靖远县', ',2925,2939,', 2939); INSERT INTO `area` VALUES (2943, '2015-10-19 00:52:55', '2015-10-19 00:52:55', 0, 4, '甘肃省白银市会宁县', 2, '会宁县', ',2925,2939,', 2939); INSERT INTO `area` VALUES (2944, '2015-10-19 00:52:56', '2015-10-19 00:52:56', 0, 5, '甘肃省白银市景泰县', 2, '景泰县', ',2925,2939,', 2939); INSERT INTO `area` VALUES (2945, '2015-10-19 00:52:57', '2015-10-19 00:52:57', 0, 5, '甘肃省天水市', 1, '天水市', ',2925,', 2925); INSERT INTO `area` VALUES (2946, '2015-10-19 00:52:58', '2015-10-19 00:52:58', 0, 1, '甘肃省天水市秦州区', 2, '秦州区', ',2925,2945,', 2945); INSERT INTO `area` VALUES (2947, '2015-10-19 00:52:59', '2015-10-19 00:52:59', 0, 2, '甘肃省天水市麦积区', 2, '麦积区', ',2925,2945,', 2945); INSERT INTO `area` VALUES (2948, '2015-10-19 00:53:00', '2015-10-19 00:53:00', 0, 3, '甘肃省天水市清水县', 2, '清水县', ',2925,2945,', 2945); INSERT INTO `area` VALUES (2949, '2015-10-19 00:53:01', '2015-10-19 00:53:01', 0, 4, '甘肃省天水市秦安县', 2, '秦安县', ',2925,2945,', 2945); INSERT INTO `area` VALUES (2950, '2015-10-19 00:53:02', '2015-10-19 00:53:02', 0, 5, '甘肃省天水市甘谷县', 2, '甘谷县', ',2925,2945,', 2945); INSERT INTO `area` VALUES (2951, '2015-10-19 00:53:03', '2015-10-19 00:53:03', 0, 6, '甘肃省天水市武山县', 2, '武山县', ',2925,2945,', 2945); INSERT INTO `area` VALUES (2952, '2015-10-19 00:53:04', '2015-10-19 00:53:04', 0, 7, '甘肃省天水市张家川回族自治县', 2, '张家川回族自治县', ',2925,2945,', 2945); INSERT INTO `area` VALUES (2953, '2015-10-19 00:53:05', '2015-10-19 00:53:05', 0, 6, '甘肃省武威市', 1, '武威市', ',2925,', 2925); INSERT INTO `area` VALUES (2954, '2015-10-19 00:53:06', '2015-10-19 00:53:06', 0, 1, '甘肃省武威市凉州区', 2, '凉州区', ',2925,2953,', 2953); INSERT INTO `area` VALUES (2955, '2015-10-19 00:53:07', '2015-10-19 00:53:07', 0, 2, '甘肃省武威市民勤县', 2, '民勤县', ',2925,2953,', 2953); INSERT INTO `area` VALUES (2956, '2015-10-19 00:53:08', '2015-10-19 00:53:08', 0, 3, '甘肃省武威市古浪县', 2, '古浪县', ',2925,2953,', 2953); INSERT INTO `area` VALUES (2957, '2015-10-19 00:53:09', '2015-10-19 00:53:09', 0, 4, '甘肃省武威市天祝藏族自治县', 2, '天祝藏族自治县', ',2925,2953,', 2953); INSERT INTO `area` VALUES (2958, '2015-10-19 00:53:10', '2015-10-19 00:53:10', 0, 7, '甘肃省张掖市', 1, '张掖市', ',2925,', 2925); INSERT INTO `area` VALUES (2959, '2015-10-19 00:53:11', '2015-10-19 00:53:11', 0, 1, '甘肃省张掖市甘州区', 2, '甘州区', ',2925,2958,', 2958); INSERT INTO `area` VALUES (2960, '2015-10-19 00:53:12', '2015-10-19 00:53:12', 0, 2, '甘肃省张掖市肃南裕固族自治县', 2, '肃南裕固族自治县', ',2925,2958,', 2958); INSERT INTO `area` VALUES (2961, '2015-10-19 00:53:13', '2015-10-19 00:53:13', 0, 3, '甘肃省张掖市民乐县', 2, '民乐县', ',2925,2958,', 2958); INSERT INTO `area` VALUES (2962, '2015-10-19 00:53:14', '2015-10-19 00:53:14', 0, 4, '甘肃省张掖市临泽县', 2, '临泽县', ',2925,2958,', 2958); INSERT INTO `area` VALUES (2963, '2015-10-19 00:53:15', '2015-10-19 00:53:15', 0, 5, '甘肃省张掖市高台县', 2, '高台县', ',2925,2958,', 2958); INSERT INTO `area` VALUES (2964, '2015-10-19 00:53:16', '2015-10-19 00:53:16', 0, 6, '甘肃省张掖市山丹县', 2, '山丹县', ',2925,2958,', 2958); INSERT INTO `area` VALUES (2965, '2015-10-19 00:53:17', '2015-10-19 00:53:17', 0, 8, '甘肃省平凉市', 1, '平凉市', ',2925,', 2925); INSERT INTO `area` VALUES (2966, '2015-10-19 00:53:18', '2015-10-19 00:53:18', 0, 1, '甘肃省平凉市崆峒区', 2, '崆峒区', ',2925,2965,', 2965); INSERT INTO `area` VALUES (2967, '2015-10-19 00:53:19', '2015-10-19 00:53:19', 0, 2, '甘肃省平凉市泾川县', 2, '泾川县', ',2925,2965,', 2965); INSERT INTO `area` VALUES (2968, '2015-10-19 00:53:20', '2015-10-19 00:53:20', 0, 3, '甘肃省平凉市灵台县', 2, '灵台县', ',2925,2965,', 2965); INSERT INTO `area` VALUES (2969, '2015-10-19 00:53:21', '2015-10-19 00:53:21', 0, 4, '甘肃省平凉市崇信县', 2, '崇信县', ',2925,2965,', 2965); INSERT INTO `area` VALUES (2970, '2015-10-19 00:53:22', '2015-10-19 00:53:22', 0, 5, '甘肃省平凉市华亭县', 2, '华亭县', ',2925,2965,', 2965); INSERT INTO `area` VALUES (2971, '2015-10-19 00:53:23', '2015-10-19 00:53:23', 0, 6, '甘肃省平凉市庄浪县', 2, '庄浪县', ',2925,2965,', 2965); INSERT INTO `area` VALUES (2972, '2015-10-19 00:53:24', '2015-10-19 00:53:24', 0, 7, '甘肃省平凉市静宁县', 2, '静宁县', ',2925,2965,', 2965); INSERT INTO `area` VALUES (2973, '2015-10-19 00:53:25', '2015-10-19 00:53:25', 0, 9, '甘肃省酒泉市', 1, '酒泉市', ',2925,', 2925); INSERT INTO `area` VALUES (2974, '2015-10-19 00:53:26', '2015-10-19 00:53:26', 0, 1, '甘肃省酒泉市肃州区', 2, '肃州区', ',2925,2973,', 2973); INSERT INTO `area` VALUES (2975, '2015-10-19 00:53:27', '2015-10-19 00:53:27', 0, 2, '甘肃省酒泉市金塔县', 2, '金塔县', ',2925,2973,', 2973); INSERT INTO `area` VALUES (2976, '2015-10-19 00:53:28', '2015-10-19 00:53:28', 0, 3, '甘肃省酒泉市瓜州县', 2, '瓜州县', ',2925,2973,', 2973); INSERT INTO `area` VALUES (2977, '2015-10-19 00:53:29', '2015-10-19 00:53:29', 0, 4, '甘肃省酒泉市肃北蒙古族自治县', 2, '肃北蒙古族自治县', ',2925,2973,', 2973); INSERT INTO `area` VALUES (2978, '2015-10-19 00:53:30', '2015-10-19 00:53:30', 0, 5, '甘肃省酒泉市阿克塞哈萨克族自治县', 2, '阿克塞哈萨克族自治县', ',2925,2973,', 2973); INSERT INTO `area` VALUES (2979, '2015-10-19 00:53:31', '2015-10-19 00:53:31', 0, 6, '甘肃省酒泉市玉门市', 2, '玉门市', ',2925,2973,', 2973); INSERT INTO `area` VALUES (2980, '2015-10-19 00:53:32', '2015-10-19 00:53:32', 0, 7, '甘肃省酒泉市敦煌市', 2, '敦煌市', ',2925,2973,', 2973); INSERT INTO `area` VALUES (2981, '2015-10-19 00:53:33', '2015-10-19 00:53:33', 0, 10, '甘肃省庆阳市', 1, '庆阳市', ',2925,', 2925); INSERT INTO `area` VALUES (2982, '2015-10-19 00:53:34', '2015-10-19 00:53:34', 0, 1, '甘肃省庆阳市西峰区', 2, '西峰区', ',2925,2981,', 2981); INSERT INTO `area` VALUES (2983, '2015-10-19 00:53:35', '2015-10-19 00:53:35', 0, 2, '甘肃省庆阳市庆城县', 2, '庆城县', ',2925,2981,', 2981); INSERT INTO `area` VALUES (2984, '2015-10-19 00:53:36', '2015-10-19 00:53:36', 0, 3, '甘肃省庆阳市环县', 2, '环县', ',2925,2981,', 2981); INSERT INTO `area` VALUES (2985, '2015-10-19 00:53:37', '2015-10-19 00:53:37', 0, 4, '甘肃省庆阳市华池县', 2, '华池县', ',2925,2981,', 2981); INSERT INTO `area` VALUES (2986, '2015-10-19 00:53:38', '2015-10-19 00:53:38', 0, 5, '甘肃省庆阳市合水县', 2, '合水县', ',2925,2981,', 2981); INSERT INTO `area` VALUES (2987, '2015-10-19 00:53:39', '2015-10-19 00:53:39', 0, 6, '甘肃省庆阳市正宁县', 2, '正宁县', ',2925,2981,', 2981); INSERT INTO `area` VALUES (2988, '2015-10-19 00:53:40', '2015-10-19 00:53:40', 0, 7, '甘肃省庆阳市宁县', 2, '宁县', ',2925,2981,', 2981); INSERT INTO `area` VALUES (2989, '2015-10-19 00:53:41', '2015-10-19 00:53:41', 0, 8, '甘肃省庆阳市镇原县', 2, '镇原县', ',2925,2981,', 2981); INSERT INTO `area` VALUES (2990, '2015-10-19 00:53:42', '2015-10-19 00:53:42', 0, 11, '甘肃省定西市', 1, '定西市', ',2925,', 2925); INSERT INTO `area` VALUES (2991, '2015-10-19 00:53:43', '2015-10-19 00:53:43', 0, 1, '甘肃省定西市安定区', 2, '安定区', ',2925,2990,', 2990); INSERT INTO `area` VALUES (2992, '2015-10-19 00:53:44', '2015-10-19 00:53:44', 0, 2, '甘肃省定西市通渭县', 2, '通渭县', ',2925,2990,', 2990); INSERT INTO `area` VALUES (2993, '2015-10-19 00:53:45', '2015-10-19 00:53:45', 0, 3, '甘肃省定西市陇西县', 2, '陇西县', ',2925,2990,', 2990); INSERT INTO `area` VALUES (2994, '2015-10-19 00:53:46', '2015-10-19 00:53:46', 0, 4, '甘肃省定西市渭源县', 2, '渭源县', ',2925,2990,', 2990); INSERT INTO `area` VALUES (2995, '2015-10-19 00:53:47', '2015-10-19 00:53:47', 0, 5, '甘肃省定西市临洮县', 2, '临洮县', ',2925,2990,', 2990); INSERT INTO `area` VALUES (2996, '2015-10-19 00:53:48', '2015-10-19 00:53:48', 0, 6, '甘肃省定西市漳县', 2, '漳县', ',2925,2990,', 2990); INSERT INTO `area` VALUES (2997, '2015-10-19 00:53:49', '2015-10-19 00:53:49', 0, 7, '甘肃省定西市岷县', 2, '岷县', ',2925,2990,', 2990); INSERT INTO `area` VALUES (2998, '2015-10-19 00:53:50', '2015-10-19 00:53:50', 0, 12, '甘肃省陇南市', 1, '陇南市', ',2925,', 2925); INSERT INTO `area` VALUES (2999, '2015-10-19 00:53:51', '2015-10-19 00:53:51', 0, 1, '甘肃省陇南市武都区', 2, '武都区', ',2925,2998,', 2998); INSERT INTO `area` VALUES (3000, '2015-10-19 00:53:52', '2015-10-19 00:53:52', 0, 2, '甘肃省陇南市成县', 2, '成县', ',2925,2998,', 2998); INSERT INTO `area` VALUES (3001, '2015-10-19 00:53:53', '2015-10-19 00:53:53', 0, 3, '甘肃省陇南市文县', 2, '文县', ',2925,2998,', 2998); INSERT INTO `area` VALUES (3002, '2015-10-19 00:53:54', '2015-10-19 00:53:54', 0, 4, '甘肃省陇南市宕昌县', 2, '宕昌县', ',2925,2998,', 2998); INSERT INTO `area` VALUES (3003, '2015-10-19 00:53:55', '2015-10-19 00:53:55', 0, 5, '甘肃省陇南市康县', 2, '康县', ',2925,2998,', 2998); INSERT INTO `area` VALUES (3004, '2015-10-19 00:53:56', '2015-10-19 00:53:56', 0, 6, '甘肃省陇南市西和县', 2, '西和县', ',2925,2998,', 2998); INSERT INTO `area` VALUES (3005, '2015-10-19 00:53:57', '2015-10-19 00:53:57', 0, 7, '甘肃省陇南市礼县', 2, '礼县', ',2925,2998,', 2998); INSERT INTO `area` VALUES (3006, '2015-10-19 00:53:58', '2015-10-19 00:53:58', 0, 8, '甘肃省陇南市徽县', 2, '徽县', ',2925,2998,', 2998); INSERT INTO `area` VALUES (3007, '2015-10-19 00:53:59', '2015-10-19 00:53:59', 0, 9, '甘肃省陇南市两当县', 2, '两当县', ',2925,2998,', 2998); INSERT INTO `area` VALUES (3008, '2015-10-19 00:54:00', '2015-10-19 00:54:00', 0, 13, '甘肃省临夏回族自治州', 1, '临夏回族自治州', ',2925,', 2925); INSERT INTO `area` VALUES (3009, '2015-10-19 00:54:01', '2015-10-19 00:54:01', 0, 1, '甘肃省临夏回族自治州临夏市', 2, '临夏市', ',2925,3008,', 3008); INSERT INTO `area` VALUES (3010, '2015-10-19 00:54:02', '2015-10-19 00:54:02', 0, 2, '甘肃省临夏回族自治州临夏县', 2, '临夏县', ',2925,3008,', 3008); INSERT INTO `area` VALUES (3011, '2015-10-19 00:54:03', '2015-10-19 00:54:03', 0, 3, '甘肃省临夏回族自治州康乐县', 2, '康乐县', ',2925,3008,', 3008); INSERT INTO `area` VALUES (3012, '2015-10-19 00:54:04', '2015-10-19 00:54:04', 0, 4, '甘肃省临夏回族自治州永靖县', 2, '永靖县', ',2925,3008,', 3008); INSERT INTO `area` VALUES (3013, '2015-10-19 00:54:05', '2015-10-19 00:54:05', 0, 5, '甘肃省临夏回族自治州广河县', 2, '广河县', ',2925,3008,', 3008); INSERT INTO `area` VALUES (3014, '2015-10-19 00:54:06', '2015-10-19 00:54:06', 0, 6, '甘肃省临夏回族自治州和政县', 2, '和政县', ',2925,3008,', 3008); INSERT INTO `area` VALUES (3015, '2015-10-19 00:54:07', '2015-10-19 00:54:07', 0, 7, '甘肃省临夏回族自治州东乡族自治县', 2, '东乡族自治县', ',2925,3008,', 3008); INSERT INTO `area` VALUES (3016, '2015-10-19 00:54:08', '2015-10-19 00:54:08', 0, 8, '甘肃省临夏回族自治州积石山保安族东乡族撒拉族自治县', 2, '积石山保安族东乡族撒拉族自治县', ',2925,3008,', 3008); INSERT INTO `area` VALUES (3017, '2015-10-19 00:54:09', '2015-10-19 00:54:09', 0, 14, '甘肃省甘南藏族自治州', 1, '甘南藏族自治州', ',2925,', 2925); INSERT INTO `area` VALUES (3018, '2015-10-19 00:54:10', '2015-10-19 00:54:10', 0, 1, '甘肃省甘南藏族自治州合作市', 2, '合作市', ',2925,3017,', 3017); INSERT INTO `area` VALUES (3019, '2015-10-19 00:54:11', '2015-10-19 00:54:11', 0, 2, '甘肃省甘南藏族自治州临潭县', 2, '临潭县', ',2925,3017,', 3017); INSERT INTO `area` VALUES (3020, '2015-10-19 00:54:12', '2015-10-19 00:54:12', 0, 3, '甘肃省甘南藏族自治州卓尼县', 2, '卓尼县', ',2925,3017,', 3017); INSERT INTO `area` VALUES (3021, '2015-10-19 00:54:13', '2015-10-19 00:54:13', 0, 4, '甘肃省甘南藏族自治州舟曲县', 2, '舟曲县', ',2925,3017,', 3017); INSERT INTO `area` VALUES (3022, '2015-10-19 00:54:14', '2015-10-19 00:54:14', 0, 5, '甘肃省甘南藏族自治州迭部县', 2, '迭部县', ',2925,3017,', 3017); INSERT INTO `area` VALUES (3023, '2015-10-19 00:54:15', '2015-10-19 00:54:15', 0, 6, '甘肃省甘南藏族自治州玛曲县', 2, '玛曲县', ',2925,3017,', 3017); INSERT INTO `area` VALUES (3024, '2015-10-19 00:54:16', '2015-10-19 00:54:16', 0, 7, '甘肃省甘南藏族自治州碌曲县', 2, '碌曲县', ',2925,3017,', 3017); INSERT INTO `area` VALUES (3025, '2015-10-19 00:54:17', '2015-10-19 00:54:17', 0, 8, '甘肃省甘南藏族自治州夏河县', 2, '夏河县', ',2925,3017,', 3017); INSERT INTO `area` VALUES (3026, '2015-10-19 00:54:18', '2015-10-19 00:54:18', 0, 29, '青海省', 0, '青海省', ',', NULL); INSERT INTO `area` VALUES (3027, '2015-10-19 00:54:19', '2015-10-19 00:54:19', 0, 1, '青海省西宁市', 1, '西宁市', ',3026,', 3026); INSERT INTO `area` VALUES (3028, '2015-10-19 00:54:20', '2015-10-19 00:54:20', 0, 1, '青海省西宁市城东区', 2, '城东区', ',3026,3027,', 3027); INSERT INTO `area` VALUES (3029, '2015-10-19 00:54:21', '2015-10-19 00:54:21', 0, 2, '青海省西宁市城中区', 2, '城中区', ',3026,3027,', 3027); INSERT INTO `area` VALUES (3030, '2015-10-19 00:54:22', '2015-10-19 00:54:22', 0, 3, '青海省西宁市城西区', 2, '城西区', ',3026,3027,', 3027); INSERT INTO `area` VALUES (3031, '2015-10-19 00:54:23', '2015-10-19 00:54:23', 0, 4, '青海省西宁市城北区', 2, '城北区', ',3026,3027,', 3027); INSERT INTO `area` VALUES (3032, '2015-10-19 00:54:24', '2015-10-19 00:54:24', 0, 5, '青海省西宁市大通回族土族自治县', 2, '大通回族土族自治县', ',3026,3027,', 3027); INSERT INTO `area` VALUES (3033, '2015-10-19 00:54:25', '2015-10-19 00:54:25', 0, 6, '青海省西宁市湟中县', 2, '湟中县', ',3026,3027,', 3027); INSERT INTO `area` VALUES (3034, '2015-10-19 00:54:26', '2015-10-19 00:54:26', 0, 7, '青海省西宁市湟源县', 2, '湟源县', ',3026,3027,', 3027); INSERT INTO `area` VALUES (3035, '2015-10-19 00:54:27', '2015-10-19 00:54:27', 0, 2, '青海省海东市', 1, '海东市', ',3026,', 3026); INSERT INTO `area` VALUES (3036, '2015-10-19 00:54:28', '2015-10-19 00:54:28', 0, 1, '青海省海东市乐都区', 2, '乐都区', ',3026,3035,', 3035); INSERT INTO `area` VALUES (3037, '2015-10-19 00:54:29', '2015-10-19 00:54:29', 0, 2, '青海省海东市平安县', 2, '平安县', ',3026,3035,', 3035); INSERT INTO `area` VALUES (3038, '2015-10-19 00:54:30', '2015-10-19 00:54:30', 0, 3, '青海省海东市民和回族土族自治县', 2, '民和回族土族自治县', ',3026,3035,', 3035); INSERT INTO `area` VALUES (3039, '2015-10-19 00:54:31', '2015-10-19 00:54:31', 0, 4, '青海省海东市互助土族自治县', 2, '互助土族自治县', ',3026,3035,', 3035); INSERT INTO `area` VALUES (3040, '2015-10-19 00:54:32', '2015-10-19 00:54:32', 0, 5, '青海省海东市化隆回族自治县', 2, '化隆回族自治县', ',3026,3035,', 3035); INSERT INTO `area` VALUES (3041, '2015-10-19 00:54:33', '2015-10-19 00:54:33', 0, 6, '青海省海东市循化撒拉族自治县', 2, '循化撒拉族自治县', ',3026,3035,', 3035); INSERT INTO `area` VALUES (3042, '2015-10-19 00:54:34', '2015-10-19 00:54:34', 0, 3, '青海省海北藏族自治州', 1, '海北藏族自治州', ',3026,', 3026); INSERT INTO `area` VALUES (3043, '2015-10-19 00:54:35', '2015-10-19 00:54:35', 0, 1, '青海省海北藏族自治州门源回族自治县', 2, '门源回族自治县', ',3026,3042,', 3042); INSERT INTO `area` VALUES (3044, '2015-10-19 00:54:36', '2015-10-19 00:54:36', 0, 2, '青海省海北藏族自治州祁连县', 2, '祁连县', ',3026,3042,', 3042); INSERT INTO `area` VALUES (3045, '2015-10-19 00:54:37', '2015-10-19 00:54:37', 0, 3, '青海省海北藏族自治州海晏县', 2, '海晏县', ',3026,3042,', 3042); INSERT INTO `area` VALUES (3046, '2015-10-19 00:54:38', '2015-10-19 00:54:38', 0, 4, '青海省海北藏族自治州刚察县', 2, '刚察县', ',3026,3042,', 3042); INSERT INTO `area` VALUES (3047, '2015-10-19 00:54:39', '2015-10-19 00:54:39', 0, 4, '青海省黄南藏族自治州', 1, '黄南藏族自治州', ',3026,', 3026); INSERT INTO `area` VALUES (3048, '2015-10-19 00:54:40', '2015-10-19 00:54:40', 0, 1, '青海省黄南藏族自治州同仁县', 2, '同仁县', ',3026,3047,', 3047); INSERT INTO `area` VALUES (3049, '2015-10-19 00:54:41', '2015-10-19 00:54:41', 0, 2, '青海省黄南藏族自治州尖扎县', 2, '尖扎县', ',3026,3047,', 3047); INSERT INTO `area` VALUES (3050, '2015-10-19 00:54:42', '2015-10-19 00:54:42', 0, 3, '青海省黄南藏族自治州泽库县', 2, '泽库县', ',3026,3047,', 3047); INSERT INTO `area` VALUES (3051, '2015-10-19 00:54:43', '2015-10-19 00:54:43', 0, 4, '青海省黄南藏族自治州河南蒙古族自治县', 2, '河南蒙古族自治县', ',3026,3047,', 3047); INSERT INTO `area` VALUES (3052, '2015-10-19 00:54:44', '2015-10-19 00:54:44', 0, 5, '青海省海南藏族自治州', 1, '海南藏族自治州', ',3026,', 3026); INSERT INTO `area` VALUES (3053, '2015-10-19 00:54:45', '2015-10-19 00:54:45', 0, 1, '青海省海南藏族自治州共和县', 2, '共和县', ',3026,3052,', 3052); INSERT INTO `area` VALUES (3054, '2015-10-19 00:54:46', '2015-10-19 00:54:46', 0, 2, '青海省海南藏族自治州同德县', 2, '同德县', ',3026,3052,', 3052); INSERT INTO `area` VALUES (3055, '2015-10-19 00:54:47', '2015-10-19 00:54:47', 0, 3, '青海省海南藏族自治州贵德县', 2, '贵德县', ',3026,3052,', 3052); INSERT INTO `area` VALUES (3056, '2015-10-19 00:54:48', '2015-10-19 00:54:48', 0, 4, '青海省海南藏族自治州兴海县', 2, '兴海县', ',3026,3052,', 3052); INSERT INTO `area` VALUES (3057, '2015-10-19 00:54:49', '2015-10-19 00:54:49', 0, 5, '青海省海南藏族自治州贵南县', 2, '贵南县', ',3026,3052,', 3052); INSERT INTO `area` VALUES (3058, '2015-10-19 00:54:50', '2015-10-19 00:54:50', 0, 6, '青海省果洛藏族自治州', 1, '果洛藏族自治州', ',3026,', 3026); INSERT INTO `area` VALUES (3059, '2015-10-19 00:54:51', '2015-10-19 00:54:51', 0, 1, '青海省果洛藏族自治州玛沁县', 2, '玛沁县', ',3026,3058,', 3058); INSERT INTO `area` VALUES (3060, '2015-10-19 00:54:52', '2015-10-19 00:54:52', 0, 2, '青海省果洛藏族自治州班玛县', 2, '班玛县', ',3026,3058,', 3058); INSERT INTO `area` VALUES (3061, '2015-10-19 00:54:53', '2015-10-19 00:54:53', 0, 3, '青海省果洛藏族自治州甘德县', 2, '甘德县', ',3026,3058,', 3058); INSERT INTO `area` VALUES (3062, '2015-10-19 00:54:54', '2015-10-19 00:54:54', 0, 4, '青海省果洛藏族自治州达日县', 2, '达日县', ',3026,3058,', 3058); INSERT INTO `area` VALUES (3063, '2015-10-19 00:54:55', '2015-10-19 00:54:55', 0, 5, '青海省果洛藏族自治州久治县', 2, '久治县', ',3026,3058,', 3058); INSERT INTO `area` VALUES (3064, '2015-10-19 00:54:56', '2015-10-19 00:54:56', 0, 6, '青海省果洛藏族自治州玛多县', 2, '玛多县', ',3026,3058,', 3058); INSERT INTO `area` VALUES (3065, '2015-10-19 00:54:57', '2015-10-19 00:54:57', 0, 7, '青海省玉树藏族自治州', 1, '玉树藏族自治州', ',3026,', 3026); INSERT INTO `area` VALUES (3066, '2015-10-19 00:54:58', '2015-10-19 00:54:58', 0, 1, '青海省玉树藏族自治州玉树市', 2, '玉树市', ',3026,3065,', 3065); INSERT INTO `area` VALUES (3067, '2015-10-19 00:54:59', '2015-10-19 00:54:59', 0, 2, '青海省玉树藏族自治州杂多县', 2, '杂多县', ',3026,3065,', 3065); INSERT INTO `area` VALUES (3068, '2015-10-19 00:55:00', '2015-10-19 00:55:00', 0, 3, '青海省玉树藏族自治州称多县', 2, '称多县', ',3026,3065,', 3065); INSERT INTO `area` VALUES (3069, '2015-10-19 00:55:01', '2015-10-19 00:55:01', 0, 4, '青海省玉树藏族自治州治多县', 2, '治多县', ',3026,3065,', 3065); INSERT INTO `area` VALUES (3070, '2015-10-19 00:55:02', '2015-10-19 00:55:02', 0, 5, '青海省玉树藏族自治州囊谦县', 2, '囊谦县', ',3026,3065,', 3065); INSERT INTO `area` VALUES (3071, '2015-10-19 00:55:03', '2015-10-19 00:55:03', 0, 6, '青海省玉树藏族自治州曲麻莱县', 2, '曲麻莱县', ',3026,3065,', 3065); INSERT INTO `area` VALUES (3072, '2015-10-19 00:55:04', '2015-10-19 00:55:04', 0, 8, '青海省海西蒙古族藏族自治州', 1, '海西蒙古族藏族自治州', ',3026,', 3026); INSERT INTO `area` VALUES (3073, '2015-10-19 00:55:05', '2015-10-19 00:55:05', 0, 1, '青海省海西蒙古族藏族自治州格尔木市', 2, '格尔木市', ',3026,3072,', 3072); INSERT INTO `area` VALUES (3074, '2015-10-19 00:55:06', '2015-10-19 00:55:06', 0, 2, '青海省海西蒙古族藏族自治州德令哈市', 2, '德令哈市', ',3026,3072,', 3072); INSERT INTO `area` VALUES (3075, '2015-10-19 00:55:07', '2015-10-19 00:55:07', 0, 3, '青海省海西蒙古族藏族自治州乌兰县', 2, '乌兰县', ',3026,3072,', 3072); INSERT INTO `area` VALUES (3076, '2015-10-19 00:55:08', '2015-10-19 00:55:08', 0, 4, '青海省海西蒙古族藏族自治州都兰县', 2, '都兰县', ',3026,3072,', 3072); INSERT INTO `area` VALUES (3077, '2015-10-19 00:55:09', '2015-10-19 00:55:09', 0, 5, '青海省海西蒙古族藏族自治州天峻县', 2, '天峻县', ',3026,3072,', 3072); INSERT INTO `area` VALUES (3078, '2015-10-19 00:55:10', '2015-10-19 00:55:10', 0, 30, '宁夏回族自治区', 0, '宁夏回族自治区', ',', NULL); INSERT INTO `area` VALUES (3079, '2015-10-19 00:55:11', '2015-10-19 00:55:11', 0, 1, '宁夏回族自治区银川市', 1, '银川市', ',3078,', 3078); INSERT INTO `area` VALUES (3080, '2015-10-19 00:55:12', '2015-10-19 00:55:12', 0, 1, '宁夏回族自治区银川市兴庆区', 2, '兴庆区', ',3078,3079,', 3079); INSERT INTO `area` VALUES (3081, '2015-10-19 00:55:13', '2015-10-19 00:55:13', 0, 2, '宁夏回族自治区银川市西夏区', 2, '西夏区', ',3078,3079,', 3079); INSERT INTO `area` VALUES (3082, '2015-10-19 00:55:14', '2015-10-19 00:55:14', 0, 3, '宁夏回族自治区银川市金凤区', 2, '金凤区', ',3078,3079,', 3079); INSERT INTO `area` VALUES (3083, '2015-10-19 00:55:15', '2015-10-19 00:55:15', 0, 4, '宁夏回族自治区银川市永宁县', 2, '永宁县', ',3078,3079,', 3079); INSERT INTO `area` VALUES (3084, '2015-10-19 00:55:16', '2015-10-19 00:55:16', 0, 5, '宁夏回族自治区银川市贺兰县', 2, '贺兰县', ',3078,3079,', 3079); INSERT INTO `area` VALUES (3085, '2015-10-19 00:55:17', '2015-10-19 00:55:17', 0, 6, '宁夏回族自治区银川市灵武市', 2, '灵武市', ',3078,3079,', 3079); INSERT INTO `area` VALUES (3086, '2015-10-19 00:55:18', '2015-10-19 00:55:18', 0, 2, '宁夏回族自治区石嘴山市', 1, '石嘴山市', ',3078,', 3078); INSERT INTO `area` VALUES (3087, '2015-10-19 00:55:19', '2015-10-19 00:55:19', 0, 1, '宁夏回族自治区石嘴山市大武口区', 2, '大武口区', ',3078,3086,', 3086); INSERT INTO `area` VALUES (3088, '2015-10-19 00:55:20', '2015-10-19 00:55:20', 0, 2, '宁夏回族自治区石嘴山市惠农区', 2, '惠农区', ',3078,3086,', 3086); INSERT INTO `area` VALUES (3089, '2015-10-19 00:55:21', '2015-10-19 00:55:21', 0, 3, '宁夏回族自治区石嘴山市平罗县', 2, '平罗县', ',3078,3086,', 3086); INSERT INTO `area` VALUES (3090, '2015-10-19 00:55:22', '2015-10-19 00:55:22', 0, 3, '宁夏回族自治区吴忠市', 1, '吴忠市', ',3078,', 3078); INSERT INTO `area` VALUES (3091, '2015-10-19 00:55:23', '2015-10-19 00:55:23', 0, 1, '宁夏回族自治区吴忠市利通区', 2, '利通区', ',3078,3090,', 3090); INSERT INTO `area` VALUES (3092, '2015-10-19 00:55:24', '2015-10-19 00:55:24', 0, 2, '宁夏回族自治区吴忠市红寺堡区', 2, '红寺堡区', ',3078,3090,', 3090); INSERT INTO `area` VALUES (3093, '2015-10-19 00:55:25', '2015-10-19 00:55:25', 0, 3, '宁夏回族自治区吴忠市盐池县', 2, '盐池县', ',3078,3090,', 3090); INSERT INTO `area` VALUES (3094, '2015-10-19 00:55:26', '2015-10-19 00:55:26', 0, 4, '宁夏回族自治区吴忠市同心县', 2, '同心县', ',3078,3090,', 3090); INSERT INTO `area` VALUES (3095, '2015-10-19 00:55:27', '2015-10-19 00:55:27', 0, 5, '宁夏回族自治区吴忠市青铜峡市', 2, '青铜峡市', ',3078,3090,', 3090); INSERT INTO `area` VALUES (3096, '2015-10-19 00:55:28', '2015-10-19 00:55:28', 0, 4, '宁夏回族自治区固原市', 1, '固原市', ',3078,', 3078); INSERT INTO `area` VALUES (3097, '2015-10-19 00:55:29', '2015-10-19 00:55:29', 0, 1, '宁夏回族自治区固原市原州区', 2, '原州区', ',3078,3096,', 3096); INSERT INTO `area` VALUES (3098, '2015-10-19 00:55:30', '2015-10-19 00:55:30', 0, 2, '宁夏回族自治区固原市西吉县', 2, '西吉县', ',3078,3096,', 3096); INSERT INTO `area` VALUES (3099, '2015-10-19 00:55:31', '2015-10-19 00:55:31', 0, 3, '宁夏回族自治区固原市隆德县', 2, '隆德县', ',3078,3096,', 3096); INSERT INTO `area` VALUES (3100, '2015-10-19 00:55:32', '2015-10-19 00:55:32', 0, 4, '宁夏回族自治区固原市泾源县', 2, '泾源县', ',3078,3096,', 3096); INSERT INTO `area` VALUES (3101, '2015-10-19 00:55:33', '2015-10-19 00:55:33', 0, 5, '宁夏回族自治区固原市彭阳县', 2, '彭阳县', ',3078,3096,', 3096); INSERT INTO `area` VALUES (3102, '2015-10-19 00:55:34', '2015-10-19 00:55:34', 0, 5, '宁夏回族自治区中卫市', 1, '中卫市', ',3078,', 3078); INSERT INTO `area` VALUES (3103, '2015-10-19 00:55:35', '2015-10-19 00:55:35', 0, 1, '宁夏回族自治区中卫市沙坡头区', 2, '沙坡头区', ',3078,3102,', 3102); INSERT INTO `area` VALUES (3104, '2015-10-19 00:55:36', '2015-10-19 00:55:36', 0, 2, '宁夏回族自治区中卫市中宁县', 2, '中宁县', ',3078,3102,', 3102); INSERT INTO `area` VALUES (3105, '2015-10-19 00:55:37', '2015-10-19 00:55:37', 0, 3, '宁夏回族自治区中卫市海原县', 2, '海原县', ',3078,3102,', 3102); INSERT INTO `area` VALUES (3106, '2015-10-19 00:55:38', '2015-10-19 00:55:38', 0, 31, '新疆维吾尔自治区', 0, '新疆维吾尔自治区', ',', NULL); INSERT INTO `area` VALUES (3107, '2015-10-19 00:55:39', '2015-10-19 00:55:39', 0, 1, '新疆维吾尔自治区乌鲁木齐市', 1, '乌鲁木齐市', ',3106,', 3106); INSERT INTO `area` VALUES (3108, '2015-10-19 00:55:40', '2015-10-19 00:55:40', 0, 1, '新疆维吾尔自治区乌鲁木齐市天山区', 2, '天山区', ',3106,3107,', 3107); INSERT INTO `area` VALUES (3109, '2015-10-19 00:55:41', '2015-10-19 00:55:41', 0, 2, '新疆维吾尔自治区乌鲁木齐市沙依巴克区', 2, '沙依巴克区', ',3106,3107,', 3107); INSERT INTO `area` VALUES (3110, '2015-10-19 00:55:42', '2015-10-19 00:55:42', 0, 3, '新疆维吾尔自治区乌鲁木齐市新市区', 2, '新市区', ',3106,3107,', 3107); INSERT INTO `area` VALUES (3111, '2015-10-19 00:55:43', '2015-10-19 00:55:43', 0, 4, '新疆维吾尔自治区乌鲁木齐市水磨沟区', 2, '水磨沟区', ',3106,3107,', 3107); INSERT INTO `area` VALUES (3112, '2015-10-19 00:55:44', '2015-10-19 00:55:44', 0, 5, '新疆维吾尔自治区乌鲁木齐市头屯河区', 2, '头屯河区', ',3106,3107,', 3107); INSERT INTO `area` VALUES (3113, '2015-10-19 00:55:45', '2015-10-19 00:55:45', 0, 6, '新疆维吾尔自治区乌鲁木齐市达坂城区', 2, '达坂城区', ',3106,3107,', 3107); INSERT INTO `area` VALUES (3114, '2015-10-19 00:55:46', '2015-10-19 00:55:46', 0, 7, '新疆维吾尔自治区乌鲁木齐市米东区', 2, '米东区', ',3106,3107,', 3107); INSERT INTO `area` VALUES (3115, '2015-10-19 00:55:47', '2015-10-19 00:55:47', 0, 8, '新疆维吾尔自治区乌鲁木齐市乌鲁木齐县', 2, '乌鲁木齐县', ',3106,3107,', 3107); INSERT INTO `area` VALUES (3116, '2015-10-19 00:55:48', '2015-10-19 00:55:48', 0, 2, '新疆维吾尔自治区克拉玛依市', 1, '克拉玛依市', ',3106,', 3106); INSERT INTO `area` VALUES (3117, '2015-10-19 00:55:49', '2015-10-19 00:55:49', 0, 1, '新疆维吾尔自治区克拉玛依市独山子区', 2, '独山子区', ',3106,3116,', 3116); INSERT INTO `area` VALUES (3118, '2015-10-19 00:55:50', '2015-10-19 00:55:50', 0, 2, '新疆维吾尔自治区克拉玛依市克拉玛依区', 2, '克拉玛依区', ',3106,3116,', 3116); INSERT INTO `area` VALUES (3119, '2015-10-19 00:55:51', '2015-10-19 00:55:51', 0, 3, '新疆维吾尔自治区克拉玛依市白碱滩区', 2, '白碱滩区', ',3106,3116,', 3116); INSERT INTO `area` VALUES (3120, '2015-10-19 00:55:52', '2015-10-19 00:55:52', 0, 4, '新疆维吾尔自治区克拉玛依市乌尔禾区', 2, '乌尔禾区', ',3106,3116,', 3116); INSERT INTO `area` VALUES (3121, '2015-10-19 00:55:53', '2015-10-19 00:55:53', 0, 3, '新疆维吾尔自治区吐鲁番地区', 1, '吐鲁番地区', ',3106,', 3106); INSERT INTO `area` VALUES (3122, '2015-10-19 00:55:54', '2015-10-19 00:55:54', 0, 1, '新疆维吾尔自治区吐鲁番地区吐鲁番市', 2, '吐鲁番市', ',3106,3121,', 3121); INSERT INTO `area` VALUES (3123, '2015-10-19 00:55:55', '2015-10-19 00:55:55', 0, 2, '新疆维吾尔自治区吐鲁番地区鄯善县', 2, '鄯善县', ',3106,3121,', 3121); INSERT INTO `area` VALUES (3124, '2015-10-19 00:55:56', '2015-10-19 00:55:56', 0, 3, '新疆维吾尔自治区吐鲁番地区托克逊县', 2, '托克逊县', ',3106,3121,', 3121); INSERT INTO `area` VALUES (3125, '2015-10-19 00:55:57', '2015-10-19 00:55:57', 0, 4, '新疆维吾尔自治区哈密地区', 1, '哈密地区', ',3106,', 3106); INSERT INTO `area` VALUES (3126, '2015-10-19 00:55:58', '2015-10-19 00:55:58', 0, 1, '新疆维吾尔自治区哈密地区哈密市', 2, '哈密市', ',3106,3125,', 3125); INSERT INTO `area` VALUES (3127, '2015-10-19 00:55:59', '2015-10-19 00:55:59', 0, 2, '新疆维吾尔自治区哈密地区巴里坤哈萨克自治县', 2, '巴里坤哈萨克自治县', ',3106,3125,', 3125); INSERT INTO `area` VALUES (3128, '2015-10-19 00:56:00', '2015-10-19 00:56:00', 0, 3, '新疆维吾尔自治区哈密地区伊吾县', 2, '伊吾县', ',3106,3125,', 3125); INSERT INTO `area` VALUES (3129, '2015-10-19 00:56:01', '2015-10-19 00:56:01', 0, 5, '新疆维吾尔自治区昌吉回族自治州', 1, '昌吉回族自治州', ',3106,', 3106); INSERT INTO `area` VALUES (3130, '2015-10-19 00:56:02', '2015-10-19 00:56:02', 0, 1, '新疆维吾尔自治区昌吉回族自治州昌吉市', 2, '昌吉市', ',3106,3129,', 3129); INSERT INTO `area` VALUES (3131, '2015-10-19 00:56:03', '2015-10-19 00:56:03', 0, 2, '新疆维吾尔自治区昌吉回族自治州阜康市', 2, '阜康市', ',3106,3129,', 3129); INSERT INTO `area` VALUES (3132, '2015-10-19 00:56:04', '2015-10-19 00:56:04', 0, 3, '新疆维吾尔自治区昌吉回族自治州呼图壁县', 2, '呼图壁县', ',3106,3129,', 3129); INSERT INTO `area` VALUES (3133, '2015-10-19 00:56:05', '2015-10-19 00:56:05', 0, 4, '新疆维吾尔自治区昌吉回族自治州玛纳斯县', 2, '玛纳斯县', ',3106,3129,', 3129); INSERT INTO `area` VALUES (3134, '2015-10-19 00:56:06', '2015-10-19 00:56:06', 0, 5, '新疆维吾尔自治区昌吉回族自治州奇台县', 2, '奇台县', ',3106,3129,', 3129); INSERT INTO `area` VALUES (3135, '2015-10-19 00:56:07', '2015-10-19 00:56:07', 0, 6, '新疆维吾尔自治区昌吉回族自治州吉木萨尔县', 2, '吉木萨尔县', ',3106,3129,', 3129); INSERT INTO `area` VALUES (3136, '2015-10-19 00:56:08', '2015-10-19 00:56:08', 0, 7, '新疆维吾尔自治区昌吉回族自治州木垒哈萨克自治县', 2, '木垒哈萨克自治县', ',3106,3129,', 3129); INSERT INTO `area` VALUES (3137, '2015-10-19 00:56:09', '2015-10-19 00:56:09', 0, 6, '新疆维吾尔自治区博尔塔拉蒙古自治州', 1, '博尔塔拉蒙古自治州', ',3106,', 3106); INSERT INTO `area` VALUES (3138, '2015-10-19 00:56:10', '2015-10-19 00:56:10', 0, 1, '新疆维吾尔自治区博尔塔拉蒙古自治州博乐市', 2, '博乐市', ',3106,3137,', 3137); INSERT INTO `area` VALUES (3139, '2015-10-19 00:56:11', '2015-10-19 00:56:11', 0, 2, '新疆维吾尔自治区博尔塔拉蒙古自治州阿拉山口市', 2, '阿拉山口市', ',3106,3137,', 3137); INSERT INTO `area` VALUES (3140, '2015-10-19 00:56:12', '2015-10-19 00:56:12', 0, 3, '新疆维吾尔自治区博尔塔拉蒙古自治州精河县', 2, '精河县', ',3106,3137,', 3137); INSERT INTO `area` VALUES (3141, '2015-10-19 00:56:13', '2015-10-19 00:56:13', 0, 4, '新疆维吾尔自治区博尔塔拉蒙古自治州温泉县', 2, '温泉县', ',3106,3137,', 3137); INSERT INTO `area` VALUES (3142, '2015-10-19 00:56:14', '2015-10-19 00:56:14', 0, 7, '新疆维吾尔自治区巴音郭楞蒙古自治州', 1, '巴音郭楞蒙古自治州', ',3106,', 3106); INSERT INTO `area` VALUES (3143, '2015-10-19 00:56:15', '2015-10-19 00:56:15', 0, 1, '新疆维吾尔自治区巴音郭楞蒙古自治州库尔勒市', 2, '库尔勒市', ',3106,3142,', 3142); INSERT INTO `area` VALUES (3144, '2015-10-19 00:56:16', '2015-10-19 00:56:16', 0, 2, '新疆维吾尔自治区巴音郭楞蒙古自治州轮台县', 2, '轮台县', ',3106,3142,', 3142); INSERT INTO `area` VALUES (3145, '2015-10-19 00:56:17', '2015-10-19 00:56:17', 0, 3, '新疆维吾尔自治区巴音郭楞蒙古自治州尉犁县', 2, '尉犁县', ',3106,3142,', 3142); INSERT INTO `area` VALUES (3146, '2015-10-19 00:56:18', '2015-10-19 00:56:18', 0, 4, '新疆维吾尔自治区巴音郭楞蒙古自治州若羌县', 2, '若羌县', ',3106,3142,', 3142); INSERT INTO `area` VALUES (3147, '2015-10-19 00:56:19', '2015-10-19 00:56:19', 0, 5, '新疆维吾尔自治区巴音郭楞蒙古自治州且末县', 2, '且末县', ',3106,3142,', 3142); INSERT INTO `area` VALUES (3148, '2015-10-19 00:56:20', '2015-10-19 00:56:20', 0, 6, '新疆维吾尔自治区巴音郭楞蒙古自治州焉耆回族自治县', 2, '焉耆回族自治县', ',3106,3142,', 3142); INSERT INTO `area` VALUES (3149, '2015-10-19 00:56:21', '2015-10-19 00:56:21', 0, 7, '新疆维吾尔自治区巴音郭楞蒙古自治州和静县', 2, '和静县', ',3106,3142,', 3142); INSERT INTO `area` VALUES (3150, '2015-10-19 00:56:22', '2015-10-19 00:56:22', 0, 8, '新疆维吾尔自治区巴音郭楞蒙古自治州和硕县', 2, '和硕县', ',3106,3142,', 3142); INSERT INTO `area` VALUES (3151, '2015-10-19 00:56:23', '2015-10-19 00:56:23', 0, 9, '新疆维吾尔自治区巴音郭楞蒙古自治州博湖县', 2, '博湖县', ',3106,3142,', 3142); INSERT INTO `area` VALUES (3152, '2015-10-19 00:56:24', '2015-10-19 00:56:24', 0, 8, '新疆维吾尔自治区阿克苏地区', 1, '阿克苏地区', ',3106,', 3106); INSERT INTO `area` VALUES (3153, '2015-10-19 00:56:25', '2015-10-19 00:56:25', 0, 1, '新疆维吾尔自治区阿克苏地区阿克苏市', 2, '阿克苏市', ',3106,3152,', 3152); INSERT INTO `area` VALUES (3154, '2015-10-19 00:56:26', '2015-10-19 00:56:26', 0, 2, '新疆维吾尔自治区阿克苏地区温宿县', 2, '温宿县', ',3106,3152,', 3152); INSERT INTO `area` VALUES (3155, '2015-10-19 00:56:27', '2015-10-19 00:56:27', 0, 3, '新疆维吾尔自治区阿克苏地区库车县', 2, '库车县', ',3106,3152,', 3152); INSERT INTO `area` VALUES (3156, '2015-10-19 00:56:28', '2015-10-19 00:56:28', 0, 4, '新疆维吾尔自治区阿克苏地区沙雅县', 2, '沙雅县', ',3106,3152,', 3152); INSERT INTO `area` VALUES (3157, '2015-10-19 00:56:29', '2015-10-19 00:56:29', 0, 5, '新疆维吾尔自治区阿克苏地区新和县', 2, '新和县', ',3106,3152,', 3152); INSERT INTO `area` VALUES (3158, '2015-10-19 00:56:30', '2015-10-19 00:56:30', 0, 6, '新疆维吾尔自治区阿克苏地区拜城县', 2, '拜城县', ',3106,3152,', 3152); INSERT INTO `area` VALUES (3159, '2015-10-19 00:56:31', '2015-10-19 00:56:31', 0, 7, '新疆维吾尔自治区阿克苏地区乌什县', 2, '乌什县', ',3106,3152,', 3152); INSERT INTO `area` VALUES (3160, '2015-10-19 00:56:32', '2015-10-19 00:56:32', 0, 8, '新疆维吾尔自治区阿克苏地区阿瓦提县', 2, '阿瓦提县', ',3106,3152,', 3152); INSERT INTO `area` VALUES (3161, '2015-10-19 00:56:33', '2015-10-19 00:56:33', 0, 9, '新疆维吾尔自治区阿克苏地区柯坪县', 2, '柯坪县', ',3106,3152,', 3152); INSERT INTO `area` VALUES (3162, '2015-10-19 00:56:34', '2015-10-19 00:56:34', 0, 9, '新疆维吾尔自治区克孜勒苏柯尔克孜自治州', 1, '克孜勒苏柯尔克孜自治州', ',3106,', 3106); INSERT INTO `area` VALUES (3163, '2015-10-19 00:56:35', '2015-10-19 00:56:35', 0, 1, '新疆维吾尔自治区克孜勒苏柯尔克孜自治州阿图什市', 2, '阿图什市', ',3106,3162,', 3162); INSERT INTO `area` VALUES (3164, '2015-10-19 00:56:36', '2015-10-19 00:56:36', 0, 2, '新疆维吾尔自治区克孜勒苏柯尔克孜自治州阿克陶县', 2, '阿克陶县', ',3106,3162,', 3162); INSERT INTO `area` VALUES (3165, '2015-10-19 00:56:37', '2015-10-19 00:56:37', 0, 3, '新疆维吾尔自治区克孜勒苏柯尔克孜自治州阿合奇县', 2, '阿合奇县', ',3106,3162,', 3162); INSERT INTO `area` VALUES (3166, '2015-10-19 00:56:38', '2015-10-19 00:56:38', 0, 4, '新疆维吾尔自治区克孜勒苏柯尔克孜自治州乌恰县', 2, '乌恰县', ',3106,3162,', 3162); INSERT INTO `area` VALUES (3167, '2015-10-19 00:56:39', '2015-10-19 00:56:39', 0, 10, '新疆维吾尔自治区喀什地区', 1, '喀什地区', ',3106,', 3106); INSERT INTO `area` VALUES (3168, '2015-10-19 00:56:40', '2015-10-19 00:56:40', 0, 1, '新疆维吾尔自治区喀什地区喀什市', 2, '喀什市', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3169, '2015-10-19 00:56:41', '2015-10-19 00:56:41', 0, 2, '新疆维吾尔自治区喀什地区疏附县', 2, '疏附县', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3170, '2015-10-19 00:56:42', '2015-10-19 00:56:42', 0, 3, '新疆维吾尔自治区喀什地区疏勒县', 2, '疏勒县', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3171, '2015-10-19 00:56:43', '2015-10-19 00:56:43', 0, 4, '新疆维吾尔自治区喀什地区英吉沙县', 2, '英吉沙县', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3172, '2015-10-19 00:56:44', '2015-10-19 00:56:44', 0, 5, '新疆维吾尔自治区喀什地区泽普县', 2, '泽普县', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3173, '2015-10-19 00:56:45', '2015-10-19 00:56:45', 0, 6, '新疆维吾尔自治区喀什地区莎车县', 2, '莎车县', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3174, '2015-10-19 00:56:46', '2015-10-19 00:56:46', 0, 7, '新疆维吾尔自治区喀什地区叶城县', 2, '叶城县', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3175, '2015-10-19 00:56:47', '2015-10-19 00:56:47', 0, 8, '新疆维吾尔自治区喀什地区麦盖提县', 2, '麦盖提县', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3176, '2015-10-19 00:56:48', '2015-10-19 00:56:48', 0, 9, '新疆维吾尔自治区喀什地区岳普湖县', 2, '岳普湖县', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3177, '2015-10-19 00:56:49', '2015-10-19 00:56:49', 0, 10, '新疆维吾尔自治区喀什地区伽师县', 2, '伽师县', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3178, '2015-10-19 00:56:50', '2015-10-19 00:56:50', 0, 11, '新疆维吾尔自治区喀什地区巴楚县', 2, '巴楚县', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3179, '2015-10-19 00:56:51', '2015-10-19 00:56:51', 0, 12, '新疆维吾尔自治区喀什地区塔什库尔干塔吉克自治县', 2, '塔什库尔干塔吉克自治县', ',3106,3167,', 3167); INSERT INTO `area` VALUES (3180, '2015-10-19 00:56:52', '2015-10-19 00:56:52', 0, 11, '新疆维吾尔自治区和田地区', 1, '和田地区', ',3106,', 3106); INSERT INTO `area` VALUES (3181, '2015-10-19 00:56:53', '2015-10-19 00:56:53', 0, 1, '新疆维吾尔自治区和田地区和田市', 2, '和田市', ',3106,3180,', 3180); INSERT INTO `area` VALUES (3182, '2015-10-19 00:56:54', '2015-10-19 00:56:54', 0, 2, '新疆维吾尔自治区和田地区和田县', 2, '和田县', ',3106,3180,', 3180); INSERT INTO `area` VALUES (3183, '2015-10-19 00:56:55', '2015-10-19 00:56:55', 0, 3, '新疆维吾尔自治区和田地区墨玉县', 2, '墨玉县', ',3106,3180,', 3180); INSERT INTO `area` VALUES (3184, '2015-10-19 00:56:56', '2015-10-19 00:56:56', 0, 4, '新疆维吾尔自治区和田地区皮山县', 2, '皮山县', ',3106,3180,', 3180); INSERT INTO `area` VALUES (3185, '2015-10-19 00:56:57', '2015-10-19 00:56:57', 0, 5, '新疆维吾尔自治区和田地区洛浦县', 2, '洛浦县', ',3106,3180,', 3180); INSERT INTO `area` VALUES (3186, '2015-10-19 00:56:58', '2015-10-19 00:56:58', 0, 6, '新疆维吾尔自治区和田地区策勒县', 2, '策勒县', ',3106,3180,', 3180); INSERT INTO `area` VALUES (3187, '2015-10-19 00:56:59', '2015-10-19 00:56:59', 0, 7, '新疆维吾尔自治区和田地区于田县', 2, '于田县', ',3106,3180,', 3180); INSERT INTO `area` VALUES (3188, '2015-10-19 00:57:00', '2015-10-19 00:57:00', 0, 8, '新疆维吾尔自治区和田地区民丰县', 2, '民丰县', ',3106,3180,', 3180); INSERT INTO `area` VALUES (3189, '2015-10-19 00:57:01', '2015-10-19 00:57:01', 0, 12, '新疆维吾尔自治区伊犁哈萨克自治州', 1, '伊犁哈萨克自治州', ',3106,', 3106); INSERT INTO `area` VALUES (3190, '2015-10-19 00:57:02', '2015-10-19 00:57:02', 0, 1, '新疆维吾尔自治区伊犁哈萨克自治州伊宁市', 2, '伊宁市', ',3106,3189,', 3189); INSERT INTO `area` VALUES (3191, '2015-10-19 00:57:03', '2015-10-19 00:57:03', 0, 2, '新疆维吾尔自治区伊犁哈萨克自治州奎屯市', 2, '奎屯市', ',3106,3189,', 3189); INSERT INTO `area` VALUES (3192, '2015-10-19 00:57:04', '2015-10-19 00:57:04', 0, 3, '新疆维吾尔自治区伊犁哈萨克自治州伊宁县', 2, '伊宁县', ',3106,3189,', 3189); INSERT INTO `area` VALUES (3193, '2015-10-19 00:57:05', '2015-10-19 00:57:05', 0, 4, '新疆维吾尔自治区伊犁哈萨克自治州察布查尔锡伯自治县', 2, '察布查尔锡伯自治县', ',3106,3189,', 3189); INSERT INTO `area` VALUES (3194, '2015-10-19 00:57:06', '2015-10-19 00:57:06', 0, 5, '新疆维吾尔自治区伊犁哈萨克自治州霍城县', 2, '霍城县', ',3106,3189,', 3189); INSERT INTO `area` VALUES (3195, '2015-10-19 00:57:07', '2015-10-19 00:57:07', 0, 6, '新疆维吾尔自治区伊犁哈萨克自治州巩留县', 2, '巩留县', ',3106,3189,', 3189); INSERT INTO `area` VALUES (3196, '2015-10-19 00:57:08', '2015-10-19 00:57:08', 0, 7, '新疆维吾尔自治区伊犁哈萨克自治州新源县', 2, '新源县', ',3106,3189,', 3189); INSERT INTO `area` VALUES (3197, '2015-10-19 00:57:09', '2015-10-19 00:57:09', 0, 8, '新疆维吾尔自治区伊犁哈萨克自治州昭苏县', 2, '昭苏县', ',3106,3189,', 3189); INSERT INTO `area` VALUES (3198, '2015-10-19 00:57:10', '2015-10-19 00:57:10', 0, 9, '新疆维吾尔自治区伊犁哈萨克自治州特克斯县', 2, '特克斯县', ',3106,3189,', 3189); INSERT INTO `area` VALUES (3199, '2015-10-19 00:57:11', '2015-10-19 00:57:11', 0, 10, '新疆维吾尔自治区伊犁哈萨克自治州尼勒克县', 2, '尼勒克县', ',3106,3189,', 3189); INSERT INTO `area` VALUES (3200, '2015-10-19 00:57:12', '2015-10-19 00:57:12', 0, 13, '新疆维吾尔自治区塔城地区', 1, '塔城地区', ',3106,', 3106); INSERT INTO `area` VALUES (3201, '2015-10-19 00:57:13', '2015-10-19 00:57:13', 0, 1, '新疆维吾尔自治区塔城地区塔城市', 2, '塔城市', ',3106,3200,', 3200); INSERT INTO `area` VALUES (3202, '2015-10-19 00:57:14', '2015-10-19 00:57:14', 0, 2, '新疆维吾尔自治区塔城地区乌苏市', 2, '乌苏市', ',3106,3200,', 3200); INSERT INTO `area` VALUES (3203, '2015-10-19 00:57:15', '2015-10-19 00:57:15', 0, 3, '新疆维吾尔自治区塔城地区额敏县', 2, '额敏县', ',3106,3200,', 3200); INSERT INTO `area` VALUES (3204, '2015-10-19 00:57:16', '2015-10-19 00:57:16', 0, 4, '新疆维吾尔自治区塔城地区沙湾县', 2, '沙湾县', ',3106,3200,', 3200); INSERT INTO `area` VALUES (3205, '2015-10-19 00:57:17', '2015-10-19 00:57:17', 0, 5, '新疆维吾尔自治区塔城地区托里县', 2, '托里县', ',3106,3200,', 3200); INSERT INTO `area` VALUES (3206, '2015-10-19 00:57:18', '2015-10-19 00:57:18', 0, 6, '新疆维吾尔自治区塔城地区裕民县', 2, '裕民县', ',3106,3200,', 3200); INSERT INTO `area` VALUES (3207, '2015-10-19 00:57:19', '2015-10-19 00:57:19', 0, 7, '新疆维吾尔自治区塔城地区和布克赛尔蒙古自治县', 2, '和布克赛尔蒙古自治县', ',3106,3200,', 3200); INSERT INTO `area` VALUES (3208, '2015-10-19 00:57:20', '2015-10-19 00:57:20', 0, 14, '新疆维吾尔自治区阿勒泰地区', 1, '阿勒泰地区', ',3106,', 3106); INSERT INTO `area` VALUES (3209, '2015-10-19 00:57:21', '2015-10-19 00:57:21', 0, 1, '新疆维吾尔自治区阿勒泰地区阿勒泰市', 2, '阿勒泰市', ',3106,3208,', 3208); INSERT INTO `area` VALUES (3210, '2015-10-19 00:57:22', '2015-10-19 00:57:22', 0, 2, '新疆维吾尔自治区阿勒泰地区布尔津县', 2, '布尔津县', ',3106,3208,', 3208); INSERT INTO `area` VALUES (3211, '2015-10-19 00:57:23', '2015-10-19 00:57:23', 0, 3, '新疆维吾尔自治区阿勒泰地区富蕴县', 2, '富蕴县', ',3106,3208,', 3208); INSERT INTO `area` VALUES (3212, '2015-10-19 00:57:24', '2015-10-19 00:57:24', 0, 4, '新疆维吾尔自治区阿勒泰地区福海县', 2, '福海县', ',3106,3208,', 3208); INSERT INTO `area` VALUES (3213, '2015-10-19 00:57:25', '2015-10-19 00:57:25', 0, 5, '新疆维吾尔自治区阿勒泰地区哈巴河县', 2, '哈巴河县', ',3106,3208,', 3208); INSERT INTO `area` VALUES (3214, '2015-10-19 00:57:26', '2015-10-19 00:57:26', 0, 6, '新疆维吾尔自治区阿勒泰地区青河县', 2, '青河县', ',3106,3208,', 3208); INSERT INTO `area` VALUES (3215, '2015-10-19 00:57:27', '2015-10-19 00:57:27', 0, 7, '新疆维吾尔自治区阿勒泰地区吉木乃县', 2, '吉木乃县', ',3106,3208,', 3208); INSERT INTO `area` VALUES (3216, '2015-10-19 00:57:28', '2015-10-19 00:57:28', 0, 15, '新疆维吾尔自治区石河子市', 1, '石河子市', ',3106,', 3106); INSERT INTO `area` VALUES (3217, '2015-10-19 00:57:29', '2015-10-19 00:57:29', 0, 16, '新疆维吾尔自治区阿拉尔市', 1, '阿拉尔市', ',3106,', 3106); INSERT INTO `area` VALUES (3218, '2015-10-19 00:57:30', '2015-10-19 00:57:30', 0, 17, '新疆维吾尔自治区图木舒克市', 1, '图木舒克市', ',3106,', 3106); INSERT INTO `area` VALUES (3219, '2015-10-19 00:57:31', '2015-10-19 00:57:31', 0, 18, '新疆维吾尔自治区五家渠市', 1, '五家渠市', ',3106,', 3106); INSERT INTO `area` VALUES (3220, '2015-10-19 00:57:32', '2015-10-19 00:57:32', 0, 32, '台湾省', 0, '台湾省', ',', NULL); INSERT INTO `area` VALUES (3221, '2015-10-19 00:57:33', '2015-10-19 00:57:33', 0, 33, '香港特别行政区', 0, '香港特别行政区', ',', NULL); INSERT INTO `area` VALUES (3222, '2015-10-19 00:57:34', '2015-10-19 00:57:34', 0, 34, '澳门特别行政区', 0, '澳门特别行政区', ',', NULL); COMMIT; -- ---------------------------- -- Table structure for campaign -- ---------------------------- DROP TABLE IF EXISTS `campaign`; CREATE TABLE `campaign` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `type` smallint(2) DEFAULT NULL COMMENT '类型 1-主页banner', `param_name1` varchar(255) DEFAULT NULL, `param_value1` varchar(255) DEFAULT NULL, `param_name2` varchar(255) DEFAULT NULL, `param_value2` varchar(255) DEFAULT NULL, `param_name3` varchar(255) DEFAULT NULL, `param_value3` varchar(255) DEFAULT NULL, `start_time` datetime DEFAULT NULL, `end_time` datetime DEFAULT NULL, `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Table structure for cart -- ---------------------------- DROP TABLE IF EXISTS `cart`; CREATE TABLE `cart` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` varchar(50) NOT NULL, `product_id` varchar(50) NOT NULL COMMENT '商品id', `quantity` int(11) NOT NULL COMMENT '数量', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `user_id_index` (`user_id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=161 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of cart -- ---------------------------- BEGIN; INSERT INTO `cart` VALUES (157, '20180720510302', '20180715210707', 1, '2018-07-22 14:39:21', '2018-07-22 14:39:21'); INSERT INTO `cart` VALUES (158, '20180720510302', '20180723210908', 1, '2018-07-23 17:33:51', '2018-07-23 17:33:51'); INSERT INTO `cart` VALUES (159, '20181106510403', '20181106211112', 1, '2018-11-06 18:07:03', '2018-11-06 18:07:03'); INSERT INTO `cart` VALUES (160, '20181106510403', '20181110211414', 1, '2018-11-11 00:48:45', '2018-11-11 00:48:45'); COMMIT; -- ---------------------------- -- Table structure for delivery_corp -- ---------------------------- DROP TABLE IF EXISTS `delivery_corp`; CREATE TABLE `delivery_corp` ( `code` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `url` varchar(255) NOT NULL, PRIMARY KEY (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of delivery_corp -- ---------------------------- BEGIN; INSERT INTO `delivery_corp` VALUES ('shentong', '申通快递', 'http://www.sto.cn'); INSERT INTO `delivery_corp` VALUES ('shunfeng', '顺丰速运', 'http://www.sf-express.com'); INSERT INTO `delivery_corp` VALUES ('yuantong', '圆通速递', 'http://www.yto.net.cn'); INSERT INTO `delivery_corp` VALUES ('yunda', '韵达快递', 'http://www.yundaex.com'); COMMIT; -- ---------------------------- -- Table structure for favorite_goods -- ---------------------------- DROP TABLE IF EXISTS `favorite_goods`; CREATE TABLE `favorite_goods` ( `favorite_user` varchar(50) NOT NULL COMMENT '[用户ID]', `favorite_goods` varchar(50) NOT NULL COMMENT '[商品ID]', PRIMARY KEY (`favorite_user`,`favorite_goods`), KEY `idx_user_favorite_goods` (`favorite_goods`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for goods -- ---------------------------- DROP TABLE IF EXISTS `goods`; CREATE TABLE `goods` ( `sn` varchar(50) NOT NULL COMMENT '编号', `name` varchar(255) NOT NULL COMMENT '名称', `model` varchar(50) DEFAULT NULL COMMENT '型号', `caption` varchar(255) NOT NULL COMMENT '副标题', `image` varchar(255) NOT NULL COMMENT '展示图片', `price` decimal(21,2) NOT NULL DEFAULT '0.00' COMMENT '销售价', `is_delivery` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否需要物流', `is_marketable` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否上架', `parameter_values` longtext NOT NULL COMMENT '参数值', `specification_items` longtext COMMENT '规格项', `introduction` longtext NOT NULL COMMENT '介绍', `product_images` longtext NOT NULL COMMENT '商品图片', `campaign` int(11) DEFAULT NULL COMMENT '活动,位运算,1-拼团', `groupon_count` int(11) DEFAULT NULL COMMENT '拼团人数', `weight` float(11,0) NOT NULL COMMENT '重量', `unit` varchar(255) NOT NULL COMMENT '单位', `product_category_id` bigint(20) NOT NULL COMMENT '货品分类', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新日期', PRIMARY KEY (`sn`), KEY `idx_name` (`name`), KEY `idx_is_marketable` (`is_marketable`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of goods -- ---------------------------- BEGIN; INSERT INTO `goods` VALUES ('20180702110605', 'aaa', NULL, 'bbb', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180702/333fdf232c084feca7c6ba2e3bea3ff2.png', 0.01, 0, 0, '[{\"entries\":[{\"name\":\"a1\",\"value\":\"a11\"},{\"name\":\"a2\",\"value\":\"a22\"}],\"name\":\"a\"}]', NULL, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180702/1da89288b5bb4d6f84f8715b51f8d8f3.png', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180702/333fdf232c084feca7c6ba2e3bea3ff2.png', NULL, NULL, 3, 'dan', 10000, '2018-07-02 13:01:24', '2018-07-02 13:01:24'); INSERT INTO `goods` VALUES ('20180715110706', 'abc', 'bac', 'ffdafa', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', 0.01, 0, 1, '[{\"entries\":[{\"name\":\"c\",\"value\":\"bb\"},{\"name\":\"b\",\"value\":\"cc\"}],\"name\":\"a\"}]', '[{\"specificationEntries\":[1001,1002],\"specificationName\":1000},{\"specificationEntries\":[3001,3002],\"specificationName\":3000}]', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/6c15e0540a9f44c886ba1d84f72e5518.png', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', NULL, NULL, 3, 'a', 10202, '2018-07-15 13:30:36', '2018-07-15 13:30:36'); INSERT INTO `goods` VALUES ('20180722110807', 'ccc', '123', 'bbb', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180722/e6d031c8512444b7a1dd34109fadf2db.png', 0.01, 0, 0, '[{\"entries\":[{\"name\":\"b\",\"value\":\"b\"}],\"name\":\"a\"}]', NULL, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180722/fe90c1ad741e4a279d5af0b7cb827718.png', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180722/e6d031c8512444b7a1dd34109fadf2db.png', NULL, NULL, 123, 'd', 10100, '2018-07-22 22:48:19', '2018-07-22 22:48:19'); INSERT INTO `goods` VALUES ('20180723110908', 'test1', '111', 'bbb', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/a7df4e9e907844e3bfa3acced140beef.png', 0.01, 0, 0, '[{\"entries\":[{\"name\":\"b\",\"value\":\"b1\"},{\"name\":\"bb\",\"value\":\"bb1\"}],\"name\":\"a\"}]', NULL, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/28415cbb9402424b9434fd1dd11110d1.png', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/a7df4e9e907844e3bfa3acced140beef.png,http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/eecdfc1408884b94b52d724367b8be85.png', NULL, NULL, 1, 'd', 20000, '2018-07-23 17:27:33', '2018-07-23 17:27:33'); INSERT INTO `goods` VALUES ('20180723110909', 'test2', 'aa', 'bbb', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/14805ee1c1654e9ca036d2dedf0508f4.png', 0.01, 0, 0, '[{\"entries\":[{\"name\":\"b\",\"value\":\"b1\"}],\"name\":\"a\"}]', NULL, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/84f2c3f4b1f64596a6d9dfd36e491453.png', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/14805ee1c1654e9ca036d2dedf0508f4.png', NULL, NULL, 3, 'da', 20000, '2018-07-23 19:56:48', '2018-07-23 19:56:48'); INSERT INTO `goods` VALUES ('20180723110910', 'test2', 'aa', 'bbb', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/14805ee1c1654e9ca036d2dedf0508f4.png', 0.01, 0, 0, '[{\"entries\":[{\"name\":\"b\",\"value\":\"b1\"}],\"name\":\"a\"}]', NULL, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/84f2c3f4b1f64596a6d9dfd36e491453.png', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/14805ee1c1654e9ca036d2dedf0508f4.png', NULL, NULL, 3, 'da', 20000, '2018-07-23 19:58:17', '2018-07-23 19:58:17'); INSERT INTO `goods` VALUES ('20180723110911', 'test2', 'aa', 'bbb', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/14805ee1c1654e9ca036d2dedf0508f4.png', 0.01, 0, 0, '[{\"entries\":[{\"name\":\"b\",\"value\":\"b1\"}],\"name\":\"a\"}]', NULL, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/84f2c3f4b1f64596a6d9dfd36e491453.png', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/14805ee1c1654e9ca036d2dedf0508f4.png', NULL, NULL, 3, 'da', 20000, '2018-07-23 19:59:10', '2018-07-23 19:59:10'); INSERT INTO `goods` VALUES ('20180723111009', 'test4', 'abc', 'bbb', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/26e3e08da3c846fd8bd94304e1ff7ce3.png', 0.01, 1, 1, '[{\"entries\":[{\"name\":\"b\",\"value\":\"b1\"}],\"name\":\"a\"}]', NULL, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/455846e60ba647679b1c828294ac3a64.png', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/26e3e08da3c846fd8bd94304e1ff7ce3.png', NULL, NULL, 3, '', 10000, '2018-07-23 21:01:51', '2018-07-23 21:01:51'); INSERT INTO `goods` VALUES ('20181106111110', 'test1', 'test1', 'aaa', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/ff3519dbee58439b990191232ddad9b3.jpg', 0.01, 1, 1, '[{\"entries\":[{\"name\":\"a1\",\"value\":\"aaa\"}],\"name\":\"test\"}]', '[{\"specificationEntries\":[5001,5002],\"specificationName\":5000},{\"specificationEntries\":[6001,6002],\"specificationName\":6000}]', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/938d5ecaddb64f3d9814dc12661944de.jpg', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/ff3519dbee58439b990191232ddad9b3.jpg', NULL, NULL, 1, 'g', 30100, '2018-11-06 11:56:20', '2018-11-06 11:56:20'); INSERT INTO `goods` VALUES ('20181106111211', '测试数据2', '测试数据2', '测试数据2测试数据2', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/86c441b3c0b14d92b6c70e5667709e6f.jpg', 1.00, 1, 1, '[{\"entries\":[{\"name\":\"型号\",\"value\":\"I5\"},{\"name\":\"型号\",\"value\":\"I6\"}],\"name\":\"CPU\"},{\"entries\":[{\"name\":\"4G\",\"value\":\"4G\"},{\"name\":\"8G\",\"value\":\"8G\"}],\"name\":\"内存\"}]', '[{\"specificationEntries\":[5001,5002],\"specificationName\":5000},{\"specificationEntries\":[6001,6002],\"specificationName\":6000}]', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/30b78a66048f4d3d9424fe93c314d17c.jpg', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/86c441b3c0b14d92b6c70e5667709e6f.jpg', NULL, NULL, 1, 'g', 30100, '2018-11-06 23:47:44', '2018-11-06 23:47:44'); INSERT INTO `goods` VALUES ('20181110111312', 'test111', 'test111', 'test111', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/1b33ee88ab1e4ca2b03b3d13bc8e18d2.jpg', 1.00, 1, 1, '[{\"entries\":[{\"name\":\"a1\",\"value\":\"a11\"}],\"name\":\"a\"}]', '[{\"specificationEntries\":[1001,1002],\"specificationName\":1000}]', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/6e6d0b3e3b1a49599dfdcf77db948ce5.jpg', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/1b33ee88ab1e4ca2b03b3d13bc8e18d2.jpg', 1, NULL, 1, 'g', 30100, '2018-11-10 17:45:34', '2018-11-10 17:45:34'); INSERT INTO `goods` VALUES ('20181110111413', '拼团测试1', '拼团测试1', '拼团测试1', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', 1.00, 1, 1, '[{\"entries\":[{\"name\":\"a\",\"value\":\"2\"}],\"name\":\"a\"}]', '[{\"specificationEntries\":[5001,5002],\"specificationName\":5000}]', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/4721027eea524385ae6c5905d616e740.jpg', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', 1, 2, 1, 'g', 30200, '2018-11-10 22:03:39', '2018-11-10 22:03:39'); INSERT INTO `goods` VALUES ('20181116111514', 'test', 'test', '', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181116/f59644753ad549bfaf1a07339d17156b.jpg', 1.00, 1, 1, '[{\"entries\":[{\"name\":\"a\",\"value\":\"a\"}],\"name\":\"a\"}]', '', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181116/bfa71726e2274fa4b1713eff65da8aa3.jpg', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181116/f59644753ad549bfaf1a07339d17156b.jpg', NULL, NULL, 1, 'g', 40001, '2018-11-16 11:24:57', '2018-11-16 11:24:57'); INSERT INTO `goods` VALUES ('20181117111615', 'tests', 'tests', 'tests', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181117/d95067c299aa4dd6b984f28bc440719e.jpg', 1.00, 1, 1, '[{\"entries\":[{\"name\":\"a\",\"value\":\"a\"}],\"name\":\"a\"}]', '[{\"specificationEntries\":[5001,5002],\"specificationName\":5000},{\"specificationEntries\":[6002,60001],\"specificationName\":6000}]', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181117/d3e7037d76024e6e93dec1e8610a902f.jpg', 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181117/d95067c299aa4dd6b984f28bc440719e.jpg', 1, 2, 1, 'g', 30200, '2018-11-17 11:28:14', '2018-11-17 11:28:14'); COMMIT; -- ---------------------------- -- Table structure for groupon -- ---------------------------- DROP TABLE IF EXISTS `groupon`; CREATE TABLE `groupon` ( `id` varchar(50) NOT NULL, `goods_id` varchar(50) NOT NULL, `count` int(11) NOT NULL, `status` smallint(1) NOT NULL DEFAULT '0' COMMENT '0-等待开团 1-已开团 2-取消', `expire_date` datetime NOT NULL, `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Records of groupon -- ---------------------------- BEGIN; INSERT INTO `groupon` VALUES ('20181111610605', '20181110111413', 2, 1, '2018-11-15 00:32:39', '2018-11-11 00:32:39', '2018-11-14 23:17:22'); INSERT INTO `groupon` VALUES ('20181111610606', '20181110111413', 2, 1, '2018-11-15 00:34:48', '2018-11-11 00:34:48', '2018-11-14 22:51:02'); INSERT INTO `groupon` VALUES ('20181111610607', '20181110111413', 2, 1, '2018-11-15 00:37:07', '2018-11-11 00:37:07', '2018-11-14 22:30:59'); INSERT INTO `groupon` VALUES ('20181111610608', '20181110111413', 2, 1, '2018-11-15 00:40:54', '2018-11-11 00:40:54', '2018-11-14 22:24:28'); INSERT INTO `groupon` VALUES ('20181111610609', '20181110111413', 2, 1, '2018-11-15 00:43:45', '2018-11-11 00:43:45', '2018-11-14 22:56:45'); COMMIT; -- ---------------------------- -- Table structure for groupon_team -- ---------------------------- DROP TABLE IF EXISTS `groupon_team`; CREATE TABLE `groupon_team` ( `groupon_id` varchar(50) NOT NULL, `user_id` varchar(50) NOT NULL, `captain` smallint(1) NOT NULL DEFAULT '0', `create_date` datetime DEFAULT CURRENT_TIMESTAMP, `update_date` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`groupon_id`,`user_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Records of groupon_team -- ---------------------------- BEGIN; INSERT INTO `groupon_team` VALUES ('20181111610605', '20181106510403', 1, '2018-11-11 00:32:39', '2018-11-11 00:32:39'); INSERT INTO `groupon_team` VALUES ('20181111610605', '20181114510605', 0, '2018-11-14 23:17:22', '2018-11-14 23:17:22'); INSERT INTO `groupon_team` VALUES ('20181111610606', '20181106510403', 1, '2018-11-11 00:34:48', '2018-11-11 00:34:48'); INSERT INTO `groupon_team` VALUES ('20181111610607', '20181106510403', 1, '2018-11-11 00:37:07', '2018-11-11 00:37:07'); INSERT INTO `groupon_team` VALUES ('20181111610608', '20181106510403', 1, '2018-11-11 00:40:54', '2018-11-11 00:40:54'); INSERT INTO `groupon_team` VALUES ('20181111610609', '20181106510403', 1, '2018-11-11 00:43:45', '2018-11-11 00:43:45'); COMMIT; -- ---------------------------- -- Table structure for logistics -- ---------------------------- DROP TABLE IF EXISTS `logistics`; CREATE TABLE `logistics` ( `tracking_no` varchar(255) NOT NULL, `check_state` smallint(4) NOT NULL DEFAULT '0' COMMENT '订阅状态-0未订阅 1已订阅 2订阅失败', `order_state` smallint(4) DEFAULT NULL COMMENT '物流状态包括0在途中、1已揽收、2疑难、3已签收、4退签、5同城派送中、6退回、7转单等7个状态', `data` longtext COMMENT '物流跟踪数据', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`tracking_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of logistics -- ---------------------------- BEGIN; INSERT INTO `logistics` VALUES ('123', 2, NULL, NULL, '2018-11-06 23:42:10', '2018-11-06 23:42:10'); INSERT INTO `logistics` VALUES ('800325920738721358', 1, 3, '[{\"context\":\"快件已签收 签收人: 快递柜 感谢使用圆通速递,期待再次为您服务\",\"ftime\":\"2018-06-26 12:31:19\",\"time\":\"2018-06-26 12:31:19\"},{\"context\":\"上海市嘉定区外岗公司李**(17740833420) 正在派件&nbsp\",\"ftime\":\"2018-06-26 08:50:04\",\"time\":\"2018-06-26 08:50:04\"},{\"context\":\"快件已到达 上海市嘉定区外岗公司\",\"ftime\":\"2018-06-26 07:10:24\",\"time\":\"2018-06-26 07:10:24\"},{\"context\":\"快件已发往 上海市嘉定区外岗公司\",\"ftime\":\"2018-06-26 01:49:40\",\"time\":\"2018-06-26 01:49:40\"},{\"context\":\"快件已到达 上海转运中心\",\"ftime\":\"2018-06-26 01:30:04\",\"time\":\"2018-06-26 01:30:04\"},{\"context\":\"快件已发往 上海转运中心\",\"ftime\":\"2018-06-25 21:28:32\",\"time\":\"2018-06-25 21:28:32\"},{\"context\":\"江苏省常州市公司取件人: 武进(13861054741)已收件\",\"ftime\":\"2018-06-25 21:18:35\",\"time\":\"2018-06-25 21:18:35\"}]', '2018-07-28 09:55:57', '2018-07-28 13:51:00'); COMMIT; -- ---------------------------- -- Table structure for order_detail -- ---------------------------- DROP TABLE IF EXISTS `order_detail`; CREATE TABLE `order_detail` ( `detail_id` varchar(32) NOT NULL, `order_id` varchar(32) NOT NULL, `product_id` varchar(32) NOT NULL, `product_name` varchar(64) NOT NULL COMMENT '商品名称', `product_model` varchar(50) DEFAULT NULL COMMENT '型号', `product_spec` varchar(50) DEFAULT NULL COMMENT '规格', `group_price` decimal(21,2) DEFAULT NULL COMMENT '团购价', `product_price` decimal(21,2) NOT NULL COMMENT '当前价格,单位分', `product_quantity` int(11) NOT NULL COMMENT '数量', `product_icon` varchar(512) DEFAULT NULL COMMENT '小图', `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`detail_id`), KEY `idx_order_id` (`order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Records of order_detail -- ---------------------------- BEGIN; INSERT INTO `order_detail` VALUES ('20180720411716', '20180720312122', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-20 23:09:10', '2018-07-20 23:09:10'); INSERT INTO `order_detail` VALUES ('20180720411717', '20180720312122', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-20 23:09:10', '2018-07-20 23:09:10'); INSERT INTO `order_detail` VALUES ('20180721411817', '20180721312223', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 12:49:47', '2018-07-21 12:49:47'); INSERT INTO `order_detail` VALUES ('20180721411818', '20180721312223', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 12:49:47', '2018-07-21 12:49:47'); INSERT INTO `order_detail` VALUES ('20180721411819', '20180721312226', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 12:54:10', '2018-07-21 12:54:10'); INSERT INTO `order_detail` VALUES ('20180721411820', '20180721312226', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 12:54:10', '2018-07-21 12:54:10'); INSERT INTO `order_detail` VALUES ('20180721411821', '20180721312229', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:11:46', '2018-07-21 13:11:46'); INSERT INTO `order_detail` VALUES ('20180721411822', '20180721312229', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:11:46', '2018-07-21 13:11:46'); INSERT INTO `order_detail` VALUES ('20180721411823', '20180721312232', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:14:11', '2018-07-21 13:14:11'); INSERT INTO `order_detail` VALUES ('20180721411824', '20180721312232', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:14:11', '2018-07-21 13:14:11'); INSERT INTO `order_detail` VALUES ('20180721411825', '20180721312235', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:14:46', '2018-07-21 13:14:46'); INSERT INTO `order_detail` VALUES ('20180721411826', '20180721312235', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:14:46', '2018-07-21 13:14:46'); INSERT INTO `order_detail` VALUES ('20180721411827', '20180721312238', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:17:29', '2018-07-21 13:17:29'); INSERT INTO `order_detail` VALUES ('20180721411828', '20180721312238', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:17:29', '2018-07-21 13:17:29'); INSERT INTO `order_detail` VALUES ('20180721411829', '20180721312241', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:18:17', '2018-07-21 13:18:17'); INSERT INTO `order_detail` VALUES ('20180721411830', '20180721312241', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:18:17', '2018-07-21 13:18:17'); INSERT INTO `order_detail` VALUES ('20180721411831', '20180721312244', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:29:22', '2018-07-21 13:29:22'); INSERT INTO `order_detail` VALUES ('20180721411832', '20180721312244', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:29:22', '2018-07-21 13:29:22'); INSERT INTO `order_detail` VALUES ('20180721411833', '20180721312247', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:31:52', '2018-07-21 13:31:52'); INSERT INTO `order_detail` VALUES ('20180721411834', '20180721312247', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:31:52', '2018-07-21 13:31:52'); INSERT INTO `order_detail` VALUES ('20180721411835', '20180721312250', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:32:25', '2018-07-21 13:32:25'); INSERT INTO `order_detail` VALUES ('20180721411836', '20180721312250', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:32:25', '2018-07-21 13:32:25'); INSERT INTO `order_detail` VALUES ('20180721411837', '20180721312253', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:32:54', '2018-07-21 13:32:54'); INSERT INTO `order_detail` VALUES ('20180721411838', '20180721312253', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:32:54', '2018-07-21 13:32:54'); INSERT INTO `order_detail` VALUES ('20180721411839', '20180721312256', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:37:01', '2018-07-21 13:37:01'); INSERT INTO `order_detail` VALUES ('20180721411840', '20180721312256', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:37:01', '2018-07-21 13:37:01'); INSERT INTO `order_detail` VALUES ('20180721411841', '20180721312259', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:37:38', '2018-07-21 13:37:38'); INSERT INTO `order_detail` VALUES ('20180721411842', '20180721312259', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:37:38', '2018-07-21 13:37:38'); INSERT INTO `order_detail` VALUES ('20180721411843', '20180721312262', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:38:15', '2018-07-21 13:38:15'); INSERT INTO `order_detail` VALUES ('20180721411844', '20180721312262', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:38:15', '2018-07-21 13:38:15'); INSERT INTO `order_detail` VALUES ('20180721411845', '20180721312265', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:40:05', '2018-07-21 13:40:05'); INSERT INTO `order_detail` VALUES ('20180721411846', '20180721312265', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:40:05', '2018-07-21 13:40:05'); INSERT INTO `order_detail` VALUES ('20180721411847', '20180721312268', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:40:49', '2018-07-21 13:40:49'); INSERT INTO `order_detail` VALUES ('20180721411848', '20180721312268', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:40:49', '2018-07-21 13:40:49'); INSERT INTO `order_detail` VALUES ('20180721411849', '20180721312271', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:41:25', '2018-07-21 13:41:25'); INSERT INTO `order_detail` VALUES ('20180721411850', '20180721312271', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:41:25', '2018-07-21 13:41:25'); INSERT INTO `order_detail` VALUES ('20180721411851', '20180721312274', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:43:34', '2018-07-21 13:43:34'); INSERT INTO `order_detail` VALUES ('20180721411852', '20180721312274', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:43:34', '2018-07-21 13:43:34'); INSERT INTO `order_detail` VALUES ('20180721411853', '20180721312277', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:44:59', '2018-07-21 13:44:59'); INSERT INTO `order_detail` VALUES ('20180721411854', '20180721312277', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:44:59', '2018-07-21 13:44:59'); INSERT INTO `order_detail` VALUES ('20180721411855', '20180721312280', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:45:59', '2018-07-21 13:45:59'); INSERT INTO `order_detail` VALUES ('20180721411856', '20180721312280', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:45:59', '2018-07-21 13:45:59'); INSERT INTO `order_detail` VALUES ('20180721411857', '20180721312283', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:46:32', '2018-07-21 13:46:32'); INSERT INTO `order_detail` VALUES ('20180721411858', '20180721312283', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:46:32', '2018-07-21 13:46:32'); INSERT INTO `order_detail` VALUES ('20180721411859', '20180721312286', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:48:07', '2018-07-21 13:48:07'); INSERT INTO `order_detail` VALUES ('20180721411860', '20180721312286', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:48:07', '2018-07-21 13:48:07'); INSERT INTO `order_detail` VALUES ('20180721411861', '20180721312289', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:50:59', '2018-07-21 13:50:59'); INSERT INTO `order_detail` VALUES ('20180721411862', '20180721312289', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:50:59', '2018-07-21 13:50:59'); INSERT INTO `order_detail` VALUES ('20180721411863', '20180721312292', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:51:32', '2018-07-21 13:51:32'); INSERT INTO `order_detail` VALUES ('20180721411864', '20180721312292', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:51:32', '2018-07-21 13:51:32'); INSERT INTO `order_detail` VALUES ('20180721411865', '20180721312295', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:51:48', '2018-07-21 13:51:48'); INSERT INTO `order_detail` VALUES ('20180721411866', '20180721312295', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:51:48', '2018-07-21 13:51:48'); INSERT INTO `order_detail` VALUES ('20180721411867', '20180721312298', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:52:49', '2018-07-21 13:52:49'); INSERT INTO `order_detail` VALUES ('20180721411868', '20180721312298', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:52:49', '2018-07-21 13:52:49'); INSERT INTO `order_detail` VALUES ('20180721411869', '20180721312301', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:53:42', '2018-07-21 13:53:42'); INSERT INTO `order_detail` VALUES ('20180721411870', '20180721312301', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 13:53:42', '2018-07-21 13:53:42'); INSERT INTO `order_detail` VALUES ('20180721411918', '20180721312323', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 16:57:15', '2018-07-21 16:57:15'); INSERT INTO `order_detail` VALUES ('20180721411919', '20180721312325', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 17:00:26', '2018-07-21 17:00:26'); INSERT INTO `order_detail` VALUES ('20180721411920', '20180721312327', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 17:02:02', '2018-07-21 17:02:02'); INSERT INTO `order_detail` VALUES ('20180721411921', '20180721312329', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 17:03:09', '2018-07-21 17:03:09'); INSERT INTO `order_detail` VALUES ('20180721411922', '20180721312331', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-21 17:05:06', '2018-07-21 17:05:06'); INSERT INTO `order_detail` VALUES ('20180722412019', '20180722312425', '20180715210707', 'abc', 'bac', ',1001,3002,', NULL, 0.01, 3, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-22 11:35:27', '2018-07-22 11:35:27'); INSERT INTO `order_detail` VALUES ('20180722412020', '20180722312425', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 3, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-22 11:35:27', '2018-07-22 11:35:27'); INSERT INTO `order_detail` VALUES ('20180722412021', '20180722312427', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-22 11:40:02', '2018-07-22 11:40:02'); INSERT INTO `order_detail` VALUES ('20180722412022', '20180722312429', '20180715210708', 'abc', 'bac', ',1002,3001,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-22 14:08:06', '2018-07-22 14:08:06'); INSERT INTO `order_detail` VALUES ('20180722412120', '20180722312525', '20180722210807', 'ccc', '123', NULL, NULL, 123.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180722/e6d031c8512444b7a1dd34109fadf2db.png', '2018-07-22 22:53:14', '2018-07-22 22:53:14'); INSERT INTO `order_detail` VALUES ('20181106412322', '20181106312727', '20180723211009', 'test4', 'abc', NULL, NULL, 0.02, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/26e3e08da3c846fd8bd94304e1ff7ce3.png', '2018-11-06 11:15:10', '2018-11-06 11:15:10'); INSERT INTO `order_detail` VALUES ('20181106412423', '20181106312828', '20180723211009', 'test4', 'abc', NULL, NULL, 0.02, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/26e3e08da3c846fd8bd94304e1ff7ce3.png', '2018-11-06 11:19:05', '2018-11-06 11:19:05'); INSERT INTO `order_detail` VALUES ('20181106412524', '20181106312929', '20181106211112', 'test1', 'test1', ',5002,6001,', NULL, 0.03, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/ff3519dbee58439b990191232ddad9b3.jpg', '2018-11-06 11:56:59', '2018-11-06 11:56:59'); INSERT INTO `order_detail` VALUES ('20181106412625', '20181106313030', '20181106211112', 'test1', 'test1', ',5002,6001,', NULL, 0.03, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/ff3519dbee58439b990191232ddad9b3.jpg', '2018-11-06 18:08:49', '2018-11-06 18:08:49'); INSERT INTO `order_detail` VALUES ('20181106412726', '20181106313131', '20181106211111', 'test1', 'test1', ',5001,6002,', NULL, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/ff3519dbee58439b990191232ddad9b3.jpg', '2018-11-06 23:21:28', '2018-11-06 23:21:28'); INSERT INTO `order_detail` VALUES ('20181106412727', '20181106313133', '20181106211112', 'test1', 'test1', ',5002,6001,', NULL, 0.03, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/ff3519dbee58439b990191232ddad9b3.jpg', '2018-11-06 23:30:23', '2018-11-06 23:30:23'); INSERT INTO `order_detail` VALUES ('20181110412827', '20181110313333', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-10 22:46:01', '2018-11-10 22:46:01'); INSERT INTO `order_detail` VALUES ('20181110412828', '20181110313335', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-10 22:48:46', '2018-11-10 22:48:46'); INSERT INTO `order_detail` VALUES ('20181110412928', '20181110313434', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-10 23:18:25', '2018-11-10 23:18:25'); INSERT INTO `order_detail` VALUES ('20181110413029', '20181110313535', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-10 23:26:32', '2018-11-10 23:26:32'); INSERT INTO `order_detail` VALUES ('20181110413130', '20181110313636', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-10 23:32:32', '2018-11-10 23:32:32'); INSERT INTO `order_detail` VALUES ('20181110413231', '20181110313737', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-10 23:49:22', '2018-11-10 23:49:22'); INSERT INTO `order_detail` VALUES ('20181110413232', '20181110313739', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-10 23:51:46', '2018-11-10 23:51:46'); INSERT INTO `order_detail` VALUES ('20181110413233', '20181110313741', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-10 23:57:09', '2018-11-10 23:57:09'); INSERT INTO `order_detail` VALUES ('20181111413234', '20181111313743', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:00:35', '2018-11-11 00:00:35'); INSERT INTO `order_detail` VALUES ('20181111413235', '20181111313745', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:04:28', '2018-11-11 00:04:28'); INSERT INTO `order_detail` VALUES ('20181111413236', '20181111313747', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:05:57', '2018-11-11 00:05:57'); INSERT INTO `order_detail` VALUES ('20181111413332', '20181111313838', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:07:32', '2018-11-11 00:07:32'); INSERT INTO `order_detail` VALUES ('20181111413433', '20181111313939', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:14:28', '2018-11-11 00:14:28'); INSERT INTO `order_detail` VALUES ('20181111413434', '20181111313941', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:16:03', '2018-11-11 00:16:03'); INSERT INTO `order_detail` VALUES ('20181111413435', '20181111313943', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:17:26', '2018-11-11 00:17:26'); INSERT INTO `order_detail` VALUES ('20181111413534', '20181111314040', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:32:33', '2018-11-11 00:32:33'); INSERT INTO `order_detail` VALUES ('20181111413535', '20181111314042', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:34:42', '2018-11-11 00:34:42'); INSERT INTO `order_detail` VALUES ('20181111413536', '20181111314044', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:37:01', '2018-11-11 00:37:01'); INSERT INTO `order_detail` VALUES ('20181111413537', '20181111314046', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:40:49', '2018-11-11 00:40:49'); INSERT INTO `order_detail` VALUES ('20181111413538', '20181111314048', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:42:38', '2018-11-11 00:42:38'); INSERT INTO `order_detail` VALUES ('20181111413539', '20181111314050', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-11 00:43:39', '2018-11-11 00:43:39'); INSERT INTO `order_detail` VALUES ('20181111413540', '20181111314052', '20180715210707', 'abc', 'bac', ',1001,3002,', 0.00, 0.01, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-11-11 00:51:56', '2018-11-11 00:51:56'); INSERT INTO `order_detail` VALUES ('20181114413635', '20181114314141', '20181110211413', '拼团测试1', '拼团测试1', ',5001,', 0.01, 2.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 20:57:24', '2018-11-14 20:57:24'); INSERT INTO `order_detail` VALUES ('20181114413636', '20181114314143', '20181110211413', '拼团测试1', '拼团测试1', ',5001,', 0.01, 2.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 20:58:41', '2018-11-14 20:58:41'); INSERT INTO `order_detail` VALUES ('20181114413736', '20181114314242', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 21:22:28', '2018-11-14 21:22:28'); INSERT INTO `order_detail` VALUES ('20181114413837', '20181114314343', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 22:15:19', '2018-11-14 22:15:19'); INSERT INTO `order_detail` VALUES ('20181114413838', '20181114314345', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 22:16:26', '2018-11-14 22:16:26'); INSERT INTO `order_detail` VALUES ('20181114413938', '20181114314444', '20181110211413', '拼团测试1', '拼团测试1', ',5001,', 0.01, 2.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 22:24:22', '2018-11-14 22:24:22'); INSERT INTO `order_detail` VALUES ('20181114413939', '20181114314446', '20181110211413', '拼团测试1', '拼团测试1', ',5001,', 0.01, 2.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 22:30:54', '2018-11-14 22:30:54'); INSERT INTO `order_detail` VALUES ('20181114413940', '20181114314448', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 22:36:39', '2018-11-14 22:36:39'); INSERT INTO `order_detail` VALUES ('20181114413941', '20181114314450', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 22:43:23', '2018-11-14 22:43:23'); INSERT INTO `order_detail` VALUES ('20181114413942', '20181114314452', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 22:48:51', '2018-11-14 22:48:51'); INSERT INTO `order_detail` VALUES ('20181114413943', '20181114314454', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 22:50:50', '2018-11-14 22:50:50'); INSERT INTO `order_detail` VALUES ('20181114413944', '20181114314456', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 22:54:00', '2018-11-14 22:54:00'); INSERT INTO `order_detail` VALUES ('20181114414039', '20181114314545', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 22:58:26', '2018-11-14 22:58:26'); INSERT INTO `order_detail` VALUES ('20181114414140', '20181114314646', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 23:12:14', '2018-11-14 23:12:14'); INSERT INTO `order_detail` VALUES ('20181114414241', '20181114314747', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 23:14:39', '2018-11-14 23:14:39'); INSERT INTO `order_detail` VALUES ('20181114414342', '20181114314848', '20181110211414', '拼团测试1', '拼团测试1', ',5002,', 0.02, 3.00, 1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-14 23:17:17', '2018-11-14 23:17:17'); COMMIT; -- ---------------------------- -- Table structure for order_master -- ---------------------------- DROP TABLE IF EXISTS `order_master`; CREATE TABLE `order_master` ( `order_id` varchar(32) NOT NULL, `buyer_name` varchar(32) NOT NULL COMMENT '买家名字', `buyer_phone` varchar(32) NOT NULL COMMENT '买家电话', `buyer_address` varchar(128) NOT NULL COMMENT '买家地址', `buyer_id` varchar(64) NOT NULL COMMENT '买家id', `need_invoice` smallint(1) DEFAULT NULL COMMENT '是否需要开票 0-不需要 1-需要', `invoice_type` smallint(1) DEFAULT NULL COMMENT '发票类型 0-单位 1-个人', `groupon` smallint(1) DEFAULT NULL COMMENT '拼团', `groupon_id` varchar(50) DEFAULT NULL COMMENT '拼团id', `groupon_count` int(11) DEFAULT NULL COMMENT '拼团人数', `title` varchar(255) DEFAULT NULL COMMENT '发票抬头', `tax_number` varchar(255) DEFAULT NULL COMMENT '抬头税号', `company_address` varchar(255) DEFAULT NULL COMMENT '单位地址', `telephone` varchar(255) DEFAULT NULL COMMENT '开票手机号码', `bank_name` varchar(255) DEFAULT NULL COMMENT '银行名称', `bank_account` varchar(255) DEFAULT NULL COMMENT '银行账号', `order_amount` decimal(21,2) NOT NULL COMMENT '订单总金额', `order_status` tinyint(3) NOT NULL DEFAULT '0' COMMENT '订单状态, 默认为新下单', `tracking_number` varchar(255) DEFAULT NULL COMMENT '快递单号', `delivery_code` varchar(255) DEFAULT NULL COMMENT '快递公司代码', `refund_trade_no` varchar(255) DEFAULT NULL COMMENT '退款交易流水号', `pay_trade_no` varchar(255) DEFAULT NULL COMMENT '支付交易流水号', `pay_status` tinyint(3) NOT NULL DEFAULT '0' COMMENT '支付状态, 默认未支付', `remark` varchar(255) DEFAULT NULL COMMENT ' 买家备注', `contract` varchar(255) DEFAULT NULL COMMENT '合同', `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`order_id`), KEY `idx_buyer_id` (`buyer_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Records of order_master -- ---------------------------- BEGIN; INSERT INTO `order_master` VALUES ('20180720312122', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000121201807209208490953', 1, '', NULL, '2018-07-20 23:09:10', '2018-07-20 23:09:21'); INSERT INTO `order_master` VALUES ('20180721312223', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 1, 0, NULL, NULL, NULL, '广州腾讯科技有限公司', '91440101327598294H', '广州市海珠区新港中路397号自编72号(商业街F5-1)', '020-81167888', '招商银行股份有限公司广州市体育东路支行', '1209 0928 2210 301', 0.03, 0, NULL, NULL, NULL, '4200000129201807213462045407', 1, 'abc', NULL, '2018-07-21 12:49:47', '2018-07-21 12:50:03'); INSERT INTO `order_master` VALUES ('20180721312226', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000122201807218909578978', 1, '', NULL, '2018-07-21 12:54:10', '2018-07-21 12:54:25'); INSERT INTO `order_master` VALUES ('20180721312229', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000113201807216815669483', 1, '', NULL, '2018-07-21 13:11:46', '2018-07-21 13:12:01'); INSERT INTO `order_master` VALUES ('20180721312232', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000127201807219192875726', 1, '', NULL, '2018-07-21 13:14:11', '2018-07-21 13:14:25'); INSERT INTO `order_master` VALUES ('20180721312235', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000111201807216762420059', 1, '', NULL, '2018-07-21 13:14:46', '2018-07-21 13:15:01'); INSERT INTO `order_master` VALUES ('20180721312238', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000112201807218027845057', 1, '', NULL, '2018-07-21 13:17:29', '2018-07-21 13:17:37'); INSERT INTO `order_master` VALUES ('20180721312241', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000128201807210557757479', 1, '', NULL, '2018-07-21 13:18:17', '2018-07-21 13:18:25'); INSERT INTO `order_master` VALUES ('20180721312244', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 3, NULL, NULL, '50000507382018072105613222179', '4200000127201807216333285149', 1, '', NULL, '2018-07-21 13:29:22', '2018-07-21 16:20:33'); INSERT INTO `order_master` VALUES ('20180721312247', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 3, NULL, NULL, '50000507612018072105613194948', '4200000123201807212325403773', 1, '', NULL, '2018-07-21 13:31:52', '2018-07-21 16:11:24'); INSERT INTO `order_master` VALUES ('20180721312250', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, '50000207502018072105518326730', '4200000117201807212667812626', 1, '', NULL, '2018-07-21 13:32:25', '2018-07-21 16:09:24'); INSERT INTO `order_master` VALUES ('20180721312253', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, '50000007642018072105613178260', '4200000138201807216902615968', 1, '', NULL, '2018-07-21 13:32:54', '2018-07-21 16:06:11'); INSERT INTO `order_master` VALUES ('20180721312256', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, '50000407442018072105613175461', '4200000129201807213479624404', 1, '', NULL, '2018-07-21 13:37:01', '2018-07-21 16:05:13'); INSERT INTO `order_master` VALUES ('20180721312259', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, '50000407402018072105655125905', '4200000121201807212188802284', 1, '', NULL, '2018-07-21 13:37:38', '2018-07-21 16:03:12'); INSERT INTO `order_master` VALUES ('20180721312262', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, '50000007362018072105518303785', '4200000133201807218665512328', 1, '', NULL, '2018-07-21 13:38:15', '2018-07-21 16:01:14'); INSERT INTO `order_master` VALUES ('20180721312265', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-07-21 13:40:05', '2018-07-21 13:40:05'); INSERT INTO `order_master` VALUES ('20180721312268', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-07-21 13:40:49', '2018-07-21 13:40:49'); INSERT INTO `order_master` VALUES ('20180721312271', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, '50000507652018072105593186288', '4200000138201807219134009253', 1, '', NULL, '2018-07-21 13:41:25', '2018-07-21 15:40:37'); INSERT INTO `order_master` VALUES ('20180721312274', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, '50000507422018072105613126909', '4200000122201807212862845509', 1, '', NULL, '2018-07-21 13:43:34', '2018-07-21 15:47:42'); INSERT INTO `order_master` VALUES ('20180721312277', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-07-21 13:44:59', '2018-07-21 13:44:59'); INSERT INTO `order_master` VALUES ('20180721312280', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-07-21 13:45:59', '2018-07-21 13:45:59'); INSERT INTO `order_master` VALUES ('20180721312283', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000119201807218253259804', 1, '', NULL, '2018-07-21 13:46:32', '2018-07-21 13:46:40'); INSERT INTO `order_master` VALUES ('20180721312286', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000111201807210672576245', 1, '', NULL, '2018-07-21 13:48:07', '2018-07-21 13:48:14'); INSERT INTO `order_master` VALUES ('20180721312289', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-07-21 13:50:59', '2018-07-21 13:50:59'); INSERT INTO `order_master` VALUES ('20180721312292', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-07-21 13:51:32', '2018-07-21 13:51:32'); INSERT INTO `order_master` VALUES ('20180721312295', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-07-21 13:51:48', '2018-07-21 13:51:48'); INSERT INTO `order_master` VALUES ('20180721312298', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000118201807222081372427', 1, '', NULL, '2018-07-21 13:52:49', '2018-07-22 22:36:43'); INSERT INTO `order_master` VALUES ('20180721312301', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000125201807221217777988', 1, '', NULL, '2018-07-21 13:53:42', '2018-07-22 22:35:43'); INSERT INTO `order_master` VALUES ('20180721312323', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 1, 0, NULL, NULL, NULL, '广州腾讯科技有限公司', '91440101327598294H', '广州市海珠区新港中路397号自编72号(商业街F5-1)', '020-81167888', '招商银行股份有限公司广州市体育东路支行', '1209 0928 2210 301', 0.01, 3, NULL, NULL, '50000707572018072105658170524', '4200000131201807216253253655', 1, 'abc', NULL, '2018-07-21 16:57:15', '2018-07-21 16:57:39'); INSERT INTO `order_master` VALUES ('20180721312325', '姚嘉钧', '13127989632', '上海市上海市徐汇区乐山路30弄11号303', '20180720510302', 1, 1, NULL, NULL, NULL, '姚嘉钧', '', '', '', '', '', 0.02, 0, NULL, NULL, NULL, '4200000124201807215081033265', 1, 'abc', NULL, '2018-07-21 17:00:26', '2018-07-21 17:00:32'); INSERT INTO `order_master` VALUES ('20180721312327', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 1, 0, NULL, NULL, NULL, '广州腾讯科技有限公司', '91440101327598294H', '广州市海珠区新港中路397号自编72号(商业街F5-1)', '020-81167888', '招商银行股份有限公司广州市体育东路支行', '1209 0928 2210 301', 0.01, 0, NULL, NULL, NULL, '4200000115201807217457335264', 1, 'aaa', NULL, '2018-07-21 17:02:02', '2018-07-21 17:02:10'); INSERT INTO `order_master` VALUES ('20180721312329', '姚嘉钧', '13127989632', '上海市上海市徐汇区乐山路30弄11号303', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.01, 0, NULL, NULL, NULL, '4200000130201807210955187565', 1, 'abc', NULL, '2018-07-21 17:03:09', '2018-07-21 17:03:15'); INSERT INTO `order_master` VALUES ('20180721312331', '姚嘉钧', '13127989632', '上海市上海市徐汇区乐山路30弄11号303', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.01, 3, NULL, NULL, '50000007552018072105655296211', '4200000111201807217556559872', 1, 'ggg', NULL, '2018-07-21 17:05:06', '2018-07-21 17:05:24'); INSERT INTO `order_master` VALUES ('20180722312425', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.01, 1, '321', 'shunfeng', NULL, '4200000135201807224489805353', 1, '', NULL, '2018-07-22 11:35:27', '2018-07-23 22:39:36'); INSERT INTO `order_master` VALUES ('20180722312427', '姚嘉钧', '13127989632', '上海市上海市徐汇区乐山路30弄11号303', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.01, 1, '123', 'shentong', NULL, '4200000124201807229666014976', 1, '', NULL, '2018-07-22 11:40:02', '2018-07-22 22:46:28'); INSERT INTO `order_master` VALUES ('20180722312429', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.01, 3, NULL, NULL, '50000307582018072205674040596', '4200000138201807229913048227', 1, '', NULL, '2018-07-22 14:08:06', '2018-07-22 22:37:50'); INSERT INTO `order_master` VALUES ('20180722312525', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20180720510302', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 123.00, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-07-22 22:53:15', '2018-07-22 22:53:15'); INSERT INTO `order_master` VALUES ('20181106312727', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.02, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-11-06 11:15:10', '2018-11-06 11:15:10'); INSERT INTO `order_master` VALUES ('20181106312828', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.02, 1, '800325920738721358', '3', '50000708792018110606956491503', '4200000214201811064505240791', 1, '', NULL, '2018-11-06 11:19:05', '2018-11-06 18:10:06'); INSERT INTO `order_master` VALUES ('20181106312929', '张三123', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-11-06 11:56:59', '2018-11-06 16:11:33'); INSERT INTO `order_master` VALUES ('20181106313030', '姚嘉钧', '13127989632', '上海市上海市徐汇区乐山路30弄11号303', '20181106510403', 1, 1, NULL, NULL, NULL, '姚嘉钧', '', '', '', '', '', 0.03, 0, NULL, NULL, NULL, '4200000219201811067213949313', 1, '你好', NULL, '2018-11-06 18:08:49', '2018-11-06 18:09:02'); INSERT INTO `order_master` VALUES ('20181106313131', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 1, 0, NULL, NULL, NULL, '广州腾讯科技有限公司', '91440101327598294H', '广州市海珠区新港中路397号自编72号(商业街F5-1)', '020-81167888', '招商银行股份有限公司广州市体育东路支行', '1209 0928 2210 301', 0.01, 1, '123', 'shentong', NULL, '4200000215201811060708620334', 1, '', NULL, '2018-11-06 23:21:28', '2018-11-06 23:42:10'); INSERT INTO `order_master` VALUES ('20181106313133', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 1, 0, NULL, NULL, NULL, '广州腾讯科技有限公司', '91440101327598294H', '广州市海珠区新港中路397号自编72号(商业街F5-1)', '020-81167888', '招商银行股份有限公司广州市体育东路支行', '1209 0928 2210 301', 0.03, 1, '123', 'shentong', NULL, '4200000215201811060944018997', 1, '你好', NULL, '2018-11-06 23:30:23', '2018-11-06 23:51:00'); INSERT INTO `order_master` VALUES ('20181110313333', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', NULL, '', '', '', '', '', '', 0.02, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-11-10 22:46:01', '2018-11-10 22:46:01'); INSERT INTO `order_master` VALUES ('20181110313335', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', NULL, '', '', '', '', '', '', 0.02, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-11-10 22:48:46', '2018-11-10 22:48:46'); INSERT INTO `order_master` VALUES ('20181110313434', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', NULL, '', '', '', '', '', '', 0.02, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-11-10 23:18:25', '2018-11-10 23:18:25'); INSERT INTO `order_master` VALUES ('20181110313535', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000214201811103588953108', 1, '', NULL, '2018-11-10 23:26:33', '2018-11-10 23:26:43'); INSERT INTO `order_master` VALUES ('20181110313636', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', 2, '', '', '', '', '', '', 0.04, 4, NULL, NULL, NULL, '4200000231201811103522519451', 1, '', NULL, '2018-11-10 23:32:32', '2018-11-10 23:32:38'); INSERT INTO `order_master` VALUES ('20181110313737', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000227201811101079054765', 1, '', NULL, '2018-11-10 23:49:22', '2018-11-10 23:49:37'); INSERT INTO `order_master` VALUES ('20181110313739', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000229201811108530713867', 1, '', NULL, '2018-11-10 23:51:46', '2018-11-10 23:51:52'); INSERT INTO `order_master` VALUES ('20181110313741', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000226201811103403866016', 1, '', NULL, '2018-11-10 23:57:09', '2018-11-10 23:57:16'); INSERT INTO `order_master` VALUES ('20181111313743', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000236201811119472603318', 1, '', NULL, '2018-11-11 00:00:35', '2018-11-11 00:00:46'); INSERT INTO `order_master` VALUES ('20181111313745', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000216201811117179263255', 1, '', NULL, '2018-11-11 00:04:28', '2018-11-11 00:04:33'); INSERT INTO `order_master` VALUES ('20181111313747', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000216201811113023522110', 1, '', NULL, '2018-11-11 00:05:57', '2018-11-11 00:06:04'); INSERT INTO `order_master` VALUES ('20181111313838', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000218201811110156535814', 1, '', NULL, '2018-11-11 00:07:32', '2018-11-11 00:07:38'); INSERT INTO `order_master` VALUES ('20181111313939', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '20181111610504', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000224201811115429788733', 1, '', NULL, '2018-11-11 00:14:28', '2018-11-11 00:14:35'); INSERT INTO `order_master` VALUES ('20181111313941', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '20181111610505', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000210201811110070943629', 1, '', NULL, '2018-11-11 00:16:03', '2018-11-11 00:16:09'); INSERT INTO `order_master` VALUES ('20181111313943', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '20181111610506', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000231201811114237509074', 1, '', NULL, '2018-11-11 00:17:26', '2018-11-11 00:17:31'); INSERT INTO `order_master` VALUES ('20181111314040', '姚嘉钧', '13127989632', '上海市上海市徐汇区乐山路30弄11号303', '20181106510403', 0, 0, 1, '20181111610605', 2, '', '', '', '', '', '', 0.02, 5, NULL, NULL, NULL, '4200000211201811113503224550', 1, '', NULL, '2018-11-11 00:32:33', '2018-11-14 23:16:27'); INSERT INTO `order_master` VALUES ('20181111314042', '姚嘉钧', '13127989632', '上海市上海市徐汇区乐山路30弄11号303', '20181106510403', 0, 0, 1, '20181111610606', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000233201811116738637154', 1, '', NULL, '2018-11-11 00:34:42', '2018-11-11 00:34:48'); INSERT INTO `order_master` VALUES ('20181111314044', '姚嘉钧', '13127989632', '上海市上海市徐汇区乐山路30弄11号303', '20181106510403', 0, 0, 1, '20181111610607', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000213201811117515278057', 1, '', NULL, '2018-11-11 00:37:01', '2018-11-11 00:37:07'); INSERT INTO `order_master` VALUES ('20181111314046', '姚嘉钧', '13127989632', '上海市上海市徐汇区乐山路30弄11号303', '20181106510403', 0, 0, 1, '20181111610608', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000232201811111849060965', 1, '', NULL, '2018-11-11 00:40:49', '2018-11-11 00:40:54'); INSERT INTO `order_master` VALUES ('20181111314048', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 1, '', 2, '', '', '', '', '', '', 0.02, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-11-11 00:42:38', '2018-11-11 00:42:38'); INSERT INTO `order_master` VALUES ('20181111314050', '姚嘉钧', '13127989632', '上海市上海市徐汇区乐山路30弄11号303', '20181106510403', 0, 0, 1, '20181111610609', 2, '', '', '', '', '', '', 0.02, 4, NULL, NULL, NULL, '4200000216201811119173292396', 1, '', NULL, '2018-11-11 00:43:39', '2018-11-11 00:43:45'); INSERT INTO `order_master` VALUES ('20181111314052', '张三', '020-81167888', '广东省广州市海珠区新港中路397号', '20181106510403', 0, 0, 0, NULL, NULL, '', '', '', '', '', '', 0.01, 0, NULL, NULL, NULL, '4200000238201811110085951697', 1, '', NULL, '2018-11-11 00:51:56', '2018-11-11 00:52:07'); INSERT INTO `order_master` VALUES ('20181114314141', '杨先生', '18562946494', '北京市北京市门头沟区自信how', '20181114510504', 0, 0, 1, '20181111610609', 2, '', '', '', '', '', '', 0.01, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-11-14 20:57:24', '2018-11-14 20:57:24'); INSERT INTO `order_master` VALUES ('20181114314143', '杨先生', '18562946494', '北京市北京市门头沟区自信how', '20181114510504', 0, 0, 1, '20181111610609', 2, '', '', '', '', '', '', 0.01, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-11-14 20:58:41', '2018-11-14 20:58:41'); INSERT INTO `order_master` VALUES ('20181114314345', '杨先生', '18562946494', '北京市北京市门头沟区自信how', '20181114510504', 0, 0, 0, NULL, NULL, '', '', '', '', '', '', 3.00, 0, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-11-14 22:16:26', '2018-11-14 22:16:26'); INSERT INTO `order_master` VALUES ('20181114314545', '钱瑜', '18918901701', '上海市上海市黄浦区柳林路158号', '20181114510605', 0, 0, 1, '20181111610605', 2, '', '', '', '', '', '', 0.02, 5, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-11-14 22:58:26', '2018-11-14 23:16:27'); INSERT INTO `order_master` VALUES ('20181114314646', '钱瑜', '18918901701', '上海市上海市黄浦区柳林路158号', '20181114510605', 0, 0, 1, '20181111610605', 2, '', '', '', '', '', '', 0.02, 5, NULL, NULL, NULL, '4200000209201811147156498868', 1, '', NULL, '2018-11-14 23:12:14', '2018-11-14 23:16:27'); INSERT INTO `order_master` VALUES ('20181114314747', '钱瑜', '18918901701', '上海市上海市黄浦区柳林路158号', '20181114510605', 0, 0, 1, '20181111610605', 2, '', '', '', '', '', '', 0.02, 5, NULL, NULL, NULL, NULL, 0, '', NULL, '2018-11-14 23:14:39', '2018-11-14 23:16:27'); INSERT INTO `order_master` VALUES ('20181114314848', '钱瑜', '18918901701', '上海市上海市黄浦区柳林路158号', '20181114510605', 0, 0, 1, '20181111610605', 2, '', '', '', '', '', '', 0.02, 5, NULL, NULL, NULL, '4200000211201811146041093820', 1, '', NULL, '2018-11-14 23:17:17', '2018-11-14 23:17:22'); COMMIT; -- ---------------------------- -- Table structure for product -- ---------------------------- DROP TABLE IF EXISTS `product`; CREATE TABLE `product` ( `sn` varchar(255) NOT NULL COMMENT '商品编号', `price` decimal(21,2) NOT NULL DEFAULT '0.00' COMMENT '销售价', `group_price` decimal(21,2) NOT NULL DEFAULT '0.00' COMMENT '拼团价', `cost` decimal(21,2) NOT NULL DEFAULT '0.00' COMMENT '成本价', `is_default` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否默认', `specification_values` longtext COMMENT '规格值', `stock` int(11) NOT NULL DEFAULT '0' COMMENT '库存', `goods_sn` varchar(255) NOT NULL COMMENT '货品编号', `enable` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否启用', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改日期', PRIMARY KEY (`sn`), KEY `ind_product_goods` (`goods_sn`), KEY `ind_product_is_default` (`is_default`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of product -- ---------------------------- BEGIN; INSERT INTO `product` VALUES ('20180702210605', 0.01, 0.00, 1.00, 1, '1000,1002', 99, '20180702110605', 1, '2018-07-02 13:01:24', '2018-07-02 13:01:24'); INSERT INTO `product` VALUES ('20180702210606', 0.01, 0.00, 1.00, 0, '3001,4001', 99, '20180702110605', 0, '2018-07-03 12:39:23', '2018-07-03 12:39:23'); INSERT INTO `product` VALUES ('20180715210706', 0.01, 0.00, 0.00, 0, ',1001,3001,', 99, '20180715110706', 0, '2018-07-15 13:30:36', '2018-07-15 13:30:36'); INSERT INTO `product` VALUES ('20180715210707', 0.01, 0.00, 1.00, 1, ',1001,3002,', 54, '20180715110706', 1, '2018-07-15 13:30:36', '2018-07-15 13:30:36'); INSERT INTO `product` VALUES ('20180715210708', 0.01, 0.00, 6.00, 0, ',1002,3001,', 11, '20180715110706', 1, '2018-07-15 13:30:36', '2018-07-15 13:30:36'); INSERT INTO `product` VALUES ('20180715210709', 0.01, 0.00, 0.00, 0, ',1002,3002,', 99, '20180715110706', 0, '2018-07-15 13:30:36', '2018-07-15 13:30:36'); INSERT INTO `product` VALUES ('20180722210807', 0.01, 0.00, 123.00, 1, NULL, 98, '20180722110807', 1, '2018-07-22 22:48:19', '2018-07-22 22:48:19'); INSERT INTO `product` VALUES ('20180723210908', 0.01, 0.00, 1.00, 1, NULL, 99, '20180723110908', 1, '2018-07-23 17:27:33', '2018-07-23 17:27:33'); INSERT INTO `product` VALUES ('20180723210909', 0.01, 0.00, 1.00, 1, NULL, 21, '20180723110909', 1, '2018-07-23 19:56:48', '2018-07-23 19:56:48'); INSERT INTO `product` VALUES ('20180723210910', 0.01, 0.00, 1.00, 1, NULL, 21, '20180723110910', 1, '2018-07-23 19:58:17', '2018-07-23 19:58:17'); INSERT INTO `product` VALUES ('20180723210911', 0.01, 0.00, 1.00, 1, NULL, 21, '20180723110911', 1, '2018-07-23 19:59:10', '2018-07-23 19:59:10'); INSERT INTO `product` VALUES ('20180723211009', 0.02, 0.00, 1.00, 1, NULL, 97, '20180723111009', 1, '2018-07-23 21:01:51', '2018-07-23 21:01:51'); INSERT INTO `product` VALUES ('20181106211110', 0.02, 0.00, 0.01, 1, ',5001,6001,', 99, '20181106111110', 1, '2018-11-06 11:56:20', '2018-11-06 11:56:20'); INSERT INTO `product` VALUES ('20181106211111', 0.01, 0.00, 0.01, 0, ',5001,6002,', 98, '20181106111110', 1, '2018-11-06 11:56:20', '2018-11-06 11:56:20'); INSERT INTO `product` VALUES ('20181106211112', 0.03, 0.00, 0.01, 0, ',5002,6001,', 97, '20181106111110', 1, '2018-11-06 11:56:20', '2018-11-06 11:56:20'); INSERT INTO `product` VALUES ('20181106211113', 0.06, 0.00, 0.01, 0, ',5002,6002,', 99, '20181106111110', 1, '2018-11-06 11:56:20', '2018-11-06 11:56:20'); INSERT INTO `product` VALUES ('20181106211211', 11.00, 0.00, 10.00, 1, ',5001,6001,', 99, '20181106111211', 1, '2018-11-06 23:47:44', '2018-11-06 23:47:44'); INSERT INTO `product` VALUES ('20181106211212', 12.00, 0.00, 10.00, 0, ',5001,6002,', 99, '20181106111211', 1, '2018-11-06 23:47:44', '2018-11-06 23:47:44'); INSERT INTO `product` VALUES ('20181106211213', 13.00, 0.00, 10.00, 0, ',5002,6001,', 99, '20181106111211', 1, '2018-11-06 23:47:44', '2018-11-06 23:47:44'); INSERT INTO `product` VALUES ('20181106211214', 16.00, 0.00, 10.00, 0, ',5002,6002,', 99, '20181106111211', 1, '2018-11-06 23:47:44', '2018-11-06 23:47:44'); INSERT INTO `product` VALUES ('20181110211312', 3.00, 0.00, 1.00, 1, ',1001,', 9, '20181110111312', 1, '2018-11-10 17:45:34', '2018-11-10 17:45:34'); INSERT INTO `product` VALUES ('20181110211313', 3.00, 0.00, 1.00, 0, ',1002,', 9, '20181110111312', 1, '2018-11-10 17:45:34', '2018-11-10 17:45:34'); INSERT INTO `product` VALUES ('20181110211413', 2.00, 0.01, 1.00, 1, ',5001,', 95, '20181110111413', 1, '2018-11-10 22:03:39', '2018-11-10 22:03:39'); INSERT INTO `product` VALUES ('20181110211414', 3.00, 0.02, 1.00, 0, ',5002,', 65, '20181110111413', 1, '2018-11-10 22:03:39', '2018-11-10 22:03:39'); INSERT INTO `product` VALUES ('20181117211514', 0.01, 0.01, 1.00, 1, ',5001,6002,', 99, '20181117111615', 1, '2018-11-17 11:28:14', '2018-11-17 11:28:14'); INSERT INTO `product` VALUES ('20181117211515', 0.01, 0.01, 1.00, 0, ',5001,60001,', 99, '20181117111615', 0, '2018-11-17 11:28:14', '2018-11-17 11:28:14'); INSERT INTO `product` VALUES ('20181117211516', 0.01, 0.01, 1.00, 0, ',5002,6002,', 99, '20181117111615', 1, '2018-11-17 11:28:14', '2018-11-17 11:28:14'); INSERT INTO `product` VALUES ('20181117211517', 0.01, 0.01, 1.00, 0, ',5002,60001,', 99, '20181117111615', 1, '2018-11-17 11:28:14', '2018-11-17 11:28:14'); COMMIT; -- ---------------------------- -- Table structure for product_category -- ---------------------------- DROP TABLE IF EXISTS `product_category`; CREATE TABLE `product_category` ( `id` bigint(20) NOT NULL COMMENT 'ID', `name` varchar(255) NOT NULL COMMENT '名称', `parent_id` bigint(20) DEFAULT NULL COMMENT '父节点', `tree_path` varchar(255) DEFAULT NULL COMMENT '全路径', `order` int(11) NOT NULL DEFAULT '99' COMMENT '优先级 值小在前面 值大的在后面', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新日期', PRIMARY KEY (`id`), KEY `ind_product_category_parent` (`parent_id`), KEY `idx_order` (`order`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of product_category -- ---------------------------- BEGIN; INSERT INTO `product_category` VALUES (10000, '振荡器', NULL, ',10000,', 99, '2018-07-01 16:10:55', '2018-07-01 16:10:55'); INSERT INTO `product_category` VALUES (10100, '恒温振荡器', 10000, ',10000,10100,', 99, '2018-07-01 16:11:39', '2018-07-01 16:11:39'); INSERT INTO `product_category` VALUES (10200, '微型振荡器', 10000, ',10000,10200,', 99, '2018-07-01 16:12:07', '2018-07-01 16:12:07'); INSERT INTO `product_category` VALUES (10201, '脱色摇床', 10200, ',10000,10200,10201,', 99, '2018-07-01 16:12:47', '2018-07-01 16:12:47'); INSERT INTO `product_category` VALUES (10202, '漩涡混合器', 10200, ',10000,10200,10202,', 99, '2018-07-01 16:13:03', '2018-07-01 16:13:03'); INSERT INTO `product_category` VALUES (10203, '迷你离心机', 10200, ',10000,10200,10203,', 99, '2018-07-01 16:13:10', '2018-07-01 16:13:10'); INSERT INTO `product_category` VALUES (20000, '易耗品', NULL, ',20000,', 99, '2018-07-23 16:13:01', '2018-07-23 16:13:01'); INSERT INTO `product_category` VALUES (30000, '衣服', NULL, ',30000,', 99, '2018-11-06 11:46:12', '2018-11-06 11:46:12'); INSERT INTO `product_category` VALUES (30100, '男装', 30000, ',30000,30100,', 99, '2018-11-06 11:46:57', '2018-11-06 11:46:57'); INSERT INTO `product_category` VALUES (30200, '女装', 30000, ',30000,30200,', 99, '2018-11-06 11:47:24', '2018-11-06 11:47:24'); INSERT INTO `product_category` VALUES (40000, 'test', NULL, ',40000,', 0, '2018-11-14 23:29:33', '2018-11-14 23:29:33'); INSERT INTO `product_category` VALUES (40001, 'twst1', 40000, ',40000,40001,', 0, '2018-11-14 23:32:22', '2018-11-14 23:32:22'); INSERT INTO `product_category` VALUES (400001, 'testest', 40001, ',40000,40001,400001,', 0, '2018-11-14 23:33:13', '2018-11-14 23:33:13'); COMMIT; -- ---------------------------- -- Table structure for receiver -- ---------------------------- DROP TABLE IF EXISTS `receiver`; CREATE TABLE `receiver` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `address` varchar(255) NOT NULL, `area_name` varchar(255) NOT NULL, `consignee` varchar(255) NOT NULL, `is_default` tinyint(1) NOT NULL, `phone` varchar(255) NOT NULL, `zip_code` varchar(255) DEFAULT NULL, `area_id` bigint(20) NOT NULL, `member_id` varchar(50) NOT NULL, `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新日期', PRIMARY KEY (`id`), KEY `ind_receiver_area` (`area_id`), KEY `ind_receiver_member` (`member_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of receiver -- ---------------------------- BEGIN; INSERT INTO `receiver` VALUES (1, 'ggg', 'bbb', 'hh', 0, '123', '321', 5, '1', '2018-07-03 12:37:50', '2018-07-03 12:37:50'); COMMIT; -- ---------------------------- -- Table structure for schedule_job -- ---------------------------- DROP TABLE IF EXISTS `schedule_job`; CREATE TABLE `schedule_job` ( `job_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务id', `bean_name` varchar(200) DEFAULT NULL COMMENT 'spring bean名称', `method_name` varchar(100) DEFAULT NULL COMMENT '方法名', `params` varchar(2000) DEFAULT NULL COMMENT '参数', `cron_expression` varchar(100) DEFAULT NULL COMMENT 'cron表达式', `status` tinyint(4) DEFAULT NULL COMMENT '任务状态 0:正常 1:暂停', `remark` varchar(255) DEFAULT NULL COMMENT '备注', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`job_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='定时任务'; -- ---------------------------- -- Records of schedule_job -- ---------------------------- BEGIN; INSERT INTO `schedule_job` VALUES (1, 'testTask', 'test', 'sdb', '0 0/30 * * * ?', 0, '有参数测试', '2016-12-01 23:16:46'); INSERT INTO `schedule_job` VALUES (2, 'testTask', 'test2', NULL, '0 0/30 * * * ?', 1, '无参数测试', '2016-12-03 14:55:56'); COMMIT; -- ---------------------------- -- Table structure for schedule_job_log -- ---------------------------- DROP TABLE IF EXISTS `schedule_job_log`; CREATE TABLE `schedule_job_log` ( `log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务日志id', `job_id` bigint(20) NOT NULL COMMENT '任务id', `bean_name` varchar(200) DEFAULT NULL COMMENT 'spring bean名称', `method_name` varchar(100) DEFAULT NULL COMMENT '方法名', `params` varchar(2000) DEFAULT NULL COMMENT '参数', `status` tinyint(4) NOT NULL COMMENT '任务状态 0:成功 1:失败', `error` varchar(2000) DEFAULT NULL COMMENT '失败信息', `times` int(11) NOT NULL COMMENT '耗时(单位:毫秒)', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`log_id`), KEY `job_id` (`job_id`) ) ENGINE=InnoDB AUTO_INCREMENT=311 DEFAULT CHARSET=utf8 COMMENT='定时任务日志'; -- ---------------------------- -- Records of schedule_job_log -- ---------------------------- BEGIN; INSERT INTO `schedule_job_log` VALUES (1, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1066, '2018-06-28 20:30:00'); INSERT INTO `schedule_job_log` VALUES (2, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1012, '2018-06-28 21:00:00'); INSERT INTO `schedule_job_log` VALUES (3, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1022, '2018-06-28 21:30:00'); INSERT INTO `schedule_job_log` VALUES (4, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1017, '2018-06-28 22:00:00'); INSERT INTO `schedule_job_log` VALUES (5, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1017, '2018-06-28 22:30:00'); INSERT INTO `schedule_job_log` VALUES (6, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1025, '2018-06-28 23:00:00'); INSERT INTO `schedule_job_log` VALUES (7, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-06-28 23:30:00'); INSERT INTO `schedule_job_log` VALUES (8, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1013, '2018-06-29 09:30:00'); INSERT INTO `schedule_job_log` VALUES (9, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1027, '2018-06-29 11:30:00'); INSERT INTO `schedule_job_log` VALUES (10, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1039, '2018-06-29 12:00:00'); INSERT INTO `schedule_job_log` VALUES (11, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1019, '2018-06-29 12:30:00'); INSERT INTO `schedule_job_log` VALUES (12, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-06-29 13:00:00'); INSERT INTO `schedule_job_log` VALUES (13, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1024, '2018-06-29 13:30:00'); INSERT INTO `schedule_job_log` VALUES (14, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1036, '2018-06-29 15:00:00'); INSERT INTO `schedule_job_log` VALUES (15, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1132, '2018-06-29 15:30:00'); INSERT INTO `schedule_job_log` VALUES (16, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1021, '2018-06-29 16:00:00'); INSERT INTO `schedule_job_log` VALUES (17, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1033, '2018-06-29 19:00:00'); INSERT INTO `schedule_job_log` VALUES (18, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-06-29 19:30:00'); INSERT INTO `schedule_job_log` VALUES (19, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1029, '2018-06-29 20:00:00'); INSERT INTO `schedule_job_log` VALUES (20, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1009, '2018-06-29 20:30:00'); INSERT INTO `schedule_job_log` VALUES (21, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-06-29 21:00:00'); INSERT INTO `schedule_job_log` VALUES (22, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1018, '2018-06-29 21:30:00'); INSERT INTO `schedule_job_log` VALUES (23, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1010, '2018-06-29 22:00:00'); INSERT INTO `schedule_job_log` VALUES (24, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1017, '2018-06-29 22:30:00'); INSERT INTO `schedule_job_log` VALUES (25, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1021, '2018-06-29 23:00:00'); INSERT INTO `schedule_job_log` VALUES (26, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-06-29 23:30:00'); INSERT INTO `schedule_job_log` VALUES (27, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1030, '2018-06-30 00:00:00'); INSERT INTO `schedule_job_log` VALUES (28, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1027, '2018-06-30 00:30:00'); INSERT INTO `schedule_job_log` VALUES (29, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1028, '2018-06-30 23:30:00'); INSERT INTO `schedule_job_log` VALUES (30, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1032, '2018-07-01 14:00:00'); INSERT INTO `schedule_job_log` VALUES (31, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1013, '2018-07-01 14:30:00'); INSERT INTO `schedule_job_log` VALUES (32, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1019, '2018-07-01 15:00:00'); INSERT INTO `schedule_job_log` VALUES (33, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1031, '2018-07-01 15:30:00'); INSERT INTO `schedule_job_log` VALUES (34, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-07-01 16:00:00'); INSERT INTO `schedule_job_log` VALUES (35, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-07-01 16:30:00'); INSERT INTO `schedule_job_log` VALUES (36, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1017, '2018-07-01 17:00:00'); INSERT INTO `schedule_job_log` VALUES (37, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1022, '2018-07-01 17:30:00'); INSERT INTO `schedule_job_log` VALUES (38, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1020, '2018-07-01 18:00:00'); INSERT INTO `schedule_job_log` VALUES (39, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1022, '2018-07-01 18:30:31'); INSERT INTO `schedule_job_log` VALUES (40, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1023, '2018-07-01 19:30:00'); INSERT INTO `schedule_job_log` VALUES (41, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1007, '2018-07-01 20:00:00'); INSERT INTO `schedule_job_log` VALUES (42, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1021, '2018-07-01 20:30:00'); INSERT INTO `schedule_job_log` VALUES (43, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1007, '2018-07-01 21:00:00'); INSERT INTO `schedule_job_log` VALUES (44, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1017, '2018-07-01 21:30:00'); INSERT INTO `schedule_job_log` VALUES (45, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1016, '2018-07-01 22:00:00'); INSERT INTO `schedule_job_log` VALUES (46, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1016, '2018-07-01 22:30:00'); INSERT INTO `schedule_job_log` VALUES (47, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1018, '2018-07-01 23:00:00'); INSERT INTO `schedule_job_log` VALUES (48, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-07-02 09:30:00'); INSERT INTO `schedule_job_log` VALUES (49, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1019, '2018-07-02 10:00:00'); INSERT INTO `schedule_job_log` VALUES (50, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1016, '2018-07-02 10:30:00'); INSERT INTO `schedule_job_log` VALUES (51, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1026, '2018-07-02 11:00:00'); INSERT INTO `schedule_job_log` VALUES (52, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1027, '2018-07-02 11:30:00'); INSERT INTO `schedule_job_log` VALUES (53, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1013, '2018-07-02 12:00:00'); INSERT INTO `schedule_job_log` VALUES (54, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1020, '2018-07-02 13:00:00'); INSERT INTO `schedule_job_log` VALUES (55, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1040, '2018-07-02 21:30:00'); INSERT INTO `schedule_job_log` VALUES (56, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-07-02 22:00:00'); INSERT INTO `schedule_job_log` VALUES (57, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1018, '2018-07-02 22:30:00'); INSERT INTO `schedule_job_log` VALUES (58, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1019, '2018-07-02 23:00:00'); INSERT INTO `schedule_job_log` VALUES (59, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1025, '2018-07-02 23:30:00'); INSERT INTO `schedule_job_log` VALUES (60, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1037, '2018-07-03 00:00:00'); INSERT INTO `schedule_job_log` VALUES (61, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-07-03 01:30:00'); INSERT INTO `schedule_job_log` VALUES (62, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1018, '2018-07-03 08:30:00'); INSERT INTO `schedule_job_log` VALUES (63, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1025, '2018-07-03 09:00:00'); INSERT INTO `schedule_job_log` VALUES (64, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1023, '2018-07-03 13:00:06'); INSERT INTO `schedule_job_log` VALUES (65, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-07-03 13:30:00'); INSERT INTO `schedule_job_log` VALUES (66, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1402, '2018-07-03 18:30:00'); INSERT INTO `schedule_job_log` VALUES (67, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1024, '2018-07-03 19:00:00'); INSERT INTO `schedule_job_log` VALUES (68, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-07-03 19:30:00'); INSERT INTO `schedule_job_log` VALUES (69, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1020, '2018-07-03 20:00:00'); INSERT INTO `schedule_job_log` VALUES (70, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1016, '2018-07-03 20:30:00'); INSERT INTO `schedule_job_log` VALUES (71, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1023, '2018-07-03 21:00:00'); INSERT INTO `schedule_job_log` VALUES (72, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1020, '2018-07-03 21:30:00'); INSERT INTO `schedule_job_log` VALUES (73, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1021, '2018-07-03 22:00:00'); INSERT INTO `schedule_job_log` VALUES (74, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1024, '2018-07-03 22:30:00'); INSERT INTO `schedule_job_log` VALUES (75, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-07-03 23:00:00'); INSERT INTO `schedule_job_log` VALUES (76, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1045, '2018-07-03 23:30:00'); INSERT INTO `schedule_job_log` VALUES (77, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1016, '2018-07-04 00:30:00'); INSERT INTO `schedule_job_log` VALUES (78, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1012, '2018-07-04 04:30:00'); INSERT INTO `schedule_job_log` VALUES (79, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1016, '2018-07-04 10:00:00'); INSERT INTO `schedule_job_log` VALUES (80, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1038, '2018-07-04 10:30:00'); INSERT INTO `schedule_job_log` VALUES (81, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1021, '2018-07-05 13:00:00'); INSERT INTO `schedule_job_log` VALUES (82, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1054, '2018-07-05 13:30:00'); INSERT INTO `schedule_job_log` VALUES (83, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-07-05 14:00:00'); INSERT INTO `schedule_job_log` VALUES (84, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1033, '2018-07-05 14:30:00'); INSERT INTO `schedule_job_log` VALUES (85, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1031, '2018-07-06 23:00:00'); INSERT INTO `schedule_job_log` VALUES (86, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-07-06 23:30:00'); INSERT INTO `schedule_job_log` VALUES (87, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1038, '2018-07-07 00:00:00'); INSERT INTO `schedule_job_log` VALUES (88, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1049, '2018-07-07 00:30:00'); INSERT INTO `schedule_job_log` VALUES (89, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1022, '2018-07-07 04:00:00'); INSERT INTO `schedule_job_log` VALUES (90, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1031, '2018-07-07 11:00:00'); INSERT INTO `schedule_job_log` VALUES (91, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1023, '2018-07-07 11:30:00'); INSERT INTO `schedule_job_log` VALUES (92, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1031, '2018-07-07 17:00:00'); INSERT INTO `schedule_job_log` VALUES (93, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1019, '2018-07-07 18:30:11'); INSERT INTO `schedule_job_log` VALUES (94, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-07-07 20:00:00'); INSERT INTO `schedule_job_log` VALUES (95, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1029, '2018-07-07 20:30:00'); INSERT INTO `schedule_job_log` VALUES (96, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1022, '2018-07-07 21:00:00'); INSERT INTO `schedule_job_log` VALUES (97, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1037, '2018-07-07 21:30:00'); INSERT INTO `schedule_job_log` VALUES (98, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1020, '2018-07-07 22:00:00'); INSERT INTO `schedule_job_log` VALUES (99, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1029, '2018-07-07 22:30:00'); INSERT INTO `schedule_job_log` VALUES (100, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1048, '2018-07-07 23:00:00'); INSERT INTO `schedule_job_log` VALUES (101, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1024, '2018-07-07 23:30:00'); INSERT INTO `schedule_job_log` VALUES (102, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1084, '2018-07-08 00:00:00'); INSERT INTO `schedule_job_log` VALUES (103, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1012, '2018-07-08 06:00:07'); INSERT INTO `schedule_job_log` VALUES (104, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1032, '2018-07-08 16:30:00'); INSERT INTO `schedule_job_log` VALUES (105, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1054, '2018-07-08 17:00:00'); INSERT INTO `schedule_job_log` VALUES (106, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1160, '2018-07-08 17:30:00'); INSERT INTO `schedule_job_log` VALUES (107, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1065, '2018-07-14 17:30:00'); INSERT INTO `schedule_job_log` VALUES (108, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-07-14 18:00:00'); INSERT INTO `schedule_job_log` VALUES (109, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1010, '2018-07-14 18:30:00'); INSERT INTO `schedule_job_log` VALUES (110, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1023, '2018-07-14 19:30:00'); INSERT INTO `schedule_job_log` VALUES (111, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1021, '2018-07-14 20:30:00'); INSERT INTO `schedule_job_log` VALUES (112, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-07-14 21:00:00'); INSERT INTO `schedule_job_log` VALUES (113, 1, 'testTask', 'test', 'volunteer', 0, NULL, 2073, '2018-07-14 21:30:00'); INSERT INTO `schedule_job_log` VALUES (114, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1114, '2018-07-14 22:00:00'); INSERT INTO `schedule_job_log` VALUES (115, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1023, '2018-07-14 22:30:00'); INSERT INTO `schedule_job_log` VALUES (116, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1034, '2018-07-14 23:00:00'); INSERT INTO `schedule_job_log` VALUES (117, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-07-14 23:30:00'); INSERT INTO `schedule_job_log` VALUES (118, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1010, '2018-07-15 01:30:00'); INSERT INTO `schedule_job_log` VALUES (119, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1012, '2018-07-15 06:30:00'); INSERT INTO `schedule_job_log` VALUES (120, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1043, '2018-07-15 08:30:00'); INSERT INTO `schedule_job_log` VALUES (121, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-07-15 09:00:00'); INSERT INTO `schedule_job_log` VALUES (122, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-07-15 09:30:00'); INSERT INTO `schedule_job_log` VALUES (123, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1022, '2018-07-15 10:00:00'); INSERT INTO `schedule_job_log` VALUES (124, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1026, '2018-07-15 10:30:00'); INSERT INTO `schedule_job_log` VALUES (125, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1013, '2018-07-15 11:00:00'); INSERT INTO `schedule_job_log` VALUES (126, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1012, '2018-07-15 11:30:00'); INSERT INTO `schedule_job_log` VALUES (127, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1013, '2018-07-15 12:00:00'); INSERT INTO `schedule_job_log` VALUES (128, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1032, '2018-07-15 12:30:00'); INSERT INTO `schedule_job_log` VALUES (129, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1012, '2018-07-15 13:00:00'); INSERT INTO `schedule_job_log` VALUES (130, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1081, '2018-07-15 13:30:00'); INSERT INTO `schedule_job_log` VALUES (131, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-07-15 14:00:00'); INSERT INTO `schedule_job_log` VALUES (132, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1048, '2018-07-15 14:30:00'); INSERT INTO `schedule_job_log` VALUES (133, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1156, '2018-07-15 17:00:01'); INSERT INTO `schedule_job_log` VALUES (134, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1029, '2018-07-15 18:00:00'); INSERT INTO `schedule_job_log` VALUES (135, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1028, '2018-07-15 18:30:00'); INSERT INTO `schedule_job_log` VALUES (136, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1038, '2018-07-16 09:30:00'); INSERT INTO `schedule_job_log` VALUES (137, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1035, '2018-07-17 11:30:00'); INSERT INTO `schedule_job_log` VALUES (138, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1124, '2018-07-17 12:00:00'); INSERT INTO `schedule_job_log` VALUES (139, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1101, '2018-07-17 12:30:00'); INSERT INTO `schedule_job_log` VALUES (140, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1189, '2018-07-17 18:30:01'); INSERT INTO `schedule_job_log` VALUES (141, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1071, '2018-07-17 19:00:00'); INSERT INTO `schedule_job_log` VALUES (142, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1037, '2018-07-17 19:30:00'); INSERT INTO `schedule_job_log` VALUES (143, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1045, '2018-07-17 20:00:00'); INSERT INTO `schedule_job_log` VALUES (144, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1062, '2018-07-17 20:30:00'); INSERT INTO `schedule_job_log` VALUES (145, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1085, '2018-07-17 21:00:00'); INSERT INTO `schedule_job_log` VALUES (146, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1111, '2018-07-17 21:30:00'); INSERT INTO `schedule_job_log` VALUES (147, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1066, '2018-07-17 22:00:00'); INSERT INTO `schedule_job_log` VALUES (148, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1090, '2018-07-17 22:30:00'); INSERT INTO `schedule_job_log` VALUES (149, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1063, '2018-07-17 23:00:00'); INSERT INTO `schedule_job_log` VALUES (150, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1103, '2018-07-18 09:30:00'); INSERT INTO `schedule_job_log` VALUES (151, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1068, '2018-07-18 10:00:00'); INSERT INTO `schedule_job_log` VALUES (152, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1036, '2018-07-18 10:30:00'); INSERT INTO `schedule_job_log` VALUES (153, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1061, '2018-07-18 11:00:00'); INSERT INTO `schedule_job_log` VALUES (154, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1027, '2018-07-18 11:30:00'); INSERT INTO `schedule_job_log` VALUES (155, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1052, '2018-07-18 12:00:00'); INSERT INTO `schedule_job_log` VALUES (156, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1019, '2018-07-18 12:30:00'); INSERT INTO `schedule_job_log` VALUES (157, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1089, '2018-07-18 13:30:00'); INSERT INTO `schedule_job_log` VALUES (158, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1108, '2018-07-18 14:30:00'); INSERT INTO `schedule_job_log` VALUES (159, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1060, '2018-07-18 15:00:00'); INSERT INTO `schedule_job_log` VALUES (160, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1046, '2018-07-18 15:30:00'); INSERT INTO `schedule_job_log` VALUES (161, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1039, '2018-07-18 16:00:00'); INSERT INTO `schedule_job_log` VALUES (162, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1075, '2018-07-18 16:30:00'); INSERT INTO `schedule_job_log` VALUES (163, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1049, '2018-07-18 17:00:00'); INSERT INTO `schedule_job_log` VALUES (164, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1066, '2018-07-18 17:30:00'); INSERT INTO `schedule_job_log` VALUES (165, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1068, '2018-07-18 18:00:00'); INSERT INTO `schedule_job_log` VALUES (166, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1060, '2018-07-18 18:30:00'); INSERT INTO `schedule_job_log` VALUES (167, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1030, '2018-07-18 19:00:00'); INSERT INTO `schedule_job_log` VALUES (168, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1165, '2018-07-18 19:30:00'); INSERT INTO `schedule_job_log` VALUES (169, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1092, '2018-07-18 20:00:00'); INSERT INTO `schedule_job_log` VALUES (170, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1025, '2018-07-18 20:30:00'); INSERT INTO `schedule_job_log` VALUES (171, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1053, '2018-07-18 21:00:00'); INSERT INTO `schedule_job_log` VALUES (172, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1041, '2018-07-18 21:30:00'); INSERT INTO `schedule_job_log` VALUES (173, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1153, '2018-07-18 22:00:00'); INSERT INTO `schedule_job_log` VALUES (174, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1080, '2018-07-18 22:30:00'); INSERT INTO `schedule_job_log` VALUES (175, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1024, '2018-07-18 23:00:00'); INSERT INTO `schedule_job_log` VALUES (176, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1060, '2018-07-18 23:30:00'); INSERT INTO `schedule_job_log` VALUES (177, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1066, '2018-07-19 00:00:00'); INSERT INTO `schedule_job_log` VALUES (178, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1103, '2018-07-19 09:30:00'); INSERT INTO `schedule_job_log` VALUES (179, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1049, '2018-07-19 10:00:00'); INSERT INTO `schedule_job_log` VALUES (180, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1050, '2018-07-19 10:30:00'); INSERT INTO `schedule_job_log` VALUES (181, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1055, '2018-07-19 11:00:00'); INSERT INTO `schedule_job_log` VALUES (182, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1071, '2018-07-19 11:30:00'); INSERT INTO `schedule_job_log` VALUES (183, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1046, '2018-07-19 12:00:00'); INSERT INTO `schedule_job_log` VALUES (184, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1093, '2018-07-19 12:30:00'); INSERT INTO `schedule_job_log` VALUES (185, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1045, '2018-07-19 13:00:00'); INSERT INTO `schedule_job_log` VALUES (186, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1033, '2018-07-19 13:30:00'); INSERT INTO `schedule_job_log` VALUES (187, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1074, '2018-07-19 14:00:00'); INSERT INTO `schedule_job_log` VALUES (188, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1028, '2018-07-19 14:30:00'); INSERT INTO `schedule_job_log` VALUES (189, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1034, '2018-07-19 15:00:00'); INSERT INTO `schedule_job_log` VALUES (190, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1018, '2018-07-19 15:30:00'); INSERT INTO `schedule_job_log` VALUES (191, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1047, '2018-07-19 16:00:00'); INSERT INTO `schedule_job_log` VALUES (192, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1057, '2018-07-19 16:30:00'); INSERT INTO `schedule_job_log` VALUES (193, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1039, '2018-07-19 17:00:00'); INSERT INTO `schedule_job_log` VALUES (194, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1034, '2018-07-19 17:30:00'); INSERT INTO `schedule_job_log` VALUES (195, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1072, '2018-07-20 11:00:00'); INSERT INTO `schedule_job_log` VALUES (196, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1200, '2018-07-20 11:30:01'); INSERT INTO `schedule_job_log` VALUES (197, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1099, '2018-07-20 13:00:00'); INSERT INTO `schedule_job_log` VALUES (198, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1245, '2018-07-20 13:30:01'); INSERT INTO `schedule_job_log` VALUES (199, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1022, '2018-07-20 14:00:00'); INSERT INTO `schedule_job_log` VALUES (200, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1091, '2018-07-20 14:30:00'); INSERT INTO `schedule_job_log` VALUES (201, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1075, '2018-07-20 20:30:00'); INSERT INTO `schedule_job_log` VALUES (202, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1039, '2018-07-20 21:00:00'); INSERT INTO `schedule_job_log` VALUES (203, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1106, '2018-07-20 21:30:00'); INSERT INTO `schedule_job_log` VALUES (204, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1037, '2018-07-20 22:30:00'); INSERT INTO `schedule_job_log` VALUES (205, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1073, '2018-07-20 23:00:29'); INSERT INTO `schedule_job_log` VALUES (206, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1170, '2018-07-20 23:30:01'); INSERT INTO `schedule_job_log` VALUES (207, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1048, '2018-07-21 05:30:00'); INSERT INTO `schedule_job_log` VALUES (208, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1046, '2018-07-21 09:00:00'); INSERT INTO `schedule_job_log` VALUES (209, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1037, '2018-07-21 09:30:00'); INSERT INTO `schedule_job_log` VALUES (210, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1065, '2018-07-21 10:00:00'); INSERT INTO `schedule_job_log` VALUES (211, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1083, '2018-07-21 10:30:00'); INSERT INTO `schedule_job_log` VALUES (212, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1025, '2018-07-21 11:00:00'); INSERT INTO `schedule_job_log` VALUES (213, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1037, '2018-07-21 11:30:00'); INSERT INTO `schedule_job_log` VALUES (214, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1044, '2018-07-21 12:00:00'); INSERT INTO `schedule_job_log` VALUES (215, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1018, '2018-07-21 12:30:00'); INSERT INTO `schedule_job_log` VALUES (216, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1033, '2018-07-21 13:00:00'); INSERT INTO `schedule_job_log` VALUES (217, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1022, '2018-07-21 13:30:00'); INSERT INTO `schedule_job_log` VALUES (218, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1032, '2018-07-21 14:00:00'); INSERT INTO `schedule_job_log` VALUES (219, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1022, '2018-07-21 14:30:00'); INSERT INTO `schedule_job_log` VALUES (220, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1114, '2018-07-21 15:00:00'); INSERT INTO `schedule_job_log` VALUES (221, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1031, '2018-07-21 16:00:00'); INSERT INTO `schedule_job_log` VALUES (222, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1116, '2018-07-21 16:30:00'); INSERT INTO `schedule_job_log` VALUES (223, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1025, '2018-07-21 17:00:00'); INSERT INTO `schedule_job_log` VALUES (224, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1116, '2018-07-21 17:30:00'); INSERT INTO `schedule_job_log` VALUES (225, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1073, '2018-07-21 18:00:00'); INSERT INTO `schedule_job_log` VALUES (226, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1062, '2018-07-21 18:30:00'); INSERT INTO `schedule_job_log` VALUES (227, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1049, '2018-07-21 19:00:00'); INSERT INTO `schedule_job_log` VALUES (228, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1038, '2018-07-21 19:30:00'); INSERT INTO `schedule_job_log` VALUES (229, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1029, '2018-07-21 20:00:00'); INSERT INTO `schedule_job_log` VALUES (230, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1027, '2018-07-21 20:30:00'); INSERT INTO `schedule_job_log` VALUES (231, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1069, '2018-07-21 21:00:00'); INSERT INTO `schedule_job_log` VALUES (232, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1110, '2018-07-21 21:30:00'); INSERT INTO `schedule_job_log` VALUES (233, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1025, '2018-07-21 22:00:00'); INSERT INTO `schedule_job_log` VALUES (234, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1114, '2018-07-21 22:30:00'); INSERT INTO `schedule_job_log` VALUES (235, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1108, '2018-07-22 09:30:00'); INSERT INTO `schedule_job_log` VALUES (236, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1050, '2018-07-22 10:00:00'); INSERT INTO `schedule_job_log` VALUES (237, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1042, '2018-07-22 10:30:00'); INSERT INTO `schedule_job_log` VALUES (238, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1055, '2018-07-22 11:00:00'); INSERT INTO `schedule_job_log` VALUES (239, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1054, '2018-07-22 11:30:00'); INSERT INTO `schedule_job_log` VALUES (240, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1040, '2018-07-22 12:00:00'); INSERT INTO `schedule_job_log` VALUES (241, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1053, '2018-07-22 12:30:00'); INSERT INTO `schedule_job_log` VALUES (242, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1035, '2018-07-22 13:00:00'); INSERT INTO `schedule_job_log` VALUES (243, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1031, '2018-07-22 13:30:00'); INSERT INTO `schedule_job_log` VALUES (244, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1054, '2018-07-22 14:00:00'); INSERT INTO `schedule_job_log` VALUES (245, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1063, '2018-07-22 14:30:00'); INSERT INTO `schedule_job_log` VALUES (246, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1038, '2018-07-22 15:00:00'); INSERT INTO `schedule_job_log` VALUES (247, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1061, '2018-07-22 15:30:00'); INSERT INTO `schedule_job_log` VALUES (248, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1060, '2018-07-22 16:00:00'); INSERT INTO `schedule_job_log` VALUES (249, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1040, '2018-07-22 16:30:00'); INSERT INTO `schedule_job_log` VALUES (250, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1047, '2018-07-22 17:00:00'); INSERT INTO `schedule_job_log` VALUES (251, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1037, '2018-07-22 17:30:00'); INSERT INTO `schedule_job_log` VALUES (252, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1028, '2018-07-22 18:00:00'); INSERT INTO `schedule_job_log` VALUES (253, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1052, '2018-07-22 18:30:00'); INSERT INTO `schedule_job_log` VALUES (254, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1124, '2018-07-22 19:30:01'); INSERT INTO `schedule_job_log` VALUES (255, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1049, '2018-07-22 20:00:00'); INSERT INTO `schedule_job_log` VALUES (256, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1041, '2018-07-22 20:30:00'); INSERT INTO `schedule_job_log` VALUES (257, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1106, '2018-07-22 21:30:00'); INSERT INTO `schedule_job_log` VALUES (258, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1047, '2018-07-22 22:00:00'); INSERT INTO `schedule_job_log` VALUES (259, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1025, '2018-07-22 22:30:00'); INSERT INTO `schedule_job_log` VALUES (260, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1103, '2018-07-22 23:00:00'); INSERT INTO `schedule_job_log` VALUES (261, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1077, '2018-07-23 00:30:00'); INSERT INTO `schedule_job_log` VALUES (262, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1098, '2018-07-23 07:30:00'); INSERT INTO `schedule_job_log` VALUES (263, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1032, '2018-07-23 11:00:00'); INSERT INTO `schedule_job_log` VALUES (264, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1012, '2018-07-23 11:30:00'); INSERT INTO `schedule_job_log` VALUES (265, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-07-23 12:00:00'); INSERT INTO `schedule_job_log` VALUES (266, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-07-23 12:30:00'); INSERT INTO `schedule_job_log` VALUES (267, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1013, '2018-07-23 13:00:00'); INSERT INTO `schedule_job_log` VALUES (268, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-07-23 13:30:00'); INSERT INTO `schedule_job_log` VALUES (269, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-07-23 14:00:00'); INSERT INTO `schedule_job_log` VALUES (270, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1008, '2018-07-23 14:30:00'); INSERT INTO `schedule_job_log` VALUES (271, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1010, '2018-07-23 15:00:00'); INSERT INTO `schedule_job_log` VALUES (272, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1009, '2018-07-23 15:30:00'); INSERT INTO `schedule_job_log` VALUES (273, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1025, '2018-07-23 16:00:00'); INSERT INTO `schedule_job_log` VALUES (274, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1035, '2018-07-23 16:30:00'); INSERT INTO `schedule_job_log` VALUES (275, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1028, '2018-07-23 17:00:00'); INSERT INTO `schedule_job_log` VALUES (276, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1008, '2018-07-23 17:30:00'); INSERT INTO `schedule_job_log` VALUES (277, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1016, '2018-07-23 18:00:00'); INSERT INTO `schedule_job_log` VALUES (278, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1012, '2018-07-23 18:30:00'); INSERT INTO `schedule_job_log` VALUES (279, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1018, '2018-07-23 19:00:00'); INSERT INTO `schedule_job_log` VALUES (280, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-07-23 19:30:00'); INSERT INTO `schedule_job_log` VALUES (281, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-07-23 20:00:00'); INSERT INTO `schedule_job_log` VALUES (282, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1039, '2018-07-23 21:30:00'); INSERT INTO `schedule_job_log` VALUES (283, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-07-23 22:00:00'); INSERT INTO `schedule_job_log` VALUES (284, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1016, '2018-07-23 22:30:00'); INSERT INTO `schedule_job_log` VALUES (285, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1071, '2018-07-23 23:00:00'); INSERT INTO `schedule_job_log` VALUES (286, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-07-23 23:30:00'); INSERT INTO `schedule_job_log` VALUES (287, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-07-24 09:30:00'); INSERT INTO `schedule_job_log` VALUES (288, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-07-24 10:00:00'); INSERT INTO `schedule_job_log` VALUES (289, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1017, '2018-07-24 10:30:00'); INSERT INTO `schedule_job_log` VALUES (290, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-07-24 11:00:00'); INSERT INTO `schedule_job_log` VALUES (291, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1017, '2018-07-24 11:30:00'); INSERT INTO `schedule_job_log` VALUES (292, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1011, '2018-07-24 12:00:00'); INSERT INTO `schedule_job_log` VALUES (293, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1018, '2018-07-24 12:30:00'); INSERT INTO `schedule_job_log` VALUES (294, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1017, '2018-07-24 13:00:00'); INSERT INTO `schedule_job_log` VALUES (295, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1023, '2018-07-24 13:30:00'); INSERT INTO `schedule_job_log` VALUES (296, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1023, '2018-07-24 14:00:00'); INSERT INTO `schedule_job_log` VALUES (297, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1022, '2018-07-24 14:30:00'); INSERT INTO `schedule_job_log` VALUES (298, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1018, '2018-07-24 15:00:00'); INSERT INTO `schedule_job_log` VALUES (299, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1024, '2018-07-24 15:30:00'); INSERT INTO `schedule_job_log` VALUES (300, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1019, '2018-10-16 16:00:00'); INSERT INTO `schedule_job_log` VALUES (301, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1006, '2018-10-16 16:30:00'); INSERT INTO `schedule_job_log` VALUES (302, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1013, '2018-10-16 17:00:00'); INSERT INTO `schedule_job_log` VALUES (303, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1015, '2018-10-16 17:30:00'); INSERT INTO `schedule_job_log` VALUES (304, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1014, '2018-10-16 18:00:00'); INSERT INTO `schedule_job_log` VALUES (305, 1, 'testTask', 'test', 'volunteer', 0, NULL, 1062, '2018-11-07 14:15:58'); INSERT INTO `schedule_job_log` VALUES (306, 1, 'testTask', 'test', 'sdb', 0, NULL, 1039, '2018-11-07 14:30:00'); INSERT INTO `schedule_job_log` VALUES (307, 1, 'testTask', 'test', 'sdb', 0, NULL, 1050, '2018-11-07 15:00:00'); INSERT INTO `schedule_job_log` VALUES (308, 1, 'testTask', 'test', 'sdb', 0, NULL, 1211, '2018-11-07 15:30:00'); INSERT INTO `schedule_job_log` VALUES (309, 1, 'testTask', 'test', 'sdb', 0, NULL, 1016, '2018-11-07 16:00:00'); INSERT INTO `schedule_job_log` VALUES (310, 1, 'testTask', 'test', 'sdb', 0, NULL, 1034, '2018-11-07 16:30:00'); COMMIT; -- ---------------------------- -- Table structure for sn -- ---------------------------- DROP TABLE IF EXISTS `sn`; CREATE TABLE `sn` ( `type` int(11) NOT NULL COMMENT '类型', `last_value` bigint(20) NOT NULL COMMENT '末值', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `modify_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改日期', PRIMARY KEY (`type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='序列号'; -- ---------------------------- -- Records of sn -- ---------------------------- BEGIN; INSERT INTO `sn` VALUES (1, 116, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); INSERT INTO `sn` VALUES (2, 115, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); INSERT INTO `sn` VALUES (3, 148, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); INSERT INTO `sn` VALUES (4, 143, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); INSERT INTO `sn` VALUES (5, 106, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); INSERT INTO `sn` VALUES (6, 106, '2018-05-23 14:52:55', '2018-05-23 14:52:55'); COMMIT; -- ---------------------------- -- Table structure for specification -- ---------------------------- DROP TABLE IF EXISTS `specification`; CREATE TABLE `specification` ( `id` bigint(20) NOT NULL COMMENT 'id', `parent_id` bigint(20) DEFAULT NULL COMMENT '父节点', `type` int(11) NOT NULL COMMENT '0-规格组 1-规格参数', `order` int(11) NOT NULL DEFAULT '0' COMMENT '排序', `name` varchar(50) NOT NULL COMMENT '名称', `category_id` bigint(20) DEFAULT NULL COMMENT '分类id', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ---------------------------- -- Records of specification -- ---------------------------- BEGIN; INSERT INTO `specification` VALUES (1000, NULL, 0, 0, '可放置最大规格数量', 1); INSERT INTO `specification` VALUES (1001, 1000, 1, 0, '1000ml*16', 1); INSERT INTO `specification` VALUES (1002, 1000, 1, 0, '1000ml*20', 1); INSERT INTO `specification` VALUES (2000, NULL, 0, 0, '可放置最大容量', 1); INSERT INTO `specification` VALUES (2001, 2000, 1, 0, '250ml * 20', 1); INSERT INTO `specification` VALUES (2002, 2000, 1, 0, '250ml * 60', 1); INSERT INTO `specification` VALUES (3000, NULL, 0, 0, '温度', 1); INSERT INTO `specification` VALUES (3001, 3000, 1, 0, '常温', 1); INSERT INTO `specification` VALUES (3002, 3000, 1, 0, '制冷', 1); INSERT INTO `specification` VALUES (4000, NULL, 0, 0, '层数', 1); INSERT INTO `specification` VALUES (4001, 4000, 1, 0, '单层', 1); INSERT INTO `specification` VALUES (4002, 4000, 1, 0, '双层', 1); INSERT INTO `specification` VALUES (5000, NULL, 0, 0, '颜色', 1); INSERT INTO `specification` VALUES (5001, 5000, 1, 0, '黑色', 1); INSERT INTO `specification` VALUES (5002, 5000, 1, 0, '白色', 1); INSERT INTO `specification` VALUES (6000, NULL, 0, 0, '尺码', 1); INSERT INTO `specification` VALUES (6002, 6000, 1, 0, 'XL', 1); INSERT INTO `specification` VALUES (60001, 6000, 1, 0, 'L', NULL); COMMIT; -- ---------------------------- -- Table structure for sys_captcha -- ---------------------------- DROP TABLE IF EXISTS `sys_captcha`; CREATE TABLE `sys_captcha` ( `uuid` char(36) NOT NULL COMMENT 'uuid', `code` varchar(6) NOT NULL COMMENT '验证码', `expire_time` datetime DEFAULT NULL COMMENT '过期时间', PRIMARY KEY (`uuid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统验证码'; -- ---------------------------- -- Records of sys_captcha -- ---------------------------- BEGIN; INSERT INTO `sys_captcha` VALUES ('0237f28a-ec34-4fee-8977-006ebbf95ac5', 'ced6f', '2018-11-05 18:46:48'); INSERT INTO `sys_captcha` VALUES ('02cf924f-8e21-487e-850a-a7a0ef750c99', 'xbdap', '2018-07-22 22:50:20'); INSERT INTO `sys_captcha` VALUES ('074d3c82-0933-447d-89de-a6b161825b1a', '2ywbg', '2018-07-15 09:42:25'); INSERT INTO `sys_captcha` VALUES ('09277fa4-f968-4f1a-86c0-74e58a6e61a0', '53ea6', '2018-11-05 19:01:34'); INSERT INTO `sys_captcha` VALUES ('0c4b3a17-0165-422d-81a1-1c4059b464fe', 'f2n74', '2018-06-28 20:24:12'); INSERT INTO `sys_captcha` VALUES ('0d31f5c3-4e26-4b61-8591-06e36adfa333', 'fxdae', '2018-10-16 16:04:00'); INSERT INTO `sys_captcha` VALUES ('0f0a62d9-42bb-4c34-8a86-7dddb33d83ae', 'xa6e5', '2018-11-07 14:31:51'); INSERT INTO `sys_captcha` VALUES ('10bf963d-8181-4363-8811-1dad41dbdd90', '65b75', '2018-11-06 11:58:01'); INSERT INTO `sys_captcha` VALUES ('11ffc9c8-3d21-4964-858f-a5e659ddb690', '4fp6m', '2018-11-07 14:29:09'); INSERT INTO `sys_captcha` VALUES ('1473dcb4-b628-442c-8163-6524446d6247', '87n4e', '2018-11-05 18:30:10'); INSERT INTO `sys_captcha` VALUES ('19e2562f-3435-4232-84a3-f8fc64798012', 'abn4m', '2018-07-14 18:49:04'); INSERT INTO `sys_captcha` VALUES ('1a674b0d-de68-4f0f-8e90-ecad5d593767', 'ggfmx', '2018-11-05 23:34:19'); INSERT INTO `sys_captcha` VALUES ('1e04937f-72cf-4dde-8a4f-7dd29c17fdb8', 'gngm2', '2018-07-06 22:53:35'); INSERT INTO `sys_captcha` VALUES ('1ef84e8b-d7ba-4c9b-82fd-b21bd81e2264', '32we4', '2018-11-05 18:35:58'); INSERT INTO `sys_captcha` VALUES ('214eca86-3e4f-4cac-8f61-2c87c6f9bbf0', 'nm7fw', '2018-11-18 11:27:37'); INSERT INTO `sys_captcha` VALUES ('22061a0c-8a0b-4106-8e54-81cc048e8dbb', 'pyeym', '2018-11-06 16:54:37'); INSERT INTO `sys_captcha` VALUES ('2ac13e73-9a1a-4147-809c-e2642242a5e3', 'gnd3w', '2018-11-05 18:38:24'); INSERT INTO `sys_captcha` VALUES ('2af60121-2a01-4adc-8975-2637b9172c66', '67d78', '2018-07-23 17:30:45'); INSERT INTO `sys_captcha` VALUES ('2ee265d8-748f-479f-88d1-1d2fad3a1f15', 'ypnxg', '2018-11-06 17:09:06'); INSERT INTO `sys_captcha` VALUES ('2f744fcb-434b-4923-8272-155ab062134f', 'yd27f', '2018-11-02 15:47:27'); INSERT INTO `sys_captcha` VALUES ('33d87873-b6c6-4207-842c-dc378fe83aff', '8f7nm', '2018-07-03 18:21:04'); INSERT INTO `sys_captcha` VALUES ('363064e6-d125-4fee-8634-216e806543f0', '3p2me', '2018-11-05 18:26:58'); INSERT INTO `sys_captcha` VALUES ('371039d9-141e-4a6c-820a-e4bc977edff2', 'xecy6', '2018-07-14 18:49:01'); INSERT INTO `sys_captcha` VALUES ('382fc137-2e1d-4533-8eeb-88604044e893', 'x2fp6', '2018-11-07 14:48:11'); INSERT INTO `sys_captcha` VALUES ('3920cebe-620c-4d58-848d-e55c9df478a9', '5eany', '2018-11-02 15:52:52'); INSERT INTO `sys_captcha` VALUES ('39bfd506-ba47-4946-8bab-000946373d73', '23pa7', '2018-06-30 23:31:13'); INSERT INTO `sys_captcha` VALUES ('3ae28abe-d7c3-43dc-8c32-ef19cc1d9b86', 'pd26e', '2018-07-01 14:38:19'); INSERT INTO `sys_captcha` VALUES ('44b207dc-3b70-45d9-80c2-27c62fb3d173', 'y8366', '2018-07-24 10:09:51'); INSERT INTO `sys_captcha` VALUES ('469aa441-6654-410f-8ab5-88f7396421b2', 'bm7bp', '2018-11-05 18:56:30'); INSERT INTO `sys_captcha` VALUES ('4bd264b6-8ec9-457c-8c18-e36850368387', 'xggy6', '2018-11-05 18:54:53'); INSERT INTO `sys_captcha` VALUES ('527c5f31-99fb-430b-809b-140f0cc8a63b', 'dw2bp', '2018-11-05 19:05:00'); INSERT INTO `sys_captcha` VALUES ('54a6bc1d-265b-47fd-82da-01810da1985a', 'p2m5n', '2018-07-02 10:39:35'); INSERT INTO `sys_captcha` VALUES ('5ba02b9b-975e-4f41-8b36-155e12f4906d', '7yn3x', '2018-07-24 10:08:20'); INSERT INTO `sys_captcha` VALUES ('609b0518-6d96-45e3-8489-004aa35c716b', 'gand2', '2018-11-06 12:58:51'); INSERT INTO `sys_captcha` VALUES ('66bbbdfd-f6e0-4804-88e2-52e65958cf3e', 'n8gfw', '2018-11-07 11:39:23'); INSERT INTO `sys_captcha` VALUES ('6b0bdb20-35dc-4490-8855-59445e95a669', 'gxncf', '2018-11-16 11:24:31'); INSERT INTO `sys_captcha` VALUES ('6df46aa4-222b-4ea6-8b1e-f7bd23d630e2', '3d445', '2018-06-28 20:23:14'); INSERT INTO `sys_captcha` VALUES ('76dc8535-eaf6-43e0-8bb6-4ed74f50c5f8', 'dn8mw', '2018-11-05 18:27:11'); INSERT INTO `sys_captcha` VALUES ('78e43d48-0036-4ba8-87da-112a1be5373a', '6dmp6', '2018-06-28 20:23:12'); INSERT INTO `sys_captcha` VALUES ('7a54f5e1-ce32-4624-8e14-bb73625645c2', '78f74', '2018-11-05 18:27:08'); INSERT INTO `sys_captcha` VALUES ('7e1aacee-b00f-45d7-8d52-5d50cb913da2', '8g8ad', '2018-11-10 17:22:35'); INSERT INTO `sys_captcha` VALUES ('7ee352eb-5229-43d4-819f-9daf09e3103c', 'gacgp', '2018-11-05 18:43:44'); INSERT INTO `sys_captcha` VALUES ('7f86e22b-573c-488a-8a79-8124ca70a727', 'd8dwg', '2018-06-29 11:11:14'); INSERT INTO `sys_captcha` VALUES ('8086f304-0d77-4c36-899a-ae8d2db0d97d', 'wexcw', '2018-07-24 10:10:18'); INSERT INTO `sys_captcha` VALUES ('82e54ce6-133f-4e6e-85d7-48ff70761326', '7ce67', '2018-11-07 15:13:17'); INSERT INTO `sys_captcha` VALUES ('87f048db-e1af-4196-8fcd-d71713be2e16', '67d6b', '2018-11-05 18:56:49'); INSERT INTO `sys_captcha` VALUES ('88322263-b562-4b6e-88ae-5c5126fca95b', '2yxmf', '2018-11-05 18:33:26'); INSERT INTO `sys_captcha` VALUES ('89949020-7480-41e7-8d3f-41d19dac764c', 'w88d3', '2018-11-05 18:27:00'); INSERT INTO `sys_captcha` VALUES ('89fb395e-7452-4e15-850a-7ee474da528e', '3b8bp', '2018-11-05 17:51:44'); INSERT INTO `sys_captcha` VALUES ('8e941b77-bed3-4d53-83be-5870d055bd06', '6dd8n', '2018-11-12 22:35:01'); INSERT INTO `sys_captcha` VALUES ('9392f616-5e89-49c0-87e0-69b15c09c261', '6xyy8', '2018-11-05 18:06:21'); INSERT INTO `sys_captcha` VALUES ('9806d06e-ed31-4bf4-8401-c4d477b48e95', 'cep4x', '2018-11-05 18:49:46'); INSERT INTO `sys_captcha` VALUES ('99052770-e469-42ae-8ce3-48221a129aa6', '5pp45', '2018-11-17 11:31:18'); INSERT INTO `sys_captcha` VALUES ('99848792-9786-4710-8dde-d1426cb37f5b', 'gex76', '2018-11-05 23:16:45'); INSERT INTO `sys_captcha` VALUES ('ac8bd699-c375-4aed-88fb-3da971499e8e', 'ef44c', '2018-11-05 19:01:28'); INSERT INTO `sys_captcha` VALUES ('adb0e3b5-25f0-4409-8970-847135a9c60e', 'ewn2g', '2018-11-07 11:39:23'); INSERT INTO `sys_captcha` VALUES ('b285f163-5e5e-4c0f-8a08-f0c7a057f026', '8edn2', '2018-11-05 19:05:13'); INSERT INTO `sys_captcha` VALUES ('b61873d7-7d6d-4b3e-8074-c51e939439fb', 'efm52', '2018-11-05 18:45:11'); INSERT INTO `sys_captcha` VALUES ('b685ca58-4f23-4b5b-823e-370b70b6e7b2', 'mwepa', '2018-07-24 10:10:13'); INSERT INTO `sys_captcha` VALUES ('be675f04-9038-406a-8762-e0ef0d6ac75a', 'gpgce', '2018-07-23 17:51:53'); INSERT INTO `sys_captcha` VALUES ('c3be4ce5-fe1f-4a36-8961-afc3a6dca1b8', 'nmpw7', '2018-11-06 16:15:56'); INSERT INTO `sys_captcha` VALUES ('c3dcad0b-f787-474f-85eb-70c93cbbef14', '33ymb', '2018-11-05 22:47:15'); INSERT INTO `sys_captcha` VALUES ('c8ffeda1-cccd-4e2f-88eb-3026236787d8', 'fybgw', '2018-11-15 16:57:17'); INSERT INTO `sys_captcha` VALUES ('d124d0a1-8bc5-4abb-8412-7c2b45833e7e', 'w647n', '2018-11-07 11:36:48'); INSERT INTO `sys_captcha` VALUES ('d8da489a-4d20-43a0-8011-06c3cb03e5a7', 'bfad6', '2018-07-24 10:08:19'); INSERT INTO `sys_captcha` VALUES ('da57ce2f-31bf-40fe-82cb-7c641db0e3b6', '4ccmn', '2018-11-05 18:58:43'); INSERT INTO `sys_captcha` VALUES ('dabcd8a6-5396-4f47-8d93-b706680945f9', '5dxy3', '2018-07-24 10:10:14'); INSERT INTO `sys_captcha` VALUES ('debd7673-0133-446c-89ef-1162e3ce592f', '24bpd', '2018-11-05 19:05:05'); INSERT INTO `sys_captcha` VALUES ('e12702b7-4674-4ad6-8647-b093d1658dfa', 'nd3g6', '2018-11-05 23:16:43'); INSERT INTO `sys_captcha` VALUES ('e4efdd94-ba8f-4913-8079-593724cb128f', '6dfgm', '2018-11-05 18:41:22'); INSERT INTO `sys_captcha` VALUES ('e58ab63f-eba0-47d6-8a28-e18cce6a78c1', 'nynp5', '2018-07-06 22:53:23'); INSERT INTO `sys_captcha` VALUES ('ea1bd6a6-b0fc-47db-8b65-8e53a5ce8bac', '8gnyy', '2018-11-05 19:04:59'); INSERT INTO `sys_captcha` VALUES ('ebd9f294-da9b-45e4-840d-4c3940394e32', '7pnb8', '2018-11-07 14:48:14'); INSERT INTO `sys_captcha` VALUES ('ec57530f-0a86-43cd-8b5e-a94d9605003c', '427c3', '2018-11-02 15:53:20'); INSERT INTO `sys_captcha` VALUES ('ed77116b-154d-4a3a-8518-cd2a043f6a88', '6xbpe', '2018-11-05 23:34:00'); INSERT INTO `sys_captcha` VALUES ('efd64084-7c1f-47c0-8720-070ecd300e24', 'd4nn4', '2018-07-24 10:10:24'); INSERT INTO `sys_captcha` VALUES ('f0c02e56-a885-43f0-8685-ea2aa6d0154f', 'am8xc', '2018-11-07 14:31:52'); INSERT INTO `sys_captcha` VALUES ('f3824bc4-bfb6-49e6-85aa-51df50f4812b', 'dd84w', '2018-07-06 22:53:24'); INSERT INTO `sys_captcha` VALUES ('fd0504bc-148a-40a2-8217-3cef39fa5ee5', 'c2bae', '2018-11-05 18:06:23'); INSERT INTO `sys_captcha` VALUES ('fe6f15b8-fe12-4ff5-84eb-88ece23778d3', 'xn5cw', '2018-11-05 19:01:27'); INSERT INTO `sys_captcha` VALUES ('ffb2493a-6e33-4085-80fc-c396518594c8', '444n8', '2018-11-17 11:10:07'); COMMIT; -- ---------------------------- -- Table structure for sys_config -- ---------------------------- DROP TABLE IF EXISTS `sys_config`; CREATE TABLE `sys_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `param_key` varchar(50) DEFAULT NULL COMMENT 'key', `param_value` varchar(2000) DEFAULT NULL COMMENT 'value', `status` tinyint(4) DEFAULT '1' COMMENT '状态 0:隐藏 1:显示', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`), UNIQUE KEY `param_key` (`param_key`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='系统配置信息表'; -- ---------------------------- -- Records of sys_config -- ---------------------------- BEGIN; INSERT INTO `sys_config` (`param_key`, `param_value`, `status`, `remark`) VALUES ('CLOUD_STORAGE_CONFIG_KEY', '{\"aliyunAccessKeyId\":\"\",\"aliyunAccessKeySecret\":\"\",\"aliyunBucketName\":\"\",\"aliyunDomain\":\"\",\"aliyunEndPoint\":\"\",\"aliyunPrefix\":\"\",\"qcloudBucketName\":\"\",\"qcloudDomain\":\"\",\"qcloudPrefix\":\"\",\"qcloudSecretId\":\"\",\"qcloudSecretKey\":\"\",\"qiniuAccessKey\":\"NrgMfABZxWLo5B-YYSjoE8-AZ1EISdi1Z3ubLOeZ\",\"qiniuBucketName\":\"ios-app\",\"qiniuDomain\":\"http://7xqbwh.dl1.z0.glb.clouddn.com\",\"qiniuPrefix\":\"upload\",\"qiniuSecretKey\":\"uIwJHevMRWU0VLxFvgy0tAcOdGqasdtVlJkdy6vV\",\"type\":1}', '0', '云存储配置信息'); COMMIT; -- ---------------------------- -- Table structure for sys_log -- ---------------------------- DROP TABLE IF EXISTS `sys_log`; CREATE TABLE `sys_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL COMMENT '用户名', `operation` varchar(50) DEFAULT NULL COMMENT '用户操作', `method` varchar(200) DEFAULT NULL COMMENT '请求方法', `params` varchar(5000) DEFAULT NULL COMMENT '请求参数', `time` bigint(20) NOT NULL COMMENT '执行时长(毫秒)', `ip` varchar(64) DEFAULT NULL COMMENT 'IP地址', `create_date` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 COMMENT='系统日志'; -- ---------------------------- -- Records of sys_log -- ---------------------------- BEGIN; INSERT INTO `sys_log` VALUES (1, 'admin', '保存菜单', 'io.sdb.modules.sys.controller.SysMenuController.save()', '{\"open\":false,\"attrs\":{\"parent_id\":31,\"name\":\"商品管理\",\"icon\":\"editor\",\"perms\":\"\",\"order_num\":0,\"type\":1,\"url\":\"sys/goods\",\"menu_id\":42},\"modifyFlag\":[]}', 11, '0:0:0:0:0:0:0:1', '2018-06-29 21:38:42'); INSERT INTO `sys_log` VALUES (2, 'admin', '保存菜单', 'io.sdb.modules.sys.controller.SysMenuController.save()', '{\"open\":false,\"attrs\":{\"parent_id\":31,\"name\":\"订单管理\",\"icon\":\"log\",\"perms\":\"\",\"order_num\":0,\"type\":1,\"url\":\"sys/order\",\"menu_id\":43},\"modifyFlag\":[]}', 11, '0:0:0:0:0:0:0:1', '2018-07-03 18:17:24'); INSERT INTO `sys_log` VALUES (3, 'admin', '删除菜单', 'io.sdb.modules.sys.controller.SysMenuController.delete()', '32', 6, '0:0:0:0:0:0:0:1', '2018-07-24 15:08:22'); INSERT INTO `sys_log` VALUES (4, 'admin', '保存用户', 'io.sdb.controller.SysUserController.save()', '{\"roleIdList\":[],\"attrs\":{\"create_user_id\":1,\"password\":\"efb1ab90b4289b76937593c8cf42f06a76610d52abf92fb46e9dd1356fce0b99\",\"salt\":\"C9P3NwRXy89GqM5aMOsf\",\"create_time\":\"Nov 2, 2018 3:46:29 PM\",\"user_id\":2,\"mobile\":\"13112345678\",\"email\":\"123@123.com\",\"username\":\"user1\",\"status\":1},\"modifyFlag\":[]}', 132, '0:0:0:0:0:0:0:1', '2018-11-02 15:46:30'); INSERT INTO `sys_log` VALUES (5, 'admin', '保存角色', 'io.sdb.controller.SysRoleController.save()', '{\"menuIdList\":[19,-666666,1,3],\"attrs\":{\"role_name\":\"roleTest1\",\"create_user_id\":1,\"create_time\":\"Nov 2, 2018 3:47:36 PM\",\"role_id\":1,\"remark\":\"test\"},\"modifyFlag\":[]}', 44, '0:0:0:0:0:0:0:1', '2018-11-02 15:47:37'); INSERT INTO `sys_log` VALUES (6, 'admin', '修改用户', 'io.sdb.controller.SysUserController.update()', '{\"roleIdList\":[1],\"attrs\":{\"create_user_id\":1,\"salt\":\"C9P3NwRXy89GqM5aMOsf\",\"user_id\":2,\"mobile\":\"13112345678\",\"email\":\"123@123.com\",\"username\":\"user1\",\"status\":1},\"modifyFlag\":[]}', 15, '0:0:0:0:0:0:0:1', '2018-11-02 15:47:47'); INSERT INTO `sys_log` VALUES (7, 'admin', '保存菜单', 'io.sdb.controller.SysMenuController.save()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"parent_id\":31,\"name\":\"测试\",\"icon\":\"admin\",\"perms\":\"\",\"order_num\":0,\"type\":1,\"url\":\"/sys/testTable\",\"menu_id\":44}}', 8, '0:0:0:0:0:0:0:1', '2018-11-05 22:34:52'); INSERT INTO `sys_log` VALUES (8, 'admin', '修改菜单', 'io.sdb.controller.SysMenuController.update()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"parent_id\":31,\"name\":\"测试\",\"icon\":\"admin\",\"perms\":\"\",\"order_num\":0,\"type\":1,\"menu_id\":44,\"url\":\"sys/testTable\"}}', 7, '0:0:0:0:0:0:0:1', '2018-11-05 22:35:02'); INSERT INTO `sys_log` VALUES (9, 'admin', '保存菜单', 'io.sdb.controller.SysMenuController.save()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"parent_id\":31,\"name\":\"商品分类\",\"icon\":\"admin\",\"perms\":\"\",\"order_num\":0,\"type\":1,\"url\":\"sys/productCategory\",\"menu_id\":45}}', 6, '0:0:0:0:0:0:0:1', '2018-11-06 12:55:00'); INSERT INTO `sys_log` VALUES (10, 'admin', '保存菜单', 'io.sdb.controller.SysMenuController.save()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"parent_id\":31,\"name\":\"规格管理\",\"icon\":\"admin\",\"perms\":\"\",\"order_num\":0,\"type\":1,\"url\":\"sys/specification\",\"menu_id\":46}}', 3, '0:0:0:0:0:0:0:1', '2018-11-06 12:55:36'); INSERT INTO `sys_log` VALUES (11, 'admin', '删除菜单', 'io.sdb.controller.SysMenuController.delete()', '44', 27, '0:0:0:0:0:0:0:1', '2018-11-06 15:07:05'); INSERT INTO `sys_log` VALUES (12, 'admin', '修改菜单', 'io.sdb.controller.SysMenuController.update()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"parent_id\":31,\"name\":\"商品分类\",\"icon\":\"log\",\"perms\":\"\",\"order_num\":0,\"type\":1,\"menu_id\":45,\"url\":\"sys/productCategory\"}}', 13, '0:0:0:0:0:0:0:1', '2018-11-06 15:07:26'); INSERT INTO `sys_log` VALUES (13, 'admin', '修改菜单', 'io.sdb.controller.SysMenuController.update()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"parent_id\":31,\"name\":\"订单管理\",\"icon\":\"bianji\",\"perms\":\"\",\"order_num\":0,\"type\":1,\"menu_id\":43,\"url\":\"sys/order\"}}', 4, '0:0:0:0:0:0:0:1', '2018-11-06 15:07:51'); INSERT INTO `sys_log` VALUES (14, 'admin', '修改菜单', 'io.sdb.controller.SysMenuController.update()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"parent_id\":31,\"name\":\"规格管理\",\"icon\":\"menu\",\"perms\":\"\",\"order_num\":0,\"type\":1,\"menu_id\":46,\"url\":\"sys/specification\"}}', 6, '0:0:0:0:0:0:0:1', '2018-11-06 15:08:02'); INSERT INTO `sys_log` VALUES (15, 'admin', '立即执行任务', 'io.sdb.controller.ScheduleJobController.run()', '[1]', 174, '0:0:0:0:0:0:0:1', '2018-11-06 15:11:02'); INSERT INTO `sys_log` VALUES (16, 'admin', '修改定时任务', 'io.sdb.controller.ScheduleJobController.update()', '{\"modifyFlag\":[],\"attrs\":{\"bean_name\":\"testTask\",\"method_name\":\"test\",\"cron_expression\":\"0 0/30 * * * ?\",\"job_id\":1,\"remark\":\"有参数测试\",\"params\":\"sdb\",\"status\":0}}', 343, '0:0:0:0:0:0:0:1', '2018-11-06 15:11:14'); INSERT INTO `sys_log` VALUES (17, 'admin', '删除角色', 'io.sdb.controller.SysRoleController.delete()', '[1]', 68, '0:0:0:0:0:0:0:1', '2018-11-06 16:49:06'); INSERT INTO `sys_log` VALUES (18, 'admin', '删除用户', 'io.sdb.controller.SysUserController.delete()', '[2]', 11, '0:0:0:0:0:0:0:1', '2018-11-06 16:49:14'); INSERT INTO `sys_log` VALUES (19, 'admin', '修改用户', 'io.sdb.controller.SysUserController.update()', '{\"roleIdList\":[],\"modifyFlag\":[],\"attrs\":{\"create_user_id\":1,\"salt\":\"YzcmCZNvbXocrsz9dm8e\",\"user_id\":1,\"mobile\":\"13612345678\",\"email\":\"root@sdb.io\",\"username\":\"admin\",\"status\":1}}', 182, '0:0:0:0:0:0:0:1', '2018-11-06 16:49:22'); INSERT INTO `sys_log` VALUES (20, 'admin', '保存菜单', 'io.sdb.controller.SysMenuController.save()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"parent_id\":31,\"name\":\"测试模块\",\"icon\":\"admin\",\"perms\":\"\",\"order_num\":0,\"type\":1,\"url\":\"sys/testTable\",\"menu_id\":47}}', 21, '0:0:0:0:0:0:0:1', '2018-11-07 00:15:43'); INSERT INTO `sys_log` VALUES (21, 'admin', '保存规格', 'io.sdb.controller.SysSpecificationController.save()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"name\":\"test\",\"id\":7000,\"type\":1,\"order\":0}}', 9, '0:0:0:0:0:0:0:1', '2018-11-14 23:28:55'); INSERT INTO `sys_log` VALUES (22, 'admin', '保存商品类目', 'io.sdb.controller.SysProductCategoryController.save()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"tree_path\":\",40000,\",\"name\":\"test\",\"id\":40000,\"order\":0}}', 7, '0:0:0:0:0:0:0:1', '2018-11-14 23:29:34'); INSERT INTO `sys_log` VALUES (23, 'admin', '保存商品类目', 'io.sdb.controller.SysProductCategoryController.save()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"tree_path\":\",40000,40001,\",\"parent_id\":40000,\"name\":\"twst1\",\"id\":40001,\"order\":0}}', 2952, '0:0:0:0:0:0:0:1', '2018-11-14 23:32:23'); INSERT INTO `sys_log` VALUES (24, 'admin', '保存商品类目', 'io.sdb.controller.SysProductCategoryController.save()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"tree_path\":\",40000,40001,400001,\",\"parent_id\":40001,\"name\":\"testest\",\"id\":400001,\"order\":0}}', 9, '0:0:0:0:0:0:0:1', '2018-11-14 23:33:13'); INSERT INTO `sys_log` VALUES (25, 'admin', '保存规格', 'io.sdb.controller.SysSpecificationController.save()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"name\":\"test\",\"id\":90000,\"type\":1,\"order\":0}}', 5, '0:0:0:0:0:0:0:1', '2018-11-16 11:20:23'); INSERT INTO `sys_log` VALUES (26, 'admin', '删除规格', 'io.sdb.controller.SysSpecificationController.delete()', '90000', 27, '0:0:0:0:0:0:0:1', '2018-11-16 11:20:29'); INSERT INTO `sys_log` VALUES (27, 'admin', '删除规格', 'io.sdb.controller.SysSpecificationController.delete()', '7000', 7, '0:0:0:0:0:0:0:1', '2018-11-16 11:25:16'); INSERT INTO `sys_log` VALUES (28, 'admin', '删除规格', 'io.sdb.controller.SysSpecificationController.delete()', '6001', 27, '0:0:0:0:0:0:0:1', '2018-11-16 11:50:45'); INSERT INTO `sys_log` VALUES (29, 'admin', '保存规格', 'io.sdb.controller.SysSpecificationController.save()', '{\"open\":false,\"modifyFlag\":[],\"attrs\":{\"parent_id\":6000,\"name\":\"L\",\"id\":60001,\"type\":1,\"order\":0}}', 5, '0:0:0:0:0:0:0:1', '2018-11-16 11:50:54'); COMMIT; -- ---------------------------- -- Table structure for sys_menu -- ---------------------------- DROP TABLE IF EXISTS `sys_menu`; CREATE TABLE `sys_menu` ( `menu_id` bigint(20) NOT NULL AUTO_INCREMENT, `parent_id` bigint(20) DEFAULT NULL COMMENT '父菜单ID,一级菜单为0', `name` varchar(50) DEFAULT NULL COMMENT '菜单名称', `url` varchar(200) DEFAULT NULL COMMENT '菜单URL', `perms` varchar(500) DEFAULT NULL COMMENT '授权(多个用逗号分隔,如:user:list,user:create)', `type` int(11) DEFAULT NULL COMMENT '类型 0:目录 1:菜单 2:按钮', `icon` varchar(50) DEFAULT NULL COMMENT '菜单图标', `order_num` int(11) DEFAULT NULL COMMENT '排序', PRIMARY KEY (`menu_id`) ) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8 COMMENT='菜单管理'; -- ---------------------------- -- Records of sys_menu -- ---------------------------- BEGIN; INSERT INTO `sys_menu` VALUES (1, 0, '系统管理', NULL, NULL, 0, 'system', 0); INSERT INTO `sys_menu` VALUES (2, 1, '管理员列表', 'sys/user', NULL, 1, 'admin', 1); INSERT INTO `sys_menu` VALUES (3, 1, '角色管理', 'sys/role', NULL, 1, 'role', 2); INSERT INTO `sys_menu` VALUES (4, 1, '菜单管理', 'sys/menu', NULL, 1, 'menu', 3); INSERT INTO `sys_menu` VALUES (5, 1, 'SQL监控', 'http://localhost:8080/sdb/druid/sql.html', NULL, 1, 'sql', 4); INSERT INTO `sys_menu` VALUES (6, 1, '定时任务', 'job/schedule', NULL, 1, 'job', 5); INSERT INTO `sys_menu` VALUES (7, 6, '查看', NULL, 'sys:schedule:list,sys:schedule:info', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (8, 6, '新增', NULL, 'sys:schedule:save', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (9, 6, '修改', NULL, 'sys:schedule:update', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (10, 6, '删除', NULL, 'sys:schedule:delete', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (11, 6, '暂停', NULL, 'sys:schedule:pause', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (12, 6, '恢复', NULL, 'sys:schedule:resume', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (13, 6, '立即执行', NULL, 'sys:schedule:run', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (14, 6, '日志列表', NULL, 'sys:schedule:log', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (15, 2, '查看', NULL, 'sys:user:list,sys:user:info', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (16, 2, '新增', NULL, 'sys:user:save,sys:role:select', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (17, 2, '修改', NULL, 'sys:user:update,sys:role:select', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (18, 2, '删除', NULL, 'sys:user:delete', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (19, 3, '查看', NULL, 'sys:role:list,sys:role:info', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (20, 3, '新增', NULL, 'sys:role:save,sys:menu:list', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (21, 3, '修改', NULL, 'sys:role:update,sys:menu:list', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (22, 3, '删除', NULL, 'sys:role:delete', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (23, 4, '查看', NULL, 'sys:menu:list,sys:menu:info', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (24, 4, '新增', NULL, 'sys:menu:save,sys:menu:select', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (25, 4, '修改', NULL, 'sys:menu:update,sys:menu:select', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (26, 4, '删除', NULL, 'sys:menu:delete', 2, NULL, 0); INSERT INTO `sys_menu` VALUES (27, 1, '参数管理', 'sys/config', 'sys:config:list,sys:config:info,sys:config:save,sys:config:update,sys:config:delete', 1, 'config', 6); INSERT INTO `sys_menu` VALUES (29, 1, '系统日志', 'sys/log', 'sys:log:list', 1, 'log', 7); INSERT INTO `sys_menu` VALUES (30, 1, '文件上传', 'oss/oss', 'sys:oss:all', 1, 'oss', 6); INSERT INTO `sys_menu` VALUES (31, 0, '业务管理', '', '', 0, 'config', 0); INSERT INTO `sys_menu` VALUES (42, 31, '商品管理', 'sys/goods', '', 1, 'editor', 0); INSERT INTO `sys_menu` VALUES (43, 31, '订单管理', 'sys/order', '', 1, 'bianji', 0); INSERT INTO `sys_menu` VALUES (45, 31, '商品分类', 'sys/productCategory', '', 1, 'log', 0); INSERT INTO `sys_menu` VALUES (46, 31, '规格管理', 'sys/specification', '', 1, 'menu', 0); COMMIT; -- ---------------------------- -- Table structure for sys_oss -- ---------------------------- DROP TABLE IF EXISTS `sys_oss`; CREATE TABLE `sys_oss` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `url` varchar(200) DEFAULT NULL COMMENT 'URL地址', `create_date` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8 COMMENT='文件上传'; -- ---------------------------- -- Records of sys_oss -- ---------------------------- BEGIN; INSERT INTO `sys_oss` VALUES (1, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180629/3c2f7aab969a4135959cc0b677d54261.png', '2018-06-29 19:42:22'); INSERT INTO `sys_oss` VALUES (2, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180629/38f5410762dd4a5da920719aa615833a.png', '2018-06-29 19:58:07'); INSERT INTO `sys_oss` VALUES (3, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180629/87e37afded2c46c09903e6e58b668966.png', '2018-06-29 19:58:16'); INSERT INTO `sys_oss` VALUES (4, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180629/012c4416268f42978ec19bd3e3f1c43c.html', '2018-06-29 19:58:20'); INSERT INTO `sys_oss` VALUES (5, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180629/83851558fc864691bfd7326fc03f3052.png', '2018-06-29 19:58:26'); INSERT INTO `sys_oss` VALUES (6, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180629/9a9ffdbbed3d42de9a9ab4a34c391ad7.png', '2018-06-29 20:05:14'); INSERT INTO `sys_oss` VALUES (7, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180629/b3e2e9af44b148b2bf3fbaa9455c6205.png', '2018-06-29 20:05:17'); INSERT INTO `sys_oss` VALUES (8, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180630/49ba93bfaedb4dfd832376d51525bb7b.png', '2018-06-30 23:26:05'); INSERT INTO `sys_oss` VALUES (9, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180630/82336d624e114c4c9a3fdff24022f840.png', '2018-06-30 23:26:07'); INSERT INTO `sys_oss` VALUES (10, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180630/906f19033e42485690928c34115a3975.png', '2018-06-30 23:26:11'); INSERT INTO `sys_oss` VALUES (11, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180630/7c6985859c8a456b8d261908a3c4165c.png', '2018-06-30 23:28:19'); INSERT INTO `sys_oss` VALUES (12, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180630/f03418037b9b4cdf811b9e1577a9dfdf.png', '2018-06-30 23:28:21'); INSERT INTO `sys_oss` VALUES (13, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180630/48963192c57c476c8a3fbdea0bfdb2c7.png', '2018-06-30 23:28:24'); INSERT INTO `sys_oss` VALUES (14, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180630/dc024ffbc33c481eb1d0dabcdf48d744.png', '2018-06-30 23:55:46'); INSERT INTO `sys_oss` VALUES (15, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180630/d9edde508a614fbfb6f90bc312fed5bf.png', '2018-06-30 23:55:48'); INSERT INTO `sys_oss` VALUES (16, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180630/023a4b18af054a689ec3009c0fd0115a.png', '2018-06-30 23:55:50'); INSERT INTO `sys_oss` VALUES (17, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/f9f1aed895f04194b4608aa4a95a4a71.png', '2018-07-01 14:31:54'); INSERT INTO `sys_oss` VALUES (18, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/81e53bbce48c4474ae2fdfc0634617de.png', '2018-07-01 14:31:55'); INSERT INTO `sys_oss` VALUES (19, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/517d4f86a3094b5599bf7c7f0642eef9.png', '2018-07-01 14:31:58'); INSERT INTO `sys_oss` VALUES (20, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/67bd032afec44abbb618ccad836b0d18.png', '2018-07-01 14:33:14'); INSERT INTO `sys_oss` VALUES (21, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/ac0ee9b363074010a7c87266783325fd.png', '2018-07-01 14:33:17'); INSERT INTO `sys_oss` VALUES (22, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/ba75d9e09e654adebaed7a30e5a5427b.png', '2018-07-01 14:33:58'); INSERT INTO `sys_oss` VALUES (23, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/45acdff15d4240e290f37ddb4f2fc6cb.png', '2018-07-01 14:34:01'); INSERT INTO `sys_oss` VALUES (24, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/016a92bb143f43a19d530015e0a79787.png', '2018-07-01 14:34:05'); INSERT INTO `sys_oss` VALUES (25, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/f8444e8ebf7948f399849995604d83cf.png', '2018-07-01 14:57:10'); INSERT INTO `sys_oss` VALUES (26, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/fe804e3ab06045cab0fd30985aeb2c95.png', '2018-07-01 14:57:12'); INSERT INTO `sys_oss` VALUES (27, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/a763d391e1f5454693948da332fa5085.png', '2018-07-01 14:57:15'); INSERT INTO `sys_oss` VALUES (28, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/24c1712687654c8ebcd7b3d04d5dd871.png', '2018-07-01 15:16:28'); INSERT INTO `sys_oss` VALUES (29, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/1a26dcc306a749678d09208c3d561073.png', '2018-07-01 15:16:31'); INSERT INTO `sys_oss` VALUES (30, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/6e967cef777b44dba4262fdb344ee73c.png', '2018-07-01 19:27:25'); INSERT INTO `sys_oss` VALUES (31, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/92dd35cb621341b99fc47c7206dcddc3.png', '2018-07-01 19:27:27'); INSERT INTO `sys_oss` VALUES (32, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/a5889d9116574ca09696c9a3bbb1b59a.png', '2018-07-01 21:23:52'); INSERT INTO `sys_oss` VALUES (33, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180701/f72226f394a34403b1bd1d0ffdb8d608.png', '2018-07-01 21:23:55'); INSERT INTO `sys_oss` VALUES (34, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180702/1c441a7a78f74dc8b29d0aa448f94f5c.png', '2018-07-02 11:10:24'); INSERT INTO `sys_oss` VALUES (35, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180702/1a61bf8a8fac4f479b1ece806c957a0a.png', '2018-07-02 11:10:24'); INSERT INTO `sys_oss` VALUES (36, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180702/20c9cfd5f6184a9cb6d4f35e793a83bf.png', '2018-07-02 12:10:57'); INSERT INTO `sys_oss` VALUES (37, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180702/d7bf4c7dfe124bd78049d35346f0f4da.png', '2018-07-02 12:11:01'); INSERT INTO `sys_oss` VALUES (38, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180702/333fdf232c084feca7c6ba2e3bea3ff2.png', '2018-07-02 13:01:20'); INSERT INTO `sys_oss` VALUES (39, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180702/1da89288b5bb4d6f84f8715b51f8d8f3.png', '2018-07-02 13:01:22'); INSERT INTO `sys_oss` VALUES (40, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/bed5372b8c8b4ae2be33bc8f44119be8.png', '2018-07-15 13:30:32'); INSERT INTO `sys_oss` VALUES (41, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180715/6c15e0540a9f44c886ba1d84f72e5518.png', '2018-07-15 13:30:35'); INSERT INTO `sys_oss` VALUES (42, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180722/e6d031c8512444b7a1dd34109fadf2db.png', '2018-07-22 22:48:15'); INSERT INTO `sys_oss` VALUES (43, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180722/fe90c1ad741e4a279d5af0b7cb827718.png', '2018-07-22 22:48:18'); INSERT INTO `sys_oss` VALUES (44, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/a7df4e9e907844e3bfa3acced140beef.png', '2018-07-23 17:26:48'); INSERT INTO `sys_oss` VALUES (45, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/eecdfc1408884b94b52d724367b8be85.png', '2018-07-23 17:27:12'); INSERT INTO `sys_oss` VALUES (46, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/28415cbb9402424b9434fd1dd11110d1.png', '2018-07-23 17:27:31'); INSERT INTO `sys_oss` VALUES (47, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/84f2c3f4b1f64596a6d9dfd36e491453.png', '2018-07-23 19:55:52'); INSERT INTO `sys_oss` VALUES (48, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/14805ee1c1654e9ca036d2dedf0508f4.png', '2018-07-23 19:55:52'); INSERT INTO `sys_oss` VALUES (49, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/26e3e08da3c846fd8bd94304e1ff7ce3.png', '2018-07-23 21:01:40'); INSERT INTO `sys_oss` VALUES (50, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20180723/455846e60ba647679b1c828294ac3a64.png', '2018-07-23 21:01:40'); INSERT INTO `sys_oss` VALUES (51, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/938d5ecaddb64f3d9814dc12661944de.jpg', '2018-11-06 11:56:18'); INSERT INTO `sys_oss` VALUES (52, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/ff3519dbee58439b990191232ddad9b3.jpg', '2018-11-06 11:56:18'); INSERT INTO `sys_oss` VALUES (53, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/30b78a66048f4d3d9424fe93c314d17c.jpg', '2018-11-06 23:47:37'); INSERT INTO `sys_oss` VALUES (54, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181106/86c441b3c0b14d92b6c70e5667709e6f.jpg', '2018-11-06 23:47:37'); INSERT INTO `sys_oss` VALUES (55, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/1b33ee88ab1e4ca2b03b3d13bc8e18d2.jpg', '2018-11-10 17:45:29'); INSERT INTO `sys_oss` VALUES (56, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/6e6d0b3e3b1a49599dfdcf77db948ce5.jpg', '2018-11-10 17:45:31'); INSERT INTO `sys_oss` VALUES (57, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/d4d7635cefae4837904a23a4ccbc3cf6.jpg', '2018-11-10 22:03:36'); INSERT INTO `sys_oss` VALUES (58, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181110/4721027eea524385ae6c5905d616e740.jpg', '2018-11-10 22:03:38'); INSERT INTO `sys_oss` VALUES (59, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181116/f59644753ad549bfaf1a07339d17156b.jpg', '2018-11-16 11:24:41'); INSERT INTO `sys_oss` VALUES (60, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181116/bfa71726e2274fa4b1713eff65da8aa3.jpg', '2018-11-16 11:24:43'); INSERT INTO `sys_oss` VALUES (61, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181117/d95067c299aa4dd6b984f28bc440719e.jpg', '2018-11-17 11:28:09'); INSERT INTO `sys_oss` VALUES (62, 'http://yjjtest.oss-cn-shanghai.aliyuncs.com/volunteer/20181117/d3e7037d76024e6e93dec1e8610a902f.jpg', '2018-11-17 11:28:11'); COMMIT; -- ---------------------------- -- Table structure for sys_role -- ---------------------------- DROP TABLE IF EXISTS `sys_role`; CREATE TABLE `sys_role` ( `role_id` bigint(20) NOT NULL AUTO_INCREMENT, `role_name` varchar(100) DEFAULT NULL COMMENT '角色名称', `remark` varchar(100) DEFAULT NULL COMMENT '备注', `create_user_id` bigint(20) DEFAULT NULL COMMENT '创建者ID', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色'; -- ---------------------------- -- Table structure for sys_role_menu -- ---------------------------- DROP TABLE IF EXISTS `sys_role_menu`; CREATE TABLE `sys_role_menu` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `role_id` bigint(20) DEFAULT NULL COMMENT '角色ID', `menu_id` bigint(20) DEFAULT NULL COMMENT '菜单ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色与菜单对应关系'; -- ---------------------------- -- Table structure for sys_user -- ---------------------------- DROP TABLE IF EXISTS `sys_user`; CREATE TABLE `sys_user` ( `user_id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL COMMENT '用户名', `password` varchar(100) DEFAULT NULL COMMENT '密码', `salt` varchar(20) DEFAULT NULL COMMENT '盐', `email` varchar(100) DEFAULT NULL COMMENT '邮箱', `mobile` varchar(100) DEFAULT NULL COMMENT '手机号', `status` tinyint(4) DEFAULT NULL COMMENT '状态 0:禁用 1:正常', `create_user_id` bigint(20) DEFAULT NULL COMMENT '创建者ID', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`user_id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='系统用户'; -- ---------------------------- -- Records of sys_user -- ---------------------------- BEGIN; INSERT INTO `sys_user` VALUES (1, 'admin', '9ec9750e709431dad22365cabc5c625482e574c74adaebba7dd02f1129e4ce1d', 'YzcmCZNvbXocrsz9dm8e', 'root@sdb.io', '13612345678', 1, 1, '2016-11-11 11:11:11'); COMMIT; -- ---------------------------- -- Table structure for sys_user_role -- ---------------------------- DROP TABLE IF EXISTS `sys_user_role`; CREATE TABLE `sys_user_role` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` bigint(20) DEFAULT NULL COMMENT '用户ID', `role_id` bigint(20) DEFAULT NULL COMMENT '角色ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户与角色对应关系'; -- ---------------------------- -- Table structure for sys_user_token -- ---------------------------- DROP TABLE IF EXISTS `sys_user_token`; CREATE TABLE `sys_user_token` ( `user_id` bigint(20) NOT NULL, `token` varchar(100) NOT NULL COMMENT 'token', `expire_time` datetime DEFAULT NULL COMMENT '过期时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`user_id`), UNIQUE KEY `token` (`token`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统用户Token'; -- ---------------------------- -- Records of sys_user_token -- ---------------------------- BEGIN; INSERT INTO `sys_user_token` VALUES (1, '4705d04808b088f13a3a4d0256783323', '2018-11-18 23:23:17', '2018-11-18 11:23:17'); COMMIT; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `user_id` varchar(50) NOT NULL COMMENT 'ID', `username` varchar(50) DEFAULT NULL COMMENT '用户名', `ma_open_id` varchar(100) DEFAULT NULL COMMENT '小程序openid', `union_id` varchar(100) DEFAULT NULL COMMENT '开放平台id', `nickname` varchar(50) DEFAULT NULL COMMENT '昵称', `name` varchar(50) DEFAULT NULL COMMENT '真实姓名', `email` varchar(50) DEFAULT NULL COMMENT '邮箱', `gender` smallint(1) DEFAULT NULL COMMENT '性别 1-男 2-女', `area_id` smallint(10) DEFAULT NULL COMMENT '地区id', `language` smallint(1) DEFAULT NULL COMMENT '语言 1-中文 2-英文', `volunteer` smallint(4) DEFAULT NULL COMMENT '是否志愿者', `avatar` varchar(255) DEFAULT NULL COMMENT '头像', `mobile` varchar(20) DEFAULT NULL COMMENT '手机号', `password` varchar(64) DEFAULT NULL COMMENT '密码', `update_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`user_id`), UNIQUE KEY `idx_username` (`username`) USING BTREE, KEY `idx_maopenid` (`ma_open_id`), KEY `idx_unionid` (`union_id`), KEY `idx_createdate` (`create_date`), KEY `idx_nickname` (`nickname`), KEY `idx_name` (`name`), KEY `idex_mobile` (`mobile`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户'; -- ---------------------------- -- Records of user -- ---------------------------- BEGIN; INSERT INTO `user` VALUES ('20181106510403', NULL, 'oYfrD5NY6rOQ0oF9O6vCWVgWGSsE', NULL, 'dick😊', NULL, NULL, 1, NULL, 1, NULL, 'https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83epC7EgVMXrNCJ8S4dribQ8qsEuN96Vwkj8CwoLjXKGJwNfa75BxwkzhotBicHORLo1ORbojArcUFUUg/132', NULL, NULL, '2018-11-06 10:33:57', '2018-11-06 10:33:57'); INSERT INTO `user` VALUES ('20181114510504', NULL, 'oYfrD5GYkQfQEbiTqPkANKCUXT7Y', 'o_lgh1XaLBvNYsrTRUgJVcFL5YnE', '---杨先生。', NULL, NULL, 1, NULL, 1, NULL, 'https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTJ9PZJVYXlalb519EHqgHGqjnZCpHVPtT036asYcSUSSNpDylB2VecfhFWmZ5v1J3cy2Mg248cib5w/132', NULL, NULL, '2018-11-14 20:57:00', '2018-11-14 20:57:00'); INSERT INTO `user` VALUES ('20181114510605', NULL, 'oYfrD5JlBQdQOUHjEYz88FHJyI40', 'o_lgh1XkS2anaHNdPzWNWY9r5x_w', 'little fish。🐳', NULL, NULL, 2, NULL, 1, NULL, 'https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq7YJ6yJNJt1jbicRziaTg6yCBCMq2dRHqAibcibHcrqWxZKAJZQBHIAs0IRUNlnKSMnhxrY7mbHicxHAw/132', NULL, NULL, '2018-11-14 22:35:39', '2018-11-14 22:35:39'); COMMIT; SET FOREIGN_KEY_CHECKS = 1; ================================================ FILE: pom-war.xml ================================================ 4.0.0 io.sdb sdb 1.0.0 war war包对应的pom,打war包,执行【mvn clean package -f pom-war.xml】 org.springframework.boot spring-boot-starter-parent 1.5.10.RELEASE UTF-8 UTF-8 1.8 1.0.5 2.1.9 5.1.38 1.1.3 2.3.0 2.6 1.3.1 2.5 1.10 1.10 1.3.2 0.7.0 0.0.9 [7.2.0, 7.2.99] 2.5.0 4.4 2.2.2 2.9.9 org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat provided org.springframework.boot spring-boot-starter-aop org.springframework spring-context-support org.springframework.boot spring-boot-starter-data-redis org.springframework.boot spring-boot-configuration-processor true com.baomidou mybatisplus-spring-boot-starter ${mybatisplus.spring.boot.version} com.baomidou mybatis-plus ${mybatisplus.version} mysql mysql-connector-java ${mysql.version} com.alibaba druid-spring-boot-starter ${druid.version} org.quartz-scheduler quartz ${quartz.version} com.mchange c3p0 commons-lang commons-lang ${commons.lang.version} commons-fileupload commons-fileupload ${commons.fileupload.version} commons-io commons-io ${commons.io.version} commons-codec commons-codec ${commons.codec.version} commons-configuration commons-configuration ${commons.configuration.version} org.apache.shiro shiro-core ${shiro.version} org.apache.shiro shiro-spring ${shiro.version} io.jsonwebtoken jjwt ${jwt.version} com.github.axet kaptcha ${kaptcha.version} io.springfox springfox-swagger2 ${swagger.version} io.springfox springfox-swagger-ui ${swagger.version} com.qiniu qiniu-java-sdk ${qiniu.version} com.aliyun.oss aliyun-sdk-oss ${aliyun.oss.version} com.qcloud cos_api ${qcloud.cos.version} org.slf4j slf4j-log4j12 joda-time joda-time ${joda.time.version} ${artifactId} org.springframework.boot spring-boot-maven-plugin true org.apache.maven.plugins maven-surefire-plugin true public aliyun nexus http://maven.aliyun.com/nexus/content/groups/public/ true public aliyun nexus http://maven.aliyun.com/nexus/content/groups/public/ true false ================================================ FILE: pom.xml ================================================ 4.0.0 io.sdb sdb 1.0.0 jar sdb mall org.springframework.boot spring-boot-starter-parent 2.0.0.RELEASE UTF-8 UTF-8 1.8 1.0.5 2.1.9 5.1.38 4.0 11.2.0.3 1.1.9 2.3.0 3.7 1.2.2 2.5 1.10 1.10 1.3.2 0.7.0 0.0.9 [7.2.0, 7.2.99] 2.8.3 4.4 2.8.0 2.9.9 1.2.45 /work/sdb ${project.artifactId}-${project.version}.jar 192.168.1.10:22 root 123456 0.4.14 registry.cn-hangzhou.aliyuncs.com/tcb java:8 false 8080 com.alibaba fastjson ${fastjson.version} org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-mail org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-aop org.springframework spring-context-support org.springframework.boot spring-boot-starter-data-redis org.springframework.boot spring-boot-configuration-processor true org.springframework.boot spring-boot-starter-jdbc 1.5.7.RELEASE compile mysql mysql-connector-java ${mysql.version} com.oracle ojdbc6 ${oracle.version} com.microsoft.sqlserver sqljdbc4 ${mssql.version} org.postgresql postgresql com.alibaba druid-spring-boot-starter ${druid.version} org.quartz-scheduler quartz ${quartz.version} com.mchange c3p0 org.apache.commons commons-lang3 ${commons.lang.version} commons-fileupload commons-fileupload ${commons.fileupload.version} commons-io commons-io ${commons.io.version} commons-codec commons-codec ${commons.codec.version} commons-configuration commons-configuration ${commons.configuration.version} org.apache.shiro shiro-core ${shiro.version} org.apache.shiro shiro-spring ${shiro.version} io.jsonwebtoken jjwt ${jwt.version} com.github.axet kaptcha ${kaptcha.version} io.springfox springfox-swagger2 ${swagger.version} io.springfox springfox-swagger-ui ${swagger.version} com.qiniu qiniu-java-sdk ${qiniu.version} com.aliyun.oss aliyun-sdk-oss ${aliyun.oss.version} com.qcloud cos_api ${qcloud.cos.version} org.slf4j slf4j-log4j12 joda-time joda-time ${joda.time.version} com.jfinal jfinal 3.5 cn.hutool hutool-all 4.0.12 org.projectlombok lombok org.slf4j slf4j-api 1.7.7 com.googlecode.log4jdbc log4jdbc 1.2 org.apache.directory.studio org.apache.commons.collections 3.2.1 org.springframework.boot spring-boot-starter-actuator com.github.binarywang weixin-java-mp 2.9.0 com.github.binarywang weixin-java-miniapp 3.0.0 cn.springboot best-pay-sdk 1.2.0 com.alipay.sdk alipay-sdk-java 3.3.49.ALL ${project.artifactId} org.apache.maven.wagon wagon-ssh 2.8 org.springframework.boot spring-boot-maven-plugin true org.apache.maven.plugins maven-surefire-plugin true org.codehaus.mojo wagon-maven-plugin 1.0 target/${pack-name} pkill -f ${pack-name} rm -f ${service-path}/sdb.log ${service-path}/sdb.log 2>&1 & ]]> true com.spotify docker-maven-plugin ${docker.plugin.version} package build yjjdick ${docker.image.push} ${docker.image.prefix}/${project.artifactId} ${docker.image.base} latest ${docker.expose} ["java", "-jar", "/${project.build.finalName}.jar"] / ${project.build.directory} ${project.build.finalName}.jar docker-aliyun cn-hangzhou.aliyuncs.com public aliyun nexus http://maven.aliyun.com/nexus/content/groups/public/ true public aliyun nexus http://maven.aliyun.com/nexus/content/groups/public/ true false ================================================ FILE: sdb.iml ================================================ ================================================ FILE: src/main/java/com/baidu/ueditor/ActionEnter.java ================================================ package com.baidu.ueditor; import java.util.Map; import javax.servlet.http.HttpServletRequest; import com.baidu.ueditor.define.ActionMap; import com.baidu.ueditor.define.AppInfo; import com.baidu.ueditor.define.BaseState; import com.baidu.ueditor.define.State; import com.baidu.ueditor.hunter.FileManager; import com.baidu.ueditor.hunter.ImageHunter; import com.baidu.ueditor.upload.Uploader; public class ActionEnter { private HttpServletRequest request = null; private String rootPath = null; private String contextPath = null; private String actionType = null; private ConfigManager configManager = null; public ActionEnter ( HttpServletRequest request, String rootPath ) { this.request = request; this.rootPath = rootPath; this.actionType = request.getParameter( "action" ); this.contextPath = request.getContextPath(); this.configManager = ConfigManager.getInstance( this.rootPath, this.contextPath, request.getRequestURI() ); } public String exec () { String callbackName = this.request.getParameter("callback"); if ( callbackName != null ) { if ( !validCallbackName( callbackName ) ) { return new BaseState( false, AppInfo.ILLEGAL ).toJSONString(); } return callbackName+"("+this.invoke()+");"; } else { return this.invoke(); } } public String invoke() { if ( actionType == null || !ActionMap.mapping.containsKey( actionType ) ) { return new BaseState( false, AppInfo.INVALID_ACTION ).toJSONString(); } if ( this.configManager == null || !this.configManager.valid() ) { return new BaseState( false, AppInfo.CONFIG_ERROR ).toJSONString(); } State state = null; int actionCode = ActionMap.getType( this.actionType ); Map conf = null; switch ( actionCode ) { case ActionMap.CONFIG: return this.configManager.getAllConfig().toString(); case ActionMap.UPLOAD_IMAGE: case ActionMap.UPLOAD_SCRAWL: case ActionMap.UPLOAD_VIDEO: case ActionMap.UPLOAD_FILE: conf = this.configManager.getConfig( actionCode ); state = new Uploader( request, conf ).doExec(); break; case ActionMap.CATCH_IMAGE: conf = configManager.getConfig( actionCode ); String[] list = this.request.getParameterValues( (String)conf.get( "fieldName" ) ); state = new ImageHunter( conf ).capture( list ); break; case ActionMap.LIST_IMAGE: case ActionMap.LIST_FILE: conf = configManager.getConfig( actionCode ); int start = this.getStartIndex(); state = new FileManager( conf ).listFile( start ); break; } return state.toJSONString(); } public int getStartIndex () { String start = this.request.getParameter( "start" ); try { return Integer.parseInt( start ); } catch ( Exception e ) { return 0; } } /** * callback参数验证 */ public boolean validCallbackName ( String name ) { if ( name.matches( "^[a-zA-Z_]+[\\w0-9_]*$" ) ) { return true; } return false; } } ================================================ FILE: src/main/java/com/baidu/ueditor/ConfigManager.java ================================================ package com.baidu.ueditor; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; import org.json.JSONArray; import org.json.JSONObject; import com.baidu.ueditor.define.ActionMap; /** * 配置管理器 * @author hancong03@baidu.com * */ public final class ConfigManager { private final String rootPath; private final String originalPath; private final String contextPath; private static final String configFileName = "config.json"; private String parentPath = null; private JSONObject jsonConfig = null; // 涂鸦上传filename定义 private final static String SCRAWL_FILE_NAME = "scrawl"; // 远程图片抓取filename定义 private final static String REMOTE_FILE_NAME = "remote"; /* * 通过一个给定的路径构建一个配置管理器, 该管理器要求地址路径所在目录下必须存在config.properties文件 */ private ConfigManager ( String rootPath, String contextPath, String uri ) throws FileNotFoundException, IOException { rootPath = rootPath.replace( "\\", "/" ); this.rootPath = rootPath; this.contextPath = contextPath; // if ( contextPath.length() > 0 ) { // this.originalPath = this.rootPath + uri.substring( contextPath.length() ); // } else { // this.originalPath = this.rootPath + uri; // } this.originalPath = "src/main/resources/config.json"; this.initEnv(); } /** * 配置管理器构造工厂 * @param rootPath 服务器根路径 * @param contextPath 服务器所在项目路径 * @param uri 当前访问的uri * @return 配置管理器实例或者null */ public static ConfigManager getInstance ( String rootPath, String contextPath, String uri ) { try { return new ConfigManager(rootPath, contextPath, uri); } catch ( Exception e ) { return null; } } // 验证配置文件加载是否正确 public boolean valid () { return this.jsonConfig != null; } public JSONObject getAllConfig () { return this.jsonConfig; } public Map getConfig ( int type ) { Map conf = new HashMap(); String savePath = null; switch ( type ) { case ActionMap.UPLOAD_FILE: conf.put( "isBase64", "false" ); conf.put( "maxSize", this.jsonConfig.getLong( "fileMaxSize" ) ); conf.put( "allowFiles", this.getArray( "fileAllowFiles" ) ); conf.put( "fieldName", this.jsonConfig.getString( "fileFieldName" ) ); savePath = this.jsonConfig.getString( "filePathFormat" ); break; case ActionMap.UPLOAD_IMAGE: conf.put( "isBase64", "false" ); conf.put( "maxSize", this.jsonConfig.getLong( "imageMaxSize" ) ); conf.put( "allowFiles", this.getArray( "imageAllowFiles" ) ); conf.put( "fieldName", this.jsonConfig.getString( "imageFieldName" ) ); savePath = this.jsonConfig.getString( "imagePathFormat" ); break; case ActionMap.UPLOAD_VIDEO: conf.put( "maxSize", this.jsonConfig.getLong( "videoMaxSize" ) ); conf.put( "allowFiles", this.getArray( "videoAllowFiles" ) ); conf.put( "fieldName", this.jsonConfig.getString( "videoFieldName" ) ); savePath = this.jsonConfig.getString( "videoPathFormat" ); break; case ActionMap.UPLOAD_SCRAWL: conf.put( "filename", ConfigManager.SCRAWL_FILE_NAME ); conf.put( "maxSize", this.jsonConfig.getLong( "scrawlMaxSize" ) ); conf.put( "fieldName", this.jsonConfig.getString( "scrawlFieldName" ) ); conf.put( "isBase64", "true" ); savePath = this.jsonConfig.getString( "scrawlPathFormat" ); break; case ActionMap.CATCH_IMAGE: conf.put( "filename", ConfigManager.REMOTE_FILE_NAME ); conf.put( "filter", this.getArray( "catcherLocalDomain" ) ); conf.put( "maxSize", this.jsonConfig.getLong( "catcherMaxSize" ) ); conf.put( "allowFiles", this.getArray( "catcherAllowFiles" ) ); conf.put( "fieldName", this.jsonConfig.getString( "catcherFieldName" ) + "[]" ); savePath = this.jsonConfig.getString( "catcherPathFormat" ); break; case ActionMap.LIST_IMAGE: conf.put( "allowFiles", this.getArray( "imageManagerAllowFiles" ) ); conf.put( "dir", this.jsonConfig.getString( "imageManagerListPath" ) ); conf.put( "count", this.jsonConfig.getInt( "imageManagerListSize" ) ); break; case ActionMap.LIST_FILE: conf.put( "allowFiles", this.getArray( "fileManagerAllowFiles" ) ); conf.put( "dir", this.jsonConfig.getString( "fileManagerListPath" ) ); conf.put( "count", this.jsonConfig.getInt( "fileManagerListSize" ) ); break; } conf.put( "savePath", savePath ); conf.put( "rootPath", this.rootPath ); return conf; } private void initEnv () throws FileNotFoundException, IOException { File file = new File( this.originalPath ); if ( !file.isAbsolute() ) { file = new File( file.getAbsolutePath() ); } this.parentPath = file.getParent(); String configContent = this.readFile( this.getConfigPath() ); try{ JSONObject jsonConfig = new JSONObject( configContent ); this.jsonConfig = jsonConfig; } catch ( Exception e ) { this.jsonConfig = null; } } private String getConfigPath () { return this.parentPath + File.separator + ConfigManager.configFileName; } private String[] getArray ( String key ) { JSONArray jsonArray = this.jsonConfig.getJSONArray( key ); String[] result = new String[ jsonArray.length() ]; for ( int i = 0, len = jsonArray.length(); i < len; i++ ) { result[i] = jsonArray.getString( i ); } return result; } private String readFile ( String path ) throws IOException { StringBuilder builder = new StringBuilder(); try { InputStreamReader reader = new InputStreamReader( new FileInputStream( path ), "UTF-8" ); BufferedReader bfReader = new BufferedReader( reader ); String tmpContent = null; while ( ( tmpContent = bfReader.readLine() ) != null ) { builder.append( tmpContent ); } bfReader.close(); } catch ( UnsupportedEncodingException e ) { // 忽略 } return this.filter( builder.toString() ); } // 过滤输入字符串, 剔除多行注释以及替换掉反斜杠 private String filter ( String input ) { return input.replaceAll( "/\\*[\\s\\S]*?\\*/", "" ); } } ================================================ FILE: src/main/java/com/baidu/ueditor/Encoder.java ================================================ package com.baidu.ueditor; public class Encoder { public static String toUnicode ( String input ) { StringBuilder builder = new StringBuilder(); char[] chars = input.toCharArray(); for ( char ch : chars ) { if ( ch < 256 ) { builder.append( ch ); } else { builder.append( "\\u" + Integer.toHexString( ch& 0xffff ) ); } } return builder.toString(); } } ================================================ FILE: src/main/java/com/baidu/ueditor/PathFormat.java ================================================ package com.baidu.ueditor; import java.text.SimpleDateFormat; import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PathFormat { private static final String TIME = "time"; private static final String FULL_YEAR = "yyyy"; private static final String YEAR = "yy"; private static final String MONTH = "mm"; private static final String DAY = "dd"; private static final String HOUR = "hh"; private static final String MINUTE = "ii"; private static final String SECOND = "ss"; private static final String RAND = "rand"; private static Date currentDate = null; public static String parse ( String input ) { Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE ); Matcher matcher = pattern.matcher(input); PathFormat.currentDate = new Date(); StringBuffer sb = new StringBuffer(); while ( matcher.find() ) { matcher.appendReplacement(sb, PathFormat.getString( matcher.group( 1 ) ) ); } matcher.appendTail(sb); return sb.toString(); } /** * 格式化路径, 把windows路径替换成标准路径 * @param input 待格式化的路径 * @return 格式化后的路径 */ public static String format ( String input ) { return input.replace( "\\", "/" ); } public static String parse ( String input, String filename ) { Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE ); Matcher matcher = pattern.matcher(input); String matchStr = null; PathFormat.currentDate = new Date(); StringBuffer sb = new StringBuffer(); while ( matcher.find() ) { matchStr = matcher.group( 1 ); if ( matchStr.indexOf( "filename" ) != -1 ) { filename = filename.replace( "$", "\\$" ).replaceAll( "[\\/:*?\"<>|]", "" ); matcher.appendReplacement(sb, filename ); } else { matcher.appendReplacement(sb, PathFormat.getString( matchStr ) ); } } matcher.appendTail(sb); return sb.toString(); } private static String getString ( String pattern ) { pattern = pattern.toLowerCase(); // time 处理 if ( pattern.indexOf( PathFormat.TIME ) != -1 ) { return PathFormat.getTimestamp(); } else if ( pattern.indexOf( PathFormat.FULL_YEAR ) != -1 ) { return PathFormat.getFullYear(); } else if ( pattern.indexOf( PathFormat.YEAR ) != -1 ) { return PathFormat.getYear(); } else if ( pattern.indexOf( PathFormat.MONTH ) != -1 ) { return PathFormat.getMonth(); } else if ( pattern.indexOf( PathFormat.DAY ) != -1 ) { return PathFormat.getDay(); } else if ( pattern.indexOf( PathFormat.HOUR ) != -1 ) { return PathFormat.getHour(); } else if ( pattern.indexOf( PathFormat.MINUTE ) != -1 ) { return PathFormat.getMinute(); } else if ( pattern.indexOf( PathFormat.SECOND ) != -1 ) { return PathFormat.getSecond(); } else if ( pattern.indexOf( PathFormat.RAND ) != -1 ) { return PathFormat.getRandom( pattern ); } return pattern; } private static String getTimestamp () { return System.currentTimeMillis() + ""; } private static String getFullYear () { return new SimpleDateFormat( "yyyy" ).format( PathFormat.currentDate ); } private static String getYear () { return new SimpleDateFormat( "yy" ).format( PathFormat.currentDate ); } private static String getMonth () { return new SimpleDateFormat( "MM" ).format( PathFormat.currentDate ); } private static String getDay () { return new SimpleDateFormat( "dd" ).format( PathFormat.currentDate ); } private static String getHour () { return new SimpleDateFormat( "HH" ).format( PathFormat.currentDate ); } private static String getMinute () { return new SimpleDateFormat( "mm" ).format( PathFormat.currentDate ); } private static String getSecond () { return new SimpleDateFormat( "ss" ).format( PathFormat.currentDate ); } private static String getRandom ( String pattern ) { int length = 0; pattern = pattern.split( ":" )[ 1 ].trim(); length = Integer.parseInt( pattern ); return ( Math.random() + "" ).replace( ".", "" ).substring( 0, length ); } public static void main(String[] args) { // TODO Auto-generated method stub } } ================================================ FILE: src/main/java/com/baidu/ueditor/define/ActionMap.java ================================================ package com.baidu.ueditor.define; import java.util.Map; import java.util.HashMap; /** * 定义请求action类型 * @author hancong03@baidu.com * */ @SuppressWarnings("serial") public final class ActionMap { public static final Map mapping; // 获取配置请求 public static final int CONFIG = 0; public static final int UPLOAD_IMAGE = 1; public static final int UPLOAD_SCRAWL = 2; public static final int UPLOAD_VIDEO = 3; public static final int UPLOAD_FILE = 4; public static final int CATCH_IMAGE = 5; public static final int LIST_FILE = 6; public static final int LIST_IMAGE = 7; static { mapping = new HashMap(){{ put( "config", ActionMap.CONFIG ); put( "uploadimage", ActionMap.UPLOAD_IMAGE ); put( "uploadscrawl", ActionMap.UPLOAD_SCRAWL ); put( "uploadvideo", ActionMap.UPLOAD_VIDEO ); put( "uploadfile", ActionMap.UPLOAD_FILE ); put( "catchimage", ActionMap.CATCH_IMAGE ); put( "listfile", ActionMap.LIST_FILE ); put( "listimage", ActionMap.LIST_IMAGE ); }}; } public static int getType ( String key ) { return ActionMap.mapping.get( key ); } } ================================================ FILE: src/main/java/com/baidu/ueditor/define/ActionState.java ================================================ package com.baidu.ueditor.define; public enum ActionState { UNKNOW_ERROR } ================================================ FILE: src/main/java/com/baidu/ueditor/define/AppInfo.java ================================================ package com.baidu.ueditor.define; import java.util.HashMap; import java.util.Map; public final class AppInfo { public static final int SUCCESS = 0; public static final int MAX_SIZE = 1; public static final int PERMISSION_DENIED = 2; public static final int FAILED_CREATE_FILE = 3; public static final int IO_ERROR = 4; public static final int NOT_MULTIPART_CONTENT = 5; public static final int PARSE_REQUEST_ERROR = 6; public static final int NOTFOUND_UPLOAD_DATA = 7; public static final int NOT_ALLOW_FILE_TYPE = 8; public static final int INVALID_ACTION = 101; public static final int CONFIG_ERROR = 102; public static final int PREVENT_HOST = 201; public static final int CONNECTION_ERROR = 202; public static final int REMOTE_FAIL = 203; public static final int NOT_DIRECTORY = 301; public static final int NOT_EXIST = 302; public static final int ILLEGAL = 401; public static Map info = new HashMap(){{ put( AppInfo.SUCCESS, "SUCCESS" ); // 无效的Action put( AppInfo.INVALID_ACTION, "\u65E0\u6548\u7684Action" ); // 配置文件初始化失败 put( AppInfo.CONFIG_ERROR, "\u914D\u7F6E\u6587\u4EF6\u521D\u59CB\u5316\u5931\u8D25" ); // 抓取远程图片失败 put( AppInfo.REMOTE_FAIL, "\u6293\u53D6\u8FDC\u7A0B\u56FE\u7247\u5931\u8D25" ); // 被阻止的远程主机 put( AppInfo.PREVENT_HOST, "\u88AB\u963B\u6B62\u7684\u8FDC\u7A0B\u4E3B\u673A" ); // 远程连接出错 put( AppInfo.CONNECTION_ERROR, "\u8FDC\u7A0B\u8FDE\u63A5\u51FA\u9519" ); // "文件大小超出限制" put( AppInfo.MAX_SIZE, "\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u9650\u5236" ); // 权限不足, 多指写权限 put( AppInfo.PERMISSION_DENIED, "\u6743\u9650\u4E0D\u8DB3" ); // 创建文件失败 put( AppInfo.FAILED_CREATE_FILE, "\u521B\u5EFA\u6587\u4EF6\u5931\u8D25" ); // IO错误 put( AppInfo.IO_ERROR, "IO\u9519\u8BEF" ); // 上传表单不是multipart/form-data类型 put( AppInfo.NOT_MULTIPART_CONTENT, "\u4E0A\u4F20\u8868\u5355\u4E0D\u662Fmultipart/form-data\u7C7B\u578B" ); // 解析上传表单错误 put( AppInfo.PARSE_REQUEST_ERROR, "\u89E3\u6790\u4E0A\u4F20\u8868\u5355\u9519\u8BEF" ); // 未找到上传数据 put( AppInfo.NOTFOUND_UPLOAD_DATA, "\u672A\u627E\u5230\u4E0A\u4F20\u6570\u636E" ); // 不允许的文件类型 put( AppInfo.NOT_ALLOW_FILE_TYPE, "\u4E0D\u5141\u8BB8\u7684\u6587\u4EF6\u7C7B\u578B" ); // 指定路径不是目录 put( AppInfo.NOT_DIRECTORY, "\u6307\u5B9A\u8DEF\u5F84\u4E0D\u662F\u76EE\u5F55" ); // 指定路径并不存在 put( AppInfo.NOT_EXIST, "\u6307\u5B9A\u8DEF\u5F84\u5E76\u4E0D\u5B58\u5728" ); // callback参数名不合法 put( AppInfo.ILLEGAL, "Callback\u53C2\u6570\u540D\u4E0D\u5408\u6CD5" ); }}; public static String getStateInfo ( int key ) { return AppInfo.info.get( key ); } } ================================================ FILE: src/main/java/com/baidu/ueditor/define/BaseState.java ================================================ package com.baidu.ueditor.define; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import com.baidu.ueditor.Encoder; public class BaseState implements State { private boolean state = false; private String info = null; private Map infoMap = new HashMap(); public BaseState () { this.state = true; } public BaseState ( boolean state ) { this.setState( state ); } public BaseState ( boolean state, String info ) { this.setState( state ); this.info = info; } public BaseState ( boolean state, int infoCode ) { this.setState( state ); this.info = AppInfo.getStateInfo( infoCode ); } public boolean isSuccess () { return this.state; } public void setState ( boolean state ) { this.state = state; } public void setInfo ( String info ) { this.info = info; } public void setInfo ( int infoCode ) { this.info = AppInfo.getStateInfo( infoCode ); } @Override public String toJSONString() { return this.toString(); } public String toString () { String key = null; String stateVal = this.isSuccess() ? AppInfo.getStateInfo( AppInfo.SUCCESS ) : this.info; StringBuilder builder = new StringBuilder(); builder.append( "{\"state\": \"" + stateVal + "\"" ); Iterator iterator = this.infoMap.keySet().iterator(); while ( iterator.hasNext() ) { key = iterator.next(); builder.append( ",\"" + key + "\": \"" + this.infoMap.get(key) + "\"" ); } builder.append( "}" ); return Encoder.toUnicode( builder.toString() ); } @Override public void putInfo(String name, String val) { this.infoMap.put(name, val); } @Override public void putInfo(String name, long val) { this.putInfo(name, val+""); } } ================================================ FILE: src/main/java/com/baidu/ueditor/define/FileType.java ================================================ package com.baidu.ueditor.define; import java.util.HashMap; import java.util.Map; public class FileType { public static final String JPG = "JPG"; private static final Map types = new HashMap(){{ put( FileType.JPG, ".jpg" ); }}; public static String getSuffix ( String key ) { return FileType.types.get( key ); } /** * 根据给定的文件名,获取其后缀信息 * @param filename * @return */ public static String getSuffixByFilename ( String filename ) { return filename.substring( filename.lastIndexOf( "." ) ).toLowerCase(); } } ================================================ FILE: src/main/java/com/baidu/ueditor/define/MIMEType.java ================================================ package com.baidu.ueditor.define; import java.util.HashMap; import java.util.Map; public class MIMEType { public static final Map types = new HashMap(){{ put( "image/gif", ".gif" ); put( "image/jpeg", ".jpg" ); put( "image/jpg", ".jpg" ); put( "image/png", ".png" ); put( "image/bmp", ".bmp" ); }}; public static String getSuffix ( String mime ) { return MIMEType.types.get( mime ); } } ================================================ FILE: src/main/java/com/baidu/ueditor/define/MultiState.java ================================================ package com.baidu.ueditor.define; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import com.baidu.ueditor.Encoder; /** * 多状态集合状态 * 其包含了多个状态的集合, 其本身自己也是一个状态 * @author hancong03@baidu.com * */ public class MultiState implements State { private boolean state = false; private String info = null; private Map intMap = new HashMap(); private Map infoMap = new HashMap(); private List stateList = new ArrayList(); public MultiState ( boolean state ) { this.state = state; } public MultiState ( boolean state, String info ) { this.state = state; this.info = info; } public MultiState ( boolean state, int infoKey ) { this.state = state; this.info = AppInfo.getStateInfo( infoKey ); } @Override public boolean isSuccess() { return this.state; } public void addState ( State state ) { stateList.add( state.toJSONString() ); } /** * 该方法调用无效果 */ @Override public void putInfo(String name, String val) { this.infoMap.put(name, val); } @Override public String toJSONString() { String stateVal = this.isSuccess() ? AppInfo.getStateInfo( AppInfo.SUCCESS ) : this.info; StringBuilder builder = new StringBuilder(); builder.append( "{\"state\": \"" + stateVal + "\"" ); // 数字转换 Iterator iterator = this.intMap.keySet().iterator(); while ( iterator.hasNext() ) { stateVal = iterator.next(); builder.append( ",\""+ stateVal +"\": " + this.intMap.get( stateVal ) ); } iterator = this.infoMap.keySet().iterator(); while ( iterator.hasNext() ) { stateVal = iterator.next(); builder.append( ",\""+ stateVal +"\": \"" + this.infoMap.get( stateVal ) + "\"" ); } builder.append( ", list: [" ); iterator = this.stateList.iterator(); while ( iterator.hasNext() ) { builder.append( iterator.next() + "," ); } if ( this.stateList.size() > 0 ) { builder.deleteCharAt( builder.length() - 1 ); } builder.append( " ]}" ); return Encoder.toUnicode( builder.toString() ); } @Override public void putInfo(String name, long val) { this.intMap.put( name, val ); } } ================================================ FILE: src/main/java/com/baidu/ueditor/define/State.java ================================================ package com.baidu.ueditor.define; /** * 处理状态接口 * @author hancong03@baidu.com * */ public interface State { public boolean isSuccess(); public void putInfo(String name, String val); public void putInfo(String name, long val); public String toJSONString(); } ================================================ FILE: src/main/java/com/baidu/ueditor/hunter/FileManager.java ================================================ package com.baidu.ueditor.hunter; import java.io.File; import java.util.Arrays; import java.util.Collection; import java.util.Map; import org.apache.commons.io.FileUtils; import com.baidu.ueditor.PathFormat; import com.baidu.ueditor.define.AppInfo; import com.baidu.ueditor.define.BaseState; import com.baidu.ueditor.define.MultiState; import com.baidu.ueditor.define.State; public class FileManager { private String dir = null; private String rootPath = null; private String[] allowFiles = null; private int count = 0; public FileManager ( Map conf ) { this.rootPath = (String)conf.get( "rootPath" ); this.dir = this.rootPath + (String)conf.get( "dir" ); this.allowFiles = this.getAllowFiles( conf.get("allowFiles") ); this.count = (Integer)conf.get( "count" ); } public State listFile ( int index ) { File dir = new File( this.dir ); State state = null; if ( !dir.exists() ) { return new BaseState( false, AppInfo.NOT_EXIST ); } if ( !dir.isDirectory() ) { return new BaseState( false, AppInfo.NOT_DIRECTORY ); } Collection list = FileUtils.listFiles( dir, this.allowFiles, true ); if ( index < 0 || index > list.size() ) { state = new MultiState( true ); } else { Object[] fileList = Arrays.copyOfRange( list.toArray(), index, index + this.count ); state = this.getState( fileList ); } state.putInfo( "start", index ); state.putInfo( "total", list.size() ); return state; } private State getState ( Object[] files ) { MultiState state = new MultiState( true ); BaseState fileState = null; File file = null; for ( Object obj : files ) { if ( obj == null ) { break; } file = (File)obj; fileState = new BaseState( true ); fileState.putInfo( "url", PathFormat.format( this.getPath( file ) ) ); state.addState( fileState ); } return state; } private String getPath ( File file ) { String path = file.getAbsolutePath(); return path.replace( this.rootPath, "/" ); } private String[] getAllowFiles ( Object fileExt ) { String[] exts = null; String ext = null; if ( fileExt == null ) { return new String[ 0 ]; } exts = (String[])fileExt; for ( int i = 0, len = exts.length; i < len; i++ ) { ext = exts[ i ]; exts[ i ] = ext.replace( ".", "" ); } return exts; } } ================================================ FILE: src/main/java/com/baidu/ueditor/hunter/ImageHunter.java ================================================ package com.baidu.ueditor.hunter; import java.net.HttpURLConnection; import java.net.InetAddress; import java.net.URL; import java.net.UnknownHostException; import java.util.Arrays; import java.util.List; import java.util.Map; import com.baidu.ueditor.PathFormat; import com.baidu.ueditor.define.AppInfo; import com.baidu.ueditor.define.BaseState; import com.baidu.ueditor.define.MIMEType; import com.baidu.ueditor.define.MultiState; import com.baidu.ueditor.define.State; import com.baidu.ueditor.upload.StorageManager; /** * 图片抓取器 * @author hancong03@baidu.com * */ public class ImageHunter { private String filename = null; private String savePath = null; private String rootPath = null; private List allowTypes = null; private long maxSize = -1; private List filters = null; public ImageHunter ( Map conf ) { this.filename = (String)conf.get( "filename" ); this.savePath = (String)conf.get( "savePath" ); this.rootPath = (String)conf.get( "rootPath" ); this.maxSize = (Long)conf.get( "maxSize" ); this.allowTypes = Arrays.asList( (String[])conf.get( "allowFiles" ) ); this.filters = Arrays.asList( (String[])conf.get( "filter" ) ); } public State capture ( String[] list ) { MultiState state = new MultiState( true ); for ( String source : list ) { state.addState( captureRemoteData( source ) ); } return state; } public State captureRemoteData ( String urlStr ) { HttpURLConnection connection = null; URL url = null; String suffix = null; try { url = new URL( urlStr ); if ( !validHost( url.getHost() ) ) { return new BaseState( false, AppInfo.PREVENT_HOST ); } connection = (HttpURLConnection) url.openConnection(); connection.setInstanceFollowRedirects( true ); connection.setUseCaches( true ); if ( !validContentState( connection.getResponseCode() ) ) { return new BaseState( false, AppInfo.CONNECTION_ERROR ); } suffix = MIMEType.getSuffix( connection.getContentType() ); if ( !validFileType( suffix ) ) { return new BaseState( false, AppInfo.NOT_ALLOW_FILE_TYPE ); } if ( !validFileSize( connection.getContentLength() ) ) { return new BaseState( false, AppInfo.MAX_SIZE ); } String savePath = this.getPath( this.savePath, this.filename, suffix ); String physicalPath = this.rootPath + savePath; State state = StorageManager.saveFileByInputStream( connection.getInputStream(), physicalPath ); if ( state.isSuccess() ) { state.putInfo( "url", PathFormat.format( savePath ) ); state.putInfo( "source", urlStr ); } return state; } catch ( Exception e ) { return new BaseState( false, AppInfo.REMOTE_FAIL ); } } private String getPath ( String savePath, String filename, String suffix ) { return PathFormat.parse( savePath + suffix, filename ); } private boolean validHost ( String hostname ) { try { InetAddress ip = InetAddress.getByName(hostname); if (ip.isSiteLocalAddress()) { return false; } } catch (UnknownHostException e) { return false; } return !filters.contains( hostname ); } private boolean validContentState ( int code ) { return HttpURLConnection.HTTP_OK == code; } private boolean validFileType ( String type ) { return this.allowTypes.contains( type ); } private boolean validFileSize ( int size ) { return size < this.maxSize; } } ================================================ FILE: src/main/java/com/baidu/ueditor/upload/Base64Uploader.java ================================================ package com.baidu.ueditor.upload; import com.baidu.ueditor.PathFormat; import com.baidu.ueditor.define.AppInfo; import com.baidu.ueditor.define.BaseState; import com.baidu.ueditor.define.FileType; import com.baidu.ueditor.define.State; import java.util.Map; import org.apache.commons.codec.binary.Base64; public final class Base64Uploader { public static State save(String content, Map conf) { byte[] data = decode(content); long maxSize = ((Long) conf.get("maxSize")).longValue(); if (!validSize(data, maxSize)) { return new BaseState(false, AppInfo.MAX_SIZE); } String suffix = FileType.getSuffix("JPG"); String savePath = PathFormat.parse((String) conf.get("savePath"), (String) conf.get("filename")); savePath = savePath + suffix; String physicalPath = (String) conf.get("rootPath") + savePath; State storageState = StorageManager.saveBinaryFile(data, physicalPath); if (storageState.isSuccess()) { storageState.putInfo("url", PathFormat.format(savePath)); storageState.putInfo("type", suffix); storageState.putInfo("original", ""); } return storageState; } private static byte[] decode(String content) { return Base64.decodeBase64(content); } private static boolean validSize(byte[] data, long length) { return data.length <= length; } } ================================================ FILE: src/main/java/com/baidu/ueditor/upload/BinaryUploader.java ================================================ package com.baidu.ueditor.upload; import com.baidu.ueditor.PathFormat; import com.baidu.ueditor.define.AppInfo; import com.baidu.ueditor.define.BaseState; import com.baidu.ueditor.define.FileType; import com.baidu.ueditor.define.State; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItemIterator; import org.apache.commons.fileupload.FileItemStream; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class BinaryUploader { public static final State save(HttpServletRequest request, Map conf) { FileItemStream fileStream = null; boolean isAjaxUpload = request.getHeader( "X_Requested_With" ) != null; if (!ServletFileUpload.isMultipartContent(request)) { return new BaseState(false, AppInfo.NOT_MULTIPART_CONTENT); } ServletFileUpload upload = new ServletFileUpload( new DiskFileItemFactory()); if ( isAjaxUpload ) { upload.setHeaderEncoding( "UTF-8" ); } try { FileItemIterator iterator = upload.getItemIterator(request); while (iterator.hasNext()) { fileStream = iterator.next(); if (!fileStream.isFormField()) break; fileStream = null; } if (fileStream == null) { return new BaseState(false, AppInfo.NOTFOUND_UPLOAD_DATA); } String savePath = (String) conf.get("savePath"); String originFileName = fileStream.getName(); String suffix = FileType.getSuffixByFilename(originFileName); originFileName = originFileName.substring(0, originFileName.length() - suffix.length()); savePath = savePath + suffix; long maxSize = ((Long) conf.get("maxSize")).longValue(); if (!validType(suffix, (String[]) conf.get("allowFiles"))) { return new BaseState(false, AppInfo.NOT_ALLOW_FILE_TYPE); } savePath = PathFormat.parse(savePath, originFileName); String physicalPath = (String) conf.get("rootPath") + savePath; InputStream is = fileStream.openStream(); State storageState = StorageManager.saveFileByInputStream(is, physicalPath, maxSize); is.close(); if (storageState.isSuccess()) { storageState.putInfo("url", PathFormat.format(savePath)); storageState.putInfo("type", suffix); storageState.putInfo("original", originFileName + suffix); } return storageState; } catch (FileUploadException e) { return new BaseState(false, AppInfo.PARSE_REQUEST_ERROR); } catch (IOException e) { } return new BaseState(false, AppInfo.IO_ERROR); } private static boolean validType(String type, String[] allowTypes) { List list = Arrays.asList(allowTypes); return list.contains(type); } } ================================================ FILE: src/main/java/com/baidu/ueditor/upload/StorageManager.java ================================================ package com.baidu.ueditor.upload; import com.baidu.ueditor.define.AppInfo; import com.baidu.ueditor.define.BaseState; import com.baidu.ueditor.define.State; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.commons.io.FileUtils; public class StorageManager { public static final int BUFFER_SIZE = 8192; public StorageManager() { } public static State saveBinaryFile(byte[] data, String path) { File file = new File(path); State state = valid(file); if (!state.isSuccess()) { return state; } try { BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(file)); bos.write(data); bos.flush(); bos.close(); } catch (IOException ioe) { return new BaseState(false, AppInfo.IO_ERROR); } state = new BaseState(true, file.getAbsolutePath()); state.putInfo( "size", data.length ); state.putInfo( "title", file.getName() ); return state; } public static State saveFileByInputStream(InputStream is, String path, long maxSize) { State state = null; File tmpFile = getTmpFile(); byte[] dataBuf = new byte[ 2048 ]; BufferedInputStream bis = new BufferedInputStream(is, StorageManager.BUFFER_SIZE); try { BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(tmpFile), StorageManager.BUFFER_SIZE); int count = 0; while ((count = bis.read(dataBuf)) != -1) { bos.write(dataBuf, 0, count); } bos.flush(); bos.close(); if (tmpFile.length() > maxSize) { tmpFile.delete(); return new BaseState(false, AppInfo.MAX_SIZE); } state = saveTmpFile(tmpFile, path); if (!state.isSuccess()) { tmpFile.delete(); } return state; } catch (IOException e) { } return new BaseState(false, AppInfo.IO_ERROR); } public static State saveFileByInputStream(InputStream is, String path) { State state = null; File tmpFile = getTmpFile(); byte[] dataBuf = new byte[ 2048 ]; BufferedInputStream bis = new BufferedInputStream(is, StorageManager.BUFFER_SIZE); try { BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(tmpFile), StorageManager.BUFFER_SIZE); int count = 0; while ((count = bis.read(dataBuf)) != -1) { bos.write(dataBuf, 0, count); } bos.flush(); bos.close(); state = saveTmpFile(tmpFile, path); if (!state.isSuccess()) { tmpFile.delete(); } return state; } catch (IOException e) { } return new BaseState(false, AppInfo.IO_ERROR); } private static File getTmpFile() { File tmpDir = FileUtils.getTempDirectory(); String tmpFileName = (Math.random() * 10000 + "").replace(".", ""); return new File(tmpDir, tmpFileName); } private static State saveTmpFile(File tmpFile, String path) { State state = null; File targetFile = new File(path); if (targetFile.canWrite()) { return new BaseState(false, AppInfo.PERMISSION_DENIED); } try { FileUtils.moveFile(tmpFile, targetFile); } catch (IOException e) { return new BaseState(false, AppInfo.IO_ERROR); } state = new BaseState(true); state.putInfo( "size", targetFile.length() ); state.putInfo( "title", targetFile.getName() ); return state; } private static State valid(File file) { File parentPath = file.getParentFile(); if ((!parentPath.exists()) && (!parentPath.mkdirs())) { return new BaseState(false, AppInfo.FAILED_CREATE_FILE); } if (!parentPath.canWrite()) { return new BaseState(false, AppInfo.PERMISSION_DENIED); } return new BaseState(true); } } ================================================ FILE: src/main/java/com/baidu/ueditor/upload/Uploader.java ================================================ package com.baidu.ueditor.upload; import com.baidu.ueditor.define.State; import java.util.Map; import javax.servlet.http.HttpServletRequest; public class Uploader { private HttpServletRequest request = null; private Map conf = null; public Uploader(HttpServletRequest request, Map conf) { this.request = request; this.conf = conf; } public final State doExec() { String filedName = (String) this.conf.get("fieldName"); State state = null; if ("true".equals(this.conf.get("isBase64"))) { state = Base64Uploader.save(this.request.getParameter(filedName), this.conf); } else { state = BinaryUploader.save(this.request, this.conf); } return state; } } ================================================ FILE: src/main/java/io/sdb/SdbApplication.java ================================================ package io.sdb; import io.sdb.datasources.DynamicDataSourceConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.Import; @SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) @Import({DynamicDataSourceConfig.class}) public class SdbApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(io.sdb.SdbApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(io.sdb.SdbApplication.class); } } ================================================ FILE: src/main/java/io/sdb/builder/AbstractBuilder.java ================================================ package io.sdb.builder; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author Binary Wang(https://github.com/binarywang) */ public abstract class AbstractBuilder { protected final Logger logger = LoggerFactory.getLogger(getClass()); public abstract WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, WxMpService service); } ================================================ FILE: src/main/java/io/sdb/builder/ImageBuilder.java ================================================ package io.sdb.builder; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutImageMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; /** * @author Binary Wang(https://github.com/binarywang) */ public class ImageBuilder extends AbstractBuilder { @Override public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, WxMpService service) { WxMpXmlOutImageMessage m = WxMpXmlOutMessage.IMAGE().mediaId(content) .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser()) .build(); return m; } } ================================================ FILE: src/main/java/io/sdb/builder/MyMetaBuilder.java ================================================ package io.sdb.builder; import com.jfinal.plugin.activerecord.generator.ColumnMeta; import com.jfinal.plugin.activerecord.generator.MetaBuilder; import com.jfinal.plugin.activerecord.generator.TableMeta; import javax.sql.DataSource; import java.sql.*; import java.util.HashMap; import java.util.Map; public class MyMetaBuilder extends MetaBuilder { public MyMetaBuilder(DataSource dataSource) { super(dataSource); } @Override protected void buildColumnMetas(TableMeta tableMeta) throws SQLException { String sql = dialect.forTableBuilderDoBuild(tableMeta.name); Statement stm = conn.createStatement(); ResultSet rs = stm.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); DatabaseMetaData dbMeta = conn.getMetaData(); Map colmap = new HashMap<>(); ResultSet colMetaRs = null; try { colMetaRs = dbMeta.getColumns(null, null, tableMeta.name, null); while (colMetaRs.next()) { ColumnMeta columnMeta = new ColumnMeta(); columnMeta.name = colMetaRs.getString("COLUMN_NAME"); columnMeta.remarks = colMetaRs.getString("REMARKS"); colmap.put(columnMeta.name, columnMeta); } } catch (Exception e) { System.out.println(e.getMessage()); } finally { if (colMetaRs != null) { colMetaRs.close(); } } for (int i=1; i<=rsmd.getColumnCount(); i++) { ColumnMeta cm = new ColumnMeta(); cm.name = rsmd.getColumnName(i); String typeStr = null; if (dialect.isKeepByteAndShort()) { int type = rsmd.getColumnType(i); if (type == Types.TINYINT) { typeStr = "java.lang.Byte"; } else if (type == Types.SMALLINT) { typeStr = "java.lang.Short"; } } if (typeStr == null) { String colClassName = rsmd.getColumnClassName(i); typeStr = typeMapping.getType(colClassName); } if (typeStr == null) { int type = rsmd.getColumnType(i); if (type == Types.BINARY || type == Types.VARBINARY || type == Types.LONGVARBINARY || type == Types.BLOB) { typeStr = "byte[]"; } else if (type == Types.CLOB || type == Types.NCLOB) { typeStr = "java.lang.String"; } // 支持 oracle 的 TIMESTAMP、DATE 字段类型,其中 Types.DATE 值并不会出现 // 保留对 Types.DATE 的判断,一是为了逻辑上的正确性、完备性,二是其它类型的数据库可能用得着 else if (type == Types.TIMESTAMP || type == Types.DATE) { typeStr = "java.util.Date"; } // 支持 PostgreSql 的 jsonb json else if (type == Types.OTHER) { typeStr = "java.lang.Object"; } else { typeStr = "java.lang.String"; } } typeStr = handleJavaType(typeStr, rsmd, i); cm.javaType = typeStr; // 构造字段对应的属性名 attrName cm.attrName = buildAttrName(cm.name); ColumnMeta cm1 = colmap.get(cm.name); if (cm1 != null) { cm.remarks = cm1.remarks; } tableMeta.columnMetas.add(cm); } rs.close(); stm.close(); } } ================================================ FILE: src/main/java/io/sdb/builder/TextBuilder.java ================================================ package io.sdb.builder; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage; /** * @author Binary Wang(https://github.com/binarywang) */ public class TextBuilder extends AbstractBuilder { @Override public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, WxMpService service) { WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT().content(content) .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser()) .build(); return m; } } ================================================ FILE: src/main/java/io/sdb/common/annotation/JFinalTx.java ================================================ package io.sdb.common.annotation; import java.lang.annotation.*; /** * Created by chunmeng.lu * Date: 2016-30-03 19:26 */ @Inherited @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface JFinalTx { } ================================================ FILE: src/main/java/io/sdb/common/annotation/Login.java ================================================ package io.sdb.common.annotation; import java.lang.annotation.*; /** * app登录效验 * @author chenshun * @email sunlightcs@gmail.com * @date 2017/9/23 14:30 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Login { } ================================================ FILE: src/main/java/io/sdb/common/annotation/LoginUser.java ================================================ package io.sdb.common.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 登录用户信息 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-23 20:39 */ @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @interface LoginUser { } ================================================ FILE: src/main/java/io/sdb/common/annotation/SysLog.java ================================================ package io.sdb.common.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 系统日志注解 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017年3月8日 上午10:19:56 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface SysLog { String value() default ""; } ================================================ FILE: src/main/java/io/sdb/common/aspect/RedisAspect.java ================================================ package io.sdb.common.aspect; import io.sdb.common.exception.RRException; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; /** * Redis切面处理类 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-07-17 23:30 */ @Aspect @Configuration public class RedisAspect { private Logger logger = LoggerFactory.getLogger(getClass()); //是否开启redis缓存 true开启 false关闭 @Value("${spring.redis.open: false}") private boolean open; @Around("execution(* io.sdb.common.utils.RedisUtils.*(..))") public Object around(ProceedingJoinPoint point) throws Throwable { Object result = null; if(open){ try{ result = point.proceed(); }catch (Exception e){ logger.error("redis error", e); throw new RRException("Redis服务异常"); } } return result; } } ================================================ FILE: src/main/java/io/sdb/common/aspect/SysLogAspect.java ================================================ package io.sdb.common.aspect; import com.google.gson.Gson; import io.sdb.common.annotation.SysLog; import io.sdb.common.utils.HttpContextUtils; import io.sdb.common.utils.IPUtils; import io.sdb.model.SysUser; import io.sdb.service.SysLogService; import org.apache.shiro.SecurityUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Method; import java.util.Date; /** * 系统日志,切面处理类 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017年3月8日 上午11:07:35 */ @Aspect @Component public class SysLogAspect { @Autowired private SysLogService sysLogService; @Pointcut("@annotation(io.sdb.common.annotation.SysLog)") public void logPointCut() { } @Around("logPointCut()") public Object around(ProceedingJoinPoint point) throws Throwable { long beginTime = System.currentTimeMillis(); //执行方法 Object result = point.proceed(); //执行时长(毫秒) long time = System.currentTimeMillis() - beginTime; //保存日志 saveSysLog(point, time); return result; } private void saveSysLog(ProceedingJoinPoint joinPoint, long time) { MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); io.sdb.model.SysLog sysLog = new io.sdb.model.SysLog(); SysLog syslog = method.getAnnotation(SysLog.class); if(syslog != null){ //注解上的描述 sysLog.setOperation(syslog.value()); } //请求的方法名 String className = joinPoint.getTarget().getClass().getName(); String methodName = signature.getName(); sysLog.setMethod(className + "." + methodName + "()"); //请求的参数 Object[] args = joinPoint.getArgs(); try{ String params = new Gson().toJson(args[0]); sysLog.setParams(params); }catch (Exception e){ } //获取request HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); //设置IP地址 sysLog.setIp(IPUtils.getIpAddr(request)); //用户名 String username = ((SysUser) SecurityUtils.getSubject().getPrincipal()).getUsername(); sysLog.setUsername(username); sysLog.setTime(time); sysLog.setCreateDate(new Date()); //保存系统日志 sysLog.save(); } } ================================================ FILE: src/main/java/io/sdb/common/entity/AreaNode.java ================================================ package io.sdb.common.entity; import io.sdb.model.Area; import lombok.Data; @Data public class AreaNode extends Node { String name; String fullName; Integer grade; String treePath; public AreaNode(Area area) { super(area.getId(), area.getParentId()); this.name = area.getName(); this.fullName = area.getFullName(); this.grade = area.getGrade(); this.treePath = area.getTreePath(); } } ================================================ FILE: src/main/java/io/sdb/common/entity/Filter.java ================================================ package io.sdb.common.entity; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import java.io.Serializable; /** * 筛选 * * */ public class Filter implements Serializable { private static final long serialVersionUID = -8712382358441065075L; public enum WhereOpt { and, or } /** * 运算符 */ public enum Operator { /** 等于 */ eq, /** 不等于 */ ne, /** 大于 */ gt, /** 小于 */ lt, /** 大于等于 */ ge, /** 小于等于 */ le, /** 相似 */ like, /** 包含 */ in, /** 为Null */ isNull, /** 不为Null */ isNotNull } /** 默认是否忽略大小写 */ private static final boolean DEFAULT_IGNORE_CASE = false; /** 属性 */ private String property; /** 运算符 */ private Filter.Operator operator; private Filter.WhereOpt whereOpt = WhereOpt.and; /** 值 */ private Object value; /** 是否忽略大小写 */ private Boolean ignoreCase = DEFAULT_IGNORE_CASE; /** * 构造方法 */ public Filter() { } /** * 构造方法 * * @param property * 属性 * @param operator * 运算符 * @param value * 值 */ public Filter(String property, Filter.Operator operator, Object value) { this.property = property; this.operator = operator; this.value = value; } /** * 构造方法 * * @param property * 属性 * @param operator * 运算符 * @param value * 值 * @param ignoreCase * 忽略大小写 */ public Filter(String property, Filter.Operator operator, Object value, boolean ignoreCase) { this.property = property; this.operator = operator; this.value = value; this.ignoreCase = ignoreCase; } /** * 返回等于筛选 * * @param property * 属性 * @param value * 值 * @return 等于筛选 */ public static Filter eq(String property, Object value) { return new Filter(property, Filter.Operator.eq, value); } /** * 返回等于筛选 * * @param property * 属性 * @param value * 值 * @param ignoreCase * 忽略大小写 * @return 等于筛选 */ public static Filter eq(String property, Object value, boolean ignoreCase) { return new Filter(property, Filter.Operator.eq, value, ignoreCase); } /** * 返回不等于筛选 * * @param property * 属性 * @param value * 值 * @return 不等于筛选 */ public static Filter ne(String property, Object value) { return new Filter(property, Filter.Operator.ne, value); } /** * 返回不等于筛选 * * @param property * 属性 * @param value * 值 * @param ignoreCase * 忽略大小写 * @return 不等于筛选 */ public static Filter ne(String property, Object value, boolean ignoreCase) { return new Filter(property, Filter.Operator.ne, value, ignoreCase); } /** * 返回大于筛选 * * @param property * 属性 * @param value * 值 * @return 大于筛选 */ public static Filter gt(String property, Object value) { return new Filter(property, Filter.Operator.gt, value); } /** * 返回小于筛选 * * @param property * 属性 * @param value * 值 * @return 小于筛选 */ public static Filter lt(String property, Object value) { return new Filter(property, Filter.Operator.lt, value); } /** * 返回大于等于筛选 * * @param property * 属性 * @param value * 值 * @return 大于等于筛选 */ public static Filter ge(String property, Object value) { return new Filter(property, Filter.Operator.ge, value); } /** * 返回小于等于筛选 * * @param property * 属性 * @param value * 值 * @return 小于等于筛选 */ public static Filter le(String property, Object value) { return new Filter(property, Filter.Operator.le, value); } /** * 返回相似筛选 * * @param property * 属性 * @param value * 值 * @return 相似筛选 */ public static Filter like(String property, Object value) { return new Filter(property, Filter.Operator.like, value); } /** * 返回包含筛选 * * @param property * 属性 * @param value * 值 * @return 包含筛选 */ public static Filter in(String property, Object value) { return new Filter(property, Filter.Operator.in, value); } /** * 返回为Null筛选 * * @param property * 属性 * @return 为Null筛选 */ public static Filter isNull(String property) { return new Filter(property, Filter.Operator.isNull, null); } /** * 返回不为Null筛选 * * @param property * 属性 * @return 不为Null筛选 */ public static Filter isNotNull(String property) { return new Filter(property, Filter.Operator.isNotNull, null); } /** * 返回忽略大小写筛选 * * @return 忽略大小写筛选 */ public Filter ignoreCase() { this.ignoreCase = true; return this; } /** * 获取属性 * * @return 属性 */ public String getProperty() { return property; } /** * 设置属性 * * @param property * 属性 */ public void setProperty(String property) { this.property = property; } /** * 获取运算符 * * @return 运算符 */ public Filter.Operator getOperator() { return operator; } /** * 设置运算符 * * @param operator * 运算符 */ public void setOperator(Filter.Operator operator) { this.operator = operator; } public Filter.WhereOpt getWhereOpt() { return whereOpt; } public void setWhereOpt(Filter.WhereOpt operator) { this.whereOpt = operator; } /** * 获取值 * * @return 值 */ public Object getValue() { return value; } /** * 设置值 * * @param value * 值 */ public void setValue(Object value) { this.value = value; } /** * 获取是否忽略大小写 * * @return 是否忽略大小写 */ public Boolean getIgnoreCase() { return ignoreCase; } /** * 设置是否忽略大小写 * * @param ignoreCase * 是否忽略大小写 */ public void setIgnoreCase(Boolean ignoreCase) { this.ignoreCase = ignoreCase; } public String getWhereOptStr() { return this.whereOpt.name().toUpperCase(); } /** * 重写equals方法 * * @param obj * 对象 * @return 是否相等 */ @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } if (this == obj) { return true; } Filter other = (Filter) obj; return new EqualsBuilder().append(getProperty(), other.getProperty()).append(getOperator(), other.getOperator()).append(getValue(), other.getValue()).isEquals(); } /** * 重写hashCode方法 * * @return HashCode */ @Override public int hashCode() { return new HashCodeBuilder(17, 37).append(getProperty()).append(getOperator()).append(getValue()).toHashCode(); } } ================================================ FILE: src/main/java/io/sdb/common/entity/Node.java ================================================ package io.sdb.common.entity; import lombok.Data; import java.util.List; abstract class P{ public void print(){ System.out.println("pppppppppppp"); } } class C extends P{ public void print(){ System.out.println("ccccccccccccccc"); } } class A { public void print(T param){ param.print(); } } @Data public abstract class Node { private Long id; private Long parentId; private List children; public Node() { } public Node(Long id, Long pid) { super(); this.id = id; this.parentId = pid; } public static void main(String[] args) { A a = new A(); a.print(new C()); } } ================================================ FILE: src/main/java/io/sdb/common/entity/Order.java ================================================ package io.sdb.common.entity; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import java.io.Serializable; /** * 排序 * * */ public class Order implements Serializable { private static final long serialVersionUID = -3078342809727773232L; /** * 方向 */ public enum Direction { /** 递增 */ asc, /** 递减 */ desc } /** 默认方向 */ private static final Order.Direction DEFAULT_DIRECTION = Order.Direction.desc; /** 属性 */ private String property; /** 方向 */ private Order.Direction direction = DEFAULT_DIRECTION; /** * 构造方法 */ public Order() { } /** * 构造方法 * * @param property * 属性 * @param direction * 方向 */ public Order(String property, Order.Direction direction) { this.property = property; this.direction = direction; } /** * 返回递增排序 * * @param property * 属性 * @return 递增排序 */ public static Order asc(String property) { return new Order(property, Order.Direction.asc); } /** * 返回递减排序 * * @param property * 属性 * @return 递减排序 */ public static Order desc(String property) { return new Order(property, Order.Direction.desc); } /** * 获取属性 * * @return 属性 */ public String getProperty() { return property; } /** * 设置属性 * * @param property * 属性 */ public void setProperty(String property) { this.property = property; } /** * 获取方向 * * @return 方向 */ public Order.Direction getDirection() { return direction; } /** * 设置方向 * * @param direction * 方向 */ public void setDirection(Order.Direction direction) { this.direction = direction; } /** * 重写equals方法 * * @param obj * 对象 * @return 是否相等 */ @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } if (this == obj) { return true; } Order other = (Order) obj; return new EqualsBuilder().append(getProperty(), other.getProperty()).append(getDirection(), other.getDirection()).isEquals(); } /** * 重写hashCode方法 * * @return HashCode */ @Override public int hashCode() { return new HashCodeBuilder(17, 37).append(getProperty()).append(getDirection()).toHashCode(); } } ================================================ FILE: src/main/java/io/sdb/common/entity/kuaidi100/MapCustomConverter.java ================================================ package io.sdb.common.entity.kuaidi100; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter; import com.thoughtworks.xstream.io.ExtendedHierarchicalStreamWriterHelper; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.mapper.Mapper; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; public class MapCustomConverter extends AbstractCollectionConverter { public MapCustomConverter(Mapper mapper) { super(mapper); } @SuppressWarnings("rawtypes") public boolean canConvert(Class type) { // 这里只列了HashMap一种情况 return type.equals(HashMap.class); } @SuppressWarnings("rawtypes") public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { Map map = (Map) source; for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { Entry entry = (Entry) iterator.next(); ExtendedHierarchicalStreamWriterHelper.startNode(writer, entry.getKey().toString(), Entry.class); writer.setValue(entry.getValue().toString()); writer.endNode(); } } @SuppressWarnings("rawtypes") public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { Map map = (Map) createCollection(context.getRequiredType()); populateMap(reader, context, map); return map; } @SuppressWarnings({ "rawtypes", "unchecked" }) protected void populateMap(HierarchicalStreamReader reader, UnmarshallingContext context, Map map) { while (reader.hasMoreChildren()) { reader.moveDown(); Object key = reader.getNodeName(); Object value = reader.getValue(); map.put(key, value); reader.moveUp(); } } } ================================================ FILE: src/main/java/io/sdb/common/entity/kuaidi100/NoticeRequest.java ================================================ package io.sdb.common.entity.kuaidi100; import com.jfinal.kit.JsonKit; import com.thoughtworks.xstream.XStream; public class NoticeRequest { private static XStream xstream; private String status = ""; private String billstatus = ""; private String message = ""; private Result lastResult = new Result(); public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getBillstatus() { return billstatus; } public void setBillstatus(String billstatus) { this.billstatus = billstatus; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Result getLastResult() { return lastResult; } public void setLastResult(Result lastResult) { this.lastResult = lastResult; } private static XStream getXStream() { if (xstream == null) { xstream = new XStream(); xstream.autodetectAnnotations(true); xstream.alias("pushRequest", NoticeRequest.class); xstream.alias("item", ResultItem.class); } return xstream; } public String toXml() { return "\r\n" + getXStream().toXML(this); } public static NoticeRequest fromXml(String sXml) { return (NoticeRequest) getXStream().fromXML(sXml); } public static void main(String[] args) { NoticeRequest req = new NoticeRequest(); req.setBillstatus("polling"); req.setMessage("到达"); req.setStatus("check"); req.getLastResult().setCom("yauntong"); req.getLastResult().setCondition("F00"); req.getLastResult().setIscheck("0"); req.getLastResult().setNu("V030344422"); req.getLastResult().setState("0"); req.getLastResult().setStatus("200"); req.getLastResult().setMessage("ok"); ResultItem item = new ResultItem(); item.setContext("上海分拨中心/装件入车扫描 "); item.setFtime("2012-08-28 16:33:19"); item.setTime("2012-08-28 16:33:19"); req.getLastResult().getData().add(item); item = new ResultItem(); item.setContext("上海分拨中心/下车扫描"); item.setFtime("2012-08-27 23:22:42"); item.setTime("2012-08-27 23:22:42"); req.getLastResult().getData().add(item); System.out.println(JsonKit.toJson(req)); } } ================================================ FILE: src/main/java/io/sdb/common/entity/kuaidi100/NoticeResponse.java ================================================ package io.sdb.common.entity.kuaidi100; import com.thoughtworks.xstream.XStream; public class NoticeResponse { private static XStream xstream; private Boolean result; private String returnCode; private String message; public Boolean getResult() { return result; } public void setResult(Boolean result) { this.result = result; } public String getReturnCode() { return returnCode; } public void setReturnCode(String returnCode) { this.returnCode = returnCode; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } private static XStream getXStream() { if (xstream == null) { xstream = new XStream(); xstream.autodetectAnnotations(true); xstream.alias("pushResponse", NoticeResponse.class); } return xstream; } public String toXml(){ return "\r\n" + getXStream().toXML(this); } public static NoticeResponse fromXml(String sXml){ return (NoticeResponse)getXStream().fromXML(sXml); } public static void main(String[] args){ NoticeResponse req = new NoticeResponse(); req.setMessage("成功"); req.setResult(true); req.setReturnCode("200"); System.out.print(req.toXml()); } } ================================================ FILE: src/main/java/io/sdb/common/entity/kuaidi100/Result.java ================================================ package io.sdb.common.entity.kuaidi100; import com.alibaba.fastjson.annotation.JSONField; import com.jfinal.kit.JsonKit; import java.util.ArrayList; public class Result { private String message = ""; private String nu = ""; @JSONField(serialize = false) private String ischeck = "0"; @JSONField(serialize = false) private String com = ""; private String status = "0"; @JSONField(serialize = false) private ArrayList data = new ArrayList(); @JSONField(serialize = false) private String state = "0"; @JSONField(serialize = false) private String condition = ""; @SuppressWarnings("unchecked") public Result clone() { Result r = new Result(); r.setCom(this.getCom()); r.setIscheck(this.getIscheck()); r.setMessage(this.getMessage()); r.setNu(this.getNu()); r.setState(this.getState()); r.setStatus(this.getStatus()); r.setCondition(this.getCondition()); r.setData((ArrayList) this.getData().clone()); return r; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getNu() { return nu; } public void setNu(String nu) { this.nu = nu; } public String getCom() { return com; } public void setCom(String com) { this.com = com; } public ArrayList getData() { return data; } public void setData(ArrayList data) { this.data = data; } public String getIscheck() { return ischeck; } public void setIscheck(String ischeck) { this.ischeck = ischeck; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getCondition() { return condition; } public void setCondition(String condition) { this.condition = condition; } @Override public String toString() { return JsonKit.toJson(this); } } ================================================ FILE: src/main/java/io/sdb/common/entity/kuaidi100/ResultItem.java ================================================ package io.sdb.common.entity.kuaidi100; public class ResultItem { String time; String context; String ftime; public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String getContext() { return context; } public void setContext(String context) { this.context = context; } public String getFtime() { return ftime; } public void setFtime(String ftime) { this.ftime = ftime; } } ================================================ FILE: src/main/java/io/sdb/common/entity/kuaidi100/TaskRequest.java ================================================ package io.sdb.common.entity.kuaidi100; import com.jfinal.kit.JsonKit; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.mapper.DefaultMapper; import java.util.HashMap; import java.util.Map.Entry; public class TaskRequest { private static XStream xstream; private String company; private String number; private String from; private String to; private String key; private String src; private HashMap parameters = new HashMap(); public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public String getTo() { return to; } public void setTo(String to) { this.to = to; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getSrc() { return src; } public void setSrc(String src) { this.src = src; } public HashMap getParameters() { return parameters; } public void setParameters(HashMap parameters) { this.parameters = parameters; } @Override public String toString() { return JsonKit.toJson(this); } private static XStream getXStream() { if (xstream == null) { xstream = new XStream(); xstream.registerConverter(new MapCustomConverter(new DefaultMapper(XStream.class.getClassLoader()))); xstream.autodetectAnnotations(true); xstream.alias("orderRequest", TaskRequest.class); xstream.alias("property", Entry.class); } return xstream; } public String toXml(){ return "\r\n" + getXStream().toXML(this); } public static TaskRequest fromXml(String sXml){ return (TaskRequest)getXStream().fromXML(sXml); } } ================================================ FILE: src/main/java/io/sdb/common/entity/kuaidi100/TaskResponse.java ================================================ package io.sdb.common.entity.kuaidi100; import com.thoughtworks.xstream.XStream; public class TaskResponse { private static XStream xstream; private Boolean result; private String returnCode; private String message; public Boolean getResult() { return result; } public void setResult(Boolean result) { this.result = result; } public String getReturnCode() { return returnCode; } public void setReturnCode(String returnCode) { this.returnCode = returnCode; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } private static XStream getXStream() { if (xstream == null) { xstream = new XStream(); xstream.autodetectAnnotations(true); xstream.alias("orderResponse", TaskResponse.class); } return xstream; } public String toXml(){ return "\r\n" + getXStream().toXML(this); } public static TaskResponse fromXml(String sXml){ return (TaskResponse)getXStream().fromXML(sXml); } public static void main(String[] args){ TaskResponse req = new TaskResponse(); req.setMessage("订阅成功"); req.setResult(true); req.setReturnCode("200"); System.out.print(req.toXml()); } } ================================================ FILE: src/main/java/io/sdb/common/exception/RRException.java ================================================ package io.sdb.common.exception; import io.sdb.enums.ResultEnum; /** * 自定义异常 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年10月27日 下午10:11:27 */ public class RRException extends RuntimeException { private static final long serialVersionUID = 1L; private String msg; private int code = 500; public RRException(String msg) { super(msg); this.msg = msg; } public RRException(String msg, Throwable e) { super(msg, e); this.msg = msg; } public RRException(String msg, int code) { super(msg); this.msg = msg; this.code = code; } public RRException(String msg, int code, Throwable e) { super(msg, e); this.msg = msg; this.code = code; } public RRException(ResultEnum resultEnum) { super(resultEnum.getMessage()); this.msg = resultEnum.getMessage(); this.code = resultEnum.getCode(); } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } } ================================================ FILE: src/main/java/io/sdb/common/exception/RRExceptionHandler.java ================================================ package io.sdb.common.exception; import io.sdb.common.utils.R; import org.apache.shiro.authz.AuthorizationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.servlet.NoHandlerFoundException; /** * 异常处理器 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年10月27日 下午10:16:19 */ @RestControllerAdvice public class RRExceptionHandler { private Logger logger = LoggerFactory.getLogger(getClass()); /** * 处理自定义异常 */ @ExceptionHandler(RRException.class) public R handleRRException(RRException e){ R r = new R(); r.put("code", e.getCode()); r.put("msg", e.getMessage()); return r; } @ExceptionHandler(NoHandlerFoundException.class) public R handlerNoFoundException(Exception e) { logger.error(e.getMessage(), e); return R.error(404, "路径不存在,请检查路径是否正确"); } @ExceptionHandler(DuplicateKeyException.class) public R handleDuplicateKeyException(DuplicateKeyException e){ logger.error(e.getMessage(), e); return R.error("数据库中已存在该记录"); } @ExceptionHandler(AuthorizationException.class) public R handleAuthorizationException(AuthorizationException e){ logger.error(e.getMessage(), e); return R.error("没有权限,请联系管理员授权"); } @ExceptionHandler(Exception.class) public R handleException(Exception e){ logger.error(e.getMessage(), e); return R.error(); } } ================================================ FILE: src/main/java/io/sdb/common/utils/ConfigConstant.java ================================================ package io.sdb.common.utils; /** * 系统参数相关Key * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-26 10:33 */ public class ConfigConstant { /** * 云存储配置KEY */ public final static String CLOUD_STORAGE_CONFIG_KEY = "CLOUD_STORAGE_CONFIG_KEY"; } ================================================ FILE: src/main/java/io/sdb/common/utils/Constant.java ================================================ package io.sdb.common.utils; /** * 常量 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年11月15日 下午1:23:52 */ public class Constant { /** 超级管理员ID */ public static final int SUPER_ADMIN = 1; /** * 菜单类型 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年11月15日 下午1:24:29 */ public enum MenuType { /** * 目录 */ CATALOG(0), /** * 菜单 */ MENU(1), /** * 按钮 */ BUTTON(2); private int value; MenuType(int value) { this.value = value; } public int getValue() { return value; } } /** * 定时任务状态 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年12月3日 上午12:07:22 */ public enum ScheduleStatus { /** * 正常 */ NORMAL(0), /** * 暂停 */ PAUSE(1); private int value; ScheduleStatus(int value) { this.value = value; } public int getValue() { return value; } } /** * 云服务商 */ public enum CloudService { /** * 七牛云 */ QINIU(1), /** * 阿里云 */ ALIYUN(2), /** * 腾讯云 */ QCLOUD(3); private int value; CloudService(int value) { this.value = value; } public int getValue() { return value; } } /** * 是否上架 */ public enum Marketable { /** * 下架 */ OBTAINED(0), /** * 上架 */ SHELF(1); private int value; Marketable(int value) {this.value = value; } public int getValue() {return value;} } } ================================================ FILE: src/main/java/io/sdb/common/utils/DateUtils.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.common.utils; import org.apache.commons.lang.StringUtils; import org.joda.time.DateTime; import org.joda.time.LocalDate; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; import java.text.SimpleDateFormat; import java.util.Date; /** * 日期处理 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年12月21日 下午12:53:33 */ public class DateUtils { /** 时间格式(yyyy-MM-dd) */ public final static String DATE_PATTERN = "yyyy-MM-dd"; /** 时间格式(yyyy-MM-dd HH:mm:ss) */ public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; /** * 日期格式化 日期格式为:yyyy-MM-dd * @param date 日期 * @return 返回yyyy-MM-dd格式日期 */ public static String format(Date date) { return format(date, DATE_PATTERN); } /** * 日期格式化 日期格式为:yyyy-MM-dd * @param date 日期 * @param pattern 格式,如:DateUtils.DATE_TIME_PATTERN * @return 返回yyyy-MM-dd格式日期 */ public static String format(Date date, String pattern) { if(date != null){ SimpleDateFormat df = new SimpleDateFormat(pattern); return df.format(date); } return null; } /** * 字符串转换成日期 * @param strDate 日期字符串 * @param pattern 日期的格式,如:DateUtils.DATE_TIME_PATTERN */ public static Date stringToDate(String strDate, String pattern) { if (StringUtils.isBlank(strDate)){ return null; } DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern); return fmt.parseLocalDateTime(strDate).toDate(); } /** * 根据周数,获取开始日期、结束日期 * @param week 周期 0本周,-1上周,-2上上周,1下周,2下下周 * @return 返回date[0]开始日期、date[1]结束日期 */ public static Date[] getWeekStartAndEnd(int week) { DateTime dateTime = new DateTime(); LocalDate date = new LocalDate(dateTime.plusWeeks(week)); date = date.dayOfWeek().withMinimumValue(); Date beginDate = date.toDate(); Date endDate = date.plusDays(6).toDate(); return new Date[]{beginDate, endDate}; } /** * 对日期的【秒】进行加/减 * * @param date 日期 * @param seconds 秒数,负数为减 * @return 加/减几秒后的日期 */ public static Date addDateSeconds(Date date, int seconds) { DateTime dateTime = new DateTime(date); return dateTime.plusSeconds(seconds).toDate(); } /** * 对日期的【分钟】进行加/减 * * @param date 日期 * @param minutes 分钟数,负数为减 * @return 加/减几分钟后的日期 */ public static Date addDateMinutes(Date date, int minutes) { DateTime dateTime = new DateTime(date); return dateTime.plusMinutes(minutes).toDate(); } /** * 对日期的【小时】进行加/减 * * @param date 日期 * @param hours 小时数,负数为减 * @return 加/减几小时后的日期 */ public static Date addDateHours(Date date, int hours) { DateTime dateTime = new DateTime(date); return dateTime.plusHours(hours).toDate(); } /** * 对日期的【天】进行加/减 * * @param date 日期 * @param days 天数,负数为减 * @return 加/减几天后的日期 */ public static Date addDateDays(Date date, int days) { DateTime dateTime = new DateTime(date); return dateTime.plusDays(days).toDate(); } /** * 对日期的【周】进行加/减 * * @param date 日期 * @param weeks 周数,负数为减 * @return 加/减几周后的日期 */ public static Date addDateWeeks(Date date, int weeks) { DateTime dateTime = new DateTime(date); return dateTime.plusWeeks(weeks).toDate(); } /** * 对日期的【月】进行加/减 * * @param date 日期 * @param months 月数,负数为减 * @return 加/减几月后的日期 */ public static Date addDateMonths(Date date, int months) { DateTime dateTime = new DateTime(date); return dateTime.plusMonths(months).toDate(); } /** * 对日期的【年】进行加/减 * * @param date 日期 * @param years 年数,负数为减 * @return 加/减几年后的日期 */ public static Date addDateYears(Date date, int years) { DateTime dateTime = new DateTime(date); return dateTime.plusYears(years).toDate(); } } ================================================ FILE: src/main/java/io/sdb/common/utils/EnumUtil.java ================================================ package io.sdb.common.utils; import io.sdb.enums.IEnum; public class EnumUtil { public static T getByCode(Integer code, Class enumClass) { for (T each: enumClass.getEnumConstants()) { if (code.equals(each.getCode())) { return each; } } return null; } public static T getByMsg(String msg, Class enumClass) { for (T each: enumClass.getEnumConstants()) { if (msg.equalsIgnoreCase(each.getMessage())) { return each; } } return null; } } ================================================ FILE: src/main/java/io/sdb/common/utils/GenericsUtils.java ================================================ package io.sdb.common.utils; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class GenericsUtils { /** * 通过反射,获得定义Class时声明的父类的范型参数的类型. * 如public BookManager extends GenricManager * * @param clazz The class to introspect * @return the first generic declaration, or Object.class if cannot be determined */ public static Class getSuperClassGenricType(Class clazz) { return getSuperClassGenricType(clazz, 0); } /** * 通过反射,获得定义Class时声明的父类的范型参数的类型. * 如public BookManager extends GenricManager * * @param clazz clazz The class to introspect * @param index the Index of the generic ddeclaration,start from 0. */ public static Class getSuperClassGenricType(Class clazz, int index) throws IndexOutOfBoundsException { Type genType = clazz.getGenericSuperclass(); if (!(genType instanceof ParameterizedType)) { return Object.class; } Type[] params = ((ParameterizedType) genType).getActualTypeArguments(); if (index >= params.length || index < 0) { return Object.class; } if (!(params[index] instanceof Class)) { return Object.class; } return (Class) params[index]; } } ================================================ FILE: src/main/java/io/sdb/common/utils/HttpContextUtils.java ================================================ package io.sdb.common.utils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; public class HttpContextUtils { public static HttpServletRequest getHttpServletRequest() { return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); } public static String getDomain(){ HttpServletRequest request = getHttpServletRequest(); StringBuffer url = request.getRequestURL(); return url.delete(url.length() - request.getRequestURI().length(), url.length()).toString(); } public static String getOrigin(){ HttpServletRequest request = getHttpServletRequest(); return request.getHeader("Origin"); } } ================================================ FILE: src/main/java/io/sdb/common/utils/HttpRequest.java ================================================ package io.sdb.common.utils; import com.jfinal.kit.LogKit; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.StatusLine; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; public class HttpRequest { public static String addUrl(String head, String tail) { if (head.endsWith("/")) { if (tail.startsWith("/")) { return head.substring(0, head.length() - 1) + tail; } else { return head + tail; } } else { if (tail.startsWith("/")) { return head + tail; } else { return head + "/" + tail; } } } public synchronized static String postData(String url, Map params) throws Exception { CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); //拼接参数 List nvps = new ArrayList(); NameValuePair[] nameValuePairArray = assembleRequestParams(params); for (NameValuePair value:nameValuePairArray ) { nvps.add(value); } httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8")); CloseableHttpResponse response = httpclient.execute(httpPost); String result = ""; try { StatusLine statusLine = response.getStatusLine(); HttpEntity entity = response.getEntity(); // do something useful with the response body if (entity != null) { result = EntityUtils.toString(entity, "UTF-8"); }else{ LogKit.error("httpRequest postData1 error entity = null code = "+statusLine.getStatusCode()); } // and ensure it is fully consumed //消耗掉response EntityUtils.consume(entity); } finally { response.close(); } return result; } public synchronized static String postData(String url) throws Exception { CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); CloseableHttpResponse response = httpclient.execute(httpPost); String result = ""; try { StatusLine statusLine = response.getStatusLine(); HttpEntity entity = response.getEntity(); // do something useful with the response body if (entity != null) { result = EntityUtils.toString(entity, "UTF-8"); }else{ LogKit.error("httpRequest postData2 error entity = null code = "+statusLine.getStatusCode()); } // and ensure it is fully consumed //消耗掉response EntityUtils.consume(entity); } finally { response.close(); } return result; } /** * 组装http请求参数 * @return */ private synchronized static NameValuePair[] assembleRequestParams(Map data) { final List nameValueList = new ArrayList(); Iterator> it = data.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); nameValueList.add(new BasicNameValuePair((String) entry.getKey(), (String) entry.getValue())); } return nameValueList.toArray(new NameValuePair[nameValueList.size()]); } } ================================================ FILE: src/main/java/io/sdb/common/utils/IPUtils.java ================================================ package io.sdb.common.utils; import com.alibaba.druid.util.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletRequest; /** * IP地址 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017年3月8日 下午12:57:02 */ public class IPUtils { private static Logger logger = LoggerFactory.getLogger(IPUtils.class); /** * 获取IP地址 * * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址 * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址 */ public static String getIpAddr(HttpServletRequest request) { String ip = null; try { ip = request.getHeader("x-forwarded-for"); if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); } if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } } catch (Exception e) { logger.error("IPUtils ERROR ", e); } // //使用代理,则获取第一个IP地址 // if(StringUtils.isEmpty(ip) && ip.length() > 15) { // if(ip.indexOf(",") > 0) { // ip = ip.substring(0, ip.indexOf(",")); // } // } return ip; } } ================================================ FILE: src/main/java/io/sdb/common/utils/JfEnjoy.java ================================================ package io.sdb.common.utils; import com.jfinal.kit.Kv; import com.jfinal.kit.PathKit; import com.jfinal.template.Engine; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class JfEnjoy { /** * 根据具体魔板生成文件 * @param templateFileName 模板文件名称 * @param kv 渲染参数 * @param filePath 输出目录 * @return */ public boolean render(String templateFileName, Kv kv, StringBuilder filePath) { BufferedWriter output = null; try { String baseTemplatePath = new StringBuilder(PathKit.getWebRootPath()) .append("/src/main/java/") .append(PathKit.getPackagePath(this)) .append("/tpl") .toString(); File file = new File(filePath.toString()); if(file.exists()){ return true; } File path = new File(file.getParent()); if ( ! path.exists() ) { path.mkdirs(); } output = new BufferedWriter(new FileWriter(file)); Engine.use() .setBaseTemplatePath(baseTemplatePath) .getTemplate(templateFileName) .render(kv, output); return true; } catch (IOException e) { e.printStackTrace(); return false; }finally{ try { if( output != null ) output.close(); } catch (IOException e) {} } } /** * 根据自定义内容生成文件 * @param data 自定义内容 * @param filePath 输出目录 * @return */ public boolean render(String data, StringBuilder filePath) { BufferedWriter output = null; try { File file = new File(filePath.toString()); File path = new File(file.getParent()); if ( ! path.exists() ) { path.mkdirs(); } output = new BufferedWriter(new FileWriter(file)); output.write(data); return true; } catch (IOException e) { e.printStackTrace(); return false; }finally{ try { if( output != null ) output.close(); } catch (IOException e) {} } } } ================================================ FILE: src/main/java/io/sdb/common/utils/JsonUtils.java ================================================ package io.sdb.common.utils; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; /** * @author Binary Wang */ public class JsonUtils { private static final ObjectMapper JSON = new ObjectMapper(); static { JSON.setSerializationInclusion(Include.NON_NULL); JSON.configure(SerializationFeature.INDENT_OUTPUT, Boolean.TRUE); } public static String toJson(Object obj) { try { return JSON.writeValueAsString(obj); } catch (JsonProcessingException e) { e.printStackTrace(); } return null; } } ================================================ FILE: src/main/java/io/sdb/common/utils/JwtUtils.java ================================================ package io.sdb.common.utils; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Date; /** * jwt工具类 * @author chenshun * @email sunlightcs@gmail.com * @date 2017/9/21 22:21 */ @ConfigurationProperties(prefix = "sdb.jwt") @Component public class JwtUtils { private Logger logger = LoggerFactory.getLogger(getClass()); private String secret; private long expire; private String header; /** * 生成jwt token */ public String generateToken(String userId) { Date nowDate = new Date(); //过期时间 Date expireDate = new Date(nowDate.getTime() + expire * 1000); return Jwts.builder() .setHeaderParam("typ", "JWT") .setSubject(userId+"") .setIssuedAt(nowDate) .setExpiration(expireDate) .signWith(SignatureAlgorithm.HS512, secret) .compact(); } public Claims getClaimByToken(String token) { try { return Jwts.parser() .setSigningKey(secret) .parseClaimsJws(token) .getBody(); }catch (Exception e){ logger.debug("validate is token error ", e); return null; } } /** * token是否过期 * @return true:过期 */ public boolean isTokenExpired(Date expiration) { return expiration.before(new Date()); } public String getSecret() { return secret; } public void setSecret(String secret) { this.secret = secret; } public long getExpire() { return expire; } public void setExpire(long expire) { this.expire = expire; } public String getHeader() { return header; } public void setHeader(String header) { this.header = header; } } ================================================ FILE: src/main/java/io/sdb/common/utils/MapUtils.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.common.utils; import java.util.HashMap; /** * Map工具类 * * @author Mark sunlightcs@gmail.com * @since 2.0.0 */ public class MapUtils extends HashMap { @Override public MapUtils put(String key, Object value) { super.put(key, value); return this; } } ================================================ FILE: src/main/java/io/sdb/common/utils/MoneyUtils.java ================================================ package io.sdb.common.utils; public class MoneyUtils { /** * 数字金额大写转换,思想先写个完整的然后将如零拾替换成零 要用到正则表达式 */ public static String digitUppercase(double n) { String fraction[] = {"角", "分"}; String digit[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; String unit[][] = {{"元", "万", "亿"}, {"", "拾", "佰", "仟"}}; String head = n < 0 ? "负" : ""; n = Math.abs(n); String s = ""; for (int i = 0; i < fraction.length; i++) { s += (digit[(int) (Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", ""); } if (s.length() < 1) { s = "整"; } int integerPart = (int) Math.floor(n); for (int i = 0; i < unit[0].length && integerPart > 0; i++) { String p = ""; for (int j = 0; j < unit[1].length && n > 0; j++) { p = digit[integerPart % 10] + unit[1][j] + p; integerPart = integerPart / 10; } s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s; } return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整"); } private void number2Invoice(int num) { //12345 String mark[] = new String[]{"", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千", "万"}; String numCn[] = new String[]{"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; char[] numArrRev = String.valueOf(num).toCharArray(); StringBuffer container = new StringBuffer(); for (int i = 0; i < numArrRev.length; i++) { Integer val = Integer.valueOf(String.valueOf(numArrRev[i])); String number = numCn[val]; int x = numArrRev.length - i - 1; String sign = mark[x]; if (val == 0) { if (x % 4 != 0) {// 删除单位 sign = ""; } if (i < numArrRev.length - 1) { Integer val1 = Integer.parseInt(String.valueOf(numArrRev[i + 1])); if (val == 0 && val == val1) { number = ""; } else if (val == 0 && ("万".equals(sign) || "亿".equals(sign))) { number = ""; } } else if (i == numArrRev.length - 1) { number = ""; } } container.append(number + sign); } System.out.println(num + "-->" + container.toString()); } } ================================================ FILE: src/main/java/io/sdb/common/utils/PageUtils.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.common.utils; import java.io.Serializable; import java.util.List; /** * 分页工具类 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年11月4日 下午12:59:00 */ public class PageUtils implements Serializable { private static final long serialVersionUID = 1L; //总记录数 private int totalCount; //每页记录数 private int pageSize; //总页数 private int totalPage; //当前页数 private int currPage; //列表数据 private List list; /** * 分页 * @param list 列表数据 * @param totalCount 总记录数 * @param pageSize 每页记录数 * @param currPage 当前页数 */ public PageUtils(List list, int totalCount, int pageSize, int currPage) { this.list = list; this.totalCount = totalCount; this.pageSize = pageSize; this.currPage = currPage; this.totalPage = (int)Math.ceil((double)totalCount/pageSize); } /** * 分页 */ public PageUtils(com.jfinal.plugin.activerecord.Page page) { this.list = page.getList(); this.totalCount = page.getTotalRow(); this.pageSize = page.getPageSize(); this.currPage = page.getPageNumber(); this.totalPage = page.getTotalPage(); } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getCurrPage() { return currPage; } public void setCurrPage(int currPage) { this.currPage = currPage; } public List getList() { return list; } public void setList(List list) { this.list = list; } } ================================================ FILE: src/main/java/io/sdb/common/utils/Query.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.common.utils; import io.sdb.common.xss.SQLFilter; import io.sdb.common.entity.Order; import lombok.Data; import org.apache.commons.lang.StringUtils; import java.util.LinkedHashMap; import java.util.Map; /** * 查询参数 * * @author Mark sunlightcs@gmail.com * @since 2.0.0 2017-03-14 */ @Data public class Query extends LinkedHashMap { private static final long serialVersionUID = 1L; /** * 当前页码 */ private int currPage = 1; /** * 每页条数 */ private int limit = 10; private Order order; public Query(Map params){ this.putAll(params); //分页参数 if(params.get("page") != null){ currPage = Integer.parseInt((String)params.get("page")); } if(params.get("limit") != null){ limit = Integer.parseInt((String)params.get("limit")); } this.put("offset", (currPage - 1) * limit); this.put("page", currPage); this.put("limit", limit); //防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险) String sidx = SQLFilter.sqlInject((String)params.get("sidx")); String strOrder = SQLFilter.sqlInject((String)params.get("order")); this.put("sidx", sidx); this.put("order", strOrder); //排序 if(StringUtils.isNotBlank(sidx) && StringUtils.isNotBlank(strOrder)){ order = new Order(); order.setProperty(sidx); order.setDirection("ASC".equalsIgnoreCase(strOrder)? Order.Direction.asc: Order.Direction.desc); } } public int getCurrPage() { return currPage; } public int getLimit() { return limit; } } ================================================ FILE: src/main/java/io/sdb/common/utils/R.java ================================================ package io.sdb.common.utils; import io.sdb.enums.ResultEnum; import org.apache.http.HttpStatus; import java.util.HashMap; import java.util.Map; /** * 返回数据 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年10月27日 下午9:59:27 */ public class R extends HashMap { private static final long serialVersionUID = 1L; public R() { put("code", 0); put("msg", "success"); } public static R error() { return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员"); } public static R error(String msg) { return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg); } public static R error(int code, String msg) { R r = new R(); r.put("code", code); r.put("msg", msg); return r; } public static R ok(String msg) { R r = new R(); r.put("msg", msg); return r; } public static R ok(Map map) { R r = new R(); r.putAll(map); return r; } public static R ok() { return new R(); } public R put(String key, Object value) { super.put(key, value); return this; } public static R error(ResultEnum resultEnum){ return error(resultEnum.getCode(), resultEnum.getMessage()); } } ================================================ FILE: src/main/java/io/sdb/common/utils/RecordUtils.java ================================================ package io.sdb.common.utils; import com.alibaba.fastjson.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.jfinal.plugin.activerecord.Record; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class RecordUtils { private static final Logger logger = LoggerFactory.getLogger(RecordUtils.class); /** * Record 转 任意实例类 * * @param record * @return */ public static T converModel(Record record, Class clazz) { String str = JSON.toJSONString(record.getColumns()); T obj = JSON.parseObject(str, clazz); return obj; } /** * Record 转 任意实例类 * * @param recordList * @return */ public static List converModel(List recordList, Class clazz) { List> list = recordList.stream().map(item -> { return item.getColumns(); }).collect(Collectors.toList()); String str = JSON.toJSONString(list); List arr = JSON.parseArray(str, clazz); return arr; } } ================================================ FILE: src/main/java/io/sdb/common/utils/RedisKeys.java ================================================ package io.sdb.common.utils; /** * Redis所有Keys * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-07-18 19:51 */ public class RedisKeys { public static String getSysConfigKey(String key){ return "sys:config:" + key; } } ================================================ FILE: src/main/java/io/sdb/common/utils/RedisLock.java ================================================ package io.sdb.common.utils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; @Component @Slf4j public class RedisLock { @Autowired private StringRedisTemplate redisTemplate; public boolean lock(String key, String value) { if (redisTemplate.opsForValue().setIfAbsent(key, value)) { log.info("【RedisLock】成功加锁 setIfAbsent >>>>>>>>>>>>>>>>>>>> threadId= {} key = {} aoldValue = {} time= {}", Thread.currentThread().getId(),key, System.currentTimeMillis()); return true; } String currentValue = redisTemplate.opsForValue().get(key); if (!StringUtils.isEmpty(currentValue) && Long.parseLong(currentValue) < System.currentTimeMillis()) { log.info("【redislock 超时解锁】currentValue={} System.currentTimeMillis()={} threadId= {} time= {}", currentValue, System.currentTimeMillis(), Thread.currentThread().getId(), System.currentTimeMillis()); String oldValue = redisTemplate.opsForValue().getAndSet(key, value); if (!StringUtils.isEmpty(oldValue) && oldValue.equals(currentValue)) { log.info("【RedisLock】成功加锁 超时解锁 >>>>>>>>>>>>>>>>>>>> threadId= {}", Thread.currentThread().getId()); return true; } } return false; } public void unlock(String key, String value) { try { String currentValue = redisTemplate.opsForValue().get(key); if (!StringUtils.isEmpty(currentValue) && currentValue.equals(value)) { redisTemplate.opsForValue().getOperations().delete(key); log.info("【RedisLock】unlock >>>>>>>>>>>>>>>>>>>> threadId= {} stock = {} time= {}", Thread.currentThread().getId(), 0, System.currentTimeMillis()); return; } } catch (Exception e) { log.error("【redis分布式做】解锁", e); } } } ================================================ FILE: src/main/java/io/sdb/common/utils/RedisUtils.java ================================================ package io.sdb.common.utils; import com.google.gson.Gson; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.*; import org.springframework.stereotype.Component; import java.util.concurrent.TimeUnit; /** * Redis工具类 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-07-17 21:12 */ @Component public class RedisUtils { @Autowired private RedisTemplate redisTemplate; @Autowired private ValueOperations valueOperations; @Autowired private HashOperations hashOperations; @Autowired private ListOperations listOperations; @Autowired private SetOperations setOperations; @Autowired private ZSetOperations zSetOperations; /** 默认过期时长,单位:秒 */ public final static long DEFAULT_EXPIRE = 60 * 60 * 24; /** 不设置过期时长 */ public final static long NOT_EXPIRE = -1; private final static Gson gson = new Gson(); public void set(String key, Object value, long expire){ valueOperations.set(key, toJson(value)); if(expire != NOT_EXPIRE){ redisTemplate.expire(key, expire, TimeUnit.SECONDS); } } public void set(String key, Object value){ set(key, value, DEFAULT_EXPIRE); } public T get(String key, Class clazz, long expire) { String value = valueOperations.get(key); if(expire != NOT_EXPIRE){ redisTemplate.expire(key, expire, TimeUnit.SECONDS); } return value == null ? null : fromJson(value, clazz); } public T get(String key, Class clazz) { return get(key, clazz, NOT_EXPIRE); } public String get(String key, long expire) { String value = valueOperations.get(key); if(expire != NOT_EXPIRE){ redisTemplate.expire(key, expire, TimeUnit.SECONDS); } return value; } public String get(String key) { return get(key, NOT_EXPIRE); } public void delete(String key) { redisTemplate.delete(key); } /** * Object转成JSON数据 */ private String toJson(Object object){ if(object instanceof Integer || object instanceof Long || object instanceof Float || object instanceof Double || object instanceof Boolean || object instanceof String){ return String.valueOf(object); } return gson.toJson(object); } /** * JSON数据,转成Object */ private T fromJson(String json, Class clazz){ return gson.fromJson(json, clazz); } } ================================================ FILE: src/main/java/io/sdb/common/utils/ShiroUtils.java ================================================ package io.sdb.common.utils; import io.sdb.common.exception.RRException; import io.sdb.model.SysUser; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; /** * Shiro工具类 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年11月12日 上午9:49:19 */ public class ShiroUtils { public static Session getSession() { return SecurityUtils.getSubject().getSession(); } public static Subject getSubject() { return SecurityUtils.getSubject(); } public static SysUser getUserEntity() { return (SysUser)SecurityUtils.getSubject().getPrincipal(); } public static Long getUserId() { return getUserEntity().getUserId(); } public static void setSessionAttribute(Object key, Object value) { getSession().setAttribute(key, value); } public static Object getSessionAttribute(Object key) { return getSession().getAttribute(key); } public static boolean isLogin() { return SecurityUtils.getSubject().getPrincipal() != null; } public static String getKaptcha(String key) { Object kaptcha = getSessionAttribute(key); if(kaptcha == null){ throw new RRException("验证码已失效"); } getSession().removeAttribute(key); return kaptcha.toString(); } } ================================================ FILE: src/main/java/io/sdb/common/utils/SpringContextUtils.java ================================================ package io.sdb.common.utils; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; /** * Spring Context 工具类 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年11月29日 下午11:45:51 */ @Component public class SpringContextUtils implements ApplicationContextAware { public static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringContextUtils.applicationContext = applicationContext; } public static Object getBean(String name) { return applicationContext.getBean(name); } public static T getBean(String name, Class requiredType) { return applicationContext.getBean(name, requiredType); } public static boolean containsBean(String name) { return applicationContext.containsBean(name); } public static boolean isSingleton(String name) { return applicationContext.isSingleton(name); } public static Class getType(String name) { return applicationContext.getType(name); } } ================================================ FILE: src/main/java/io/sdb/common/utils/SqlHelper.java ================================================ package io.sdb.common.utils; import io.sdb.common.entity.Filter; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.*; import java.util.List; public class SqlHelper { public String test() { return " and #para(abc)"; } /** * 转换为Predicate * * @param filters * 筛选 * @return Predicate */ public String getFilters(List filters) { String sql = ""; if (CollectionUtils.isEmpty(filters)) { return ""; } for (Filter filter : filters) { if (filter == null) { continue; } String property = filter.getProperty(); Filter.Operator operator = filter.getOperator(); Object value = filter.getValue(); Boolean ignoreCase = filter.getIgnoreCase(); switch (operator) { case eq: if (value != null) { if (BooleanUtils.isTrue(ignoreCase) && value instanceof String) { sql +=" AND "+ property + " = " + ((String) value).toLowerCase(); } else { sql +=" AND "+ property + " = " + value; } } else { sql +=" AND "+ property + " IS NULL "; } break; case ne: if (value != null) { if (BooleanUtils.isTrue(ignoreCase) && value instanceof String) { sql +=" AND "+ property + " != " + ((String) value).toLowerCase(); } else { sql +=" AND "+ property + " != " + value; } } else { sql +=" AND "+ property + " IS NOT NULL "; } break; case gt: sql +=" AND "+ property + " > " + value; break; case lt: sql +=" AND "+ property + " < " + value; break; case ge: sql +=" AND "+ property + " >= " + value; break; case le: if (value instanceof Number) { sql +=" AND "+ property + " <= " + (Number) value; } break; case like: if (value instanceof String) { if (BooleanUtils.isTrue(ignoreCase)) { sql += " AND " + property + " LIKE '%" + ((String) value).toLowerCase() + "'"; } else { sql += " AND " + property + " LIKE '%" + (String) value + "'"; } } break; case in: sql +=" AND "+ property + " IN(" + value + ")"; break; case isNull: sql +=" AND "+ property + " IS NULL"; break; case isNotNull: sql +=" AND "+ property + " IS NOT NULL"; break; } } return sql; } } ================================================ FILE: src/main/java/io/sdb/common/utils/TreeBuilder.java ================================================ package io.sdb.common.utils; import com.alibaba.fastjson.JSON; import io.sdb.common.entity.Node; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.Predicate; import java.util.ArrayList; import java.util.List; /** * 构造目录JSON树 * Created by fukang on 2017/5/26 0026. */ public class TreeBuilder { List nodes = new ArrayList<>(); public List buildTree(List nodes) { if(nodes == null || nodes.size() == 0){ return null; } TreeBuilder treeBuilder = new TreeBuilder(nodes); return treeBuilder.buildTree(); } public String buildTreeJson(List nodes) { if(nodes == null || nodes.size() == 0){ return null; } TreeBuilder treeBuilder = new TreeBuilder(nodes); return treeBuilder.buildJSONTree(); } public TreeBuilder() { } public TreeBuilder(List nodes) { super(); this.nodes = nodes; } // 构建JSON树形结构 public String buildJSONTree() { List nodeTree = buildTree(); String jsonString = JSON.toJSONString(nodeTree); return jsonString; } // 构建树形结构 public List buildTree() { List treeNodes = new ArrayList<>(); List rootNodes = getRootNodes(); for (T rootNode : rootNodes) { buildChildNodes(rootNode); treeNodes.add(rootNode); } return treeNodes; } // 递归子节点 public void buildChildNodes(T node) { List children = getChildNodes(node); if (!children.isEmpty()) { for (T child : children) { buildChildNodes(child); } node.setChildren(children); } } // 获取父节点下所有的子节点 public List getChildNodes(T pnode) { List childNodes = new ArrayList<>(); for (T n : nodes) { if (pnode.getId().equals(n.getParentId())) { childNodes.add(n); } } return childNodes; } // 判断是否为根节点 public boolean rootNode(T node) { boolean isRootNode = true; for (T n : nodes) { if (node.getParentId() != null && node.getParentId().equals(n.getId())) { isRootNode = false; break; } } return isRootNode; } // 获取集合中所有的根节点 public List getRootNodes() { List rootNodes = new ArrayList<>(); for (T n : nodes) { if (rootNode(n)) { rootNodes.add(n); } } return rootNodes; } } ================================================ FILE: src/main/java/io/sdb/common/utils/_JFCodeGenerator.java ================================================ package io.sdb.common.utils; import com.jfinal.kit.Kv; import com.jfinal.kit.PathKit; import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.dialect.MysqlDialect; import com.jfinal.plugin.activerecord.generator.ColumnMeta; import com.jfinal.plugin.activerecord.generator.DataDictionaryGenerator; import com.jfinal.plugin.activerecord.generator.MetaBuilder; import com.jfinal.plugin.activerecord.generator.TableMeta; import io.sdb.builder.MyMetaBuilder; import org.apache.commons.lang3.StringUtils; import javax.sql.DataSource; import java.util.HashMap; import java.util.List; import java.util.Map; public class _JFCodeGenerator { public static final _JFCodeGenerator me = new _JFCodeGenerator(); public static final boolean serviceGenerate = true; protected String[] excludedControllerClass = new String[]{ "Area", "SysCaptcha", "Cart", "OrderDetail", "OrderMaster", "Product", "Receiver", "SysRoleMenu", "ScheduleJob", "ScheduleJobLog", "Sn", "SysUserRole", "SysUserToken", }; protected String[] includedVueClass = new String[]{ "TestTable", }; protected final JfEnjoy jfEngine = new JfEnjoy(); protected Kv tablemetaMap = null; protected String packageBase = "io"; protected String basePath = "sdb"; protected String srcFolder = "src/main/java"; protected String viewFolder = "/Users/apple/WebstormProjects/sdb-backend/src/views/modules/sys/"; public _JFCodeGenerator setPackageBase(String packageBase) { this.packageBase = packageBase; return this; } public _JFCodeGenerator setBasePath(String basePath) { this.basePath = basePath; return this; } public _JFCodeGenerator setSrcFolder(String srcFolder) { this.srcFolder = srcFolder; return this; } public _JFCodeGenerator setViewFolder(String viewFolder) { this.viewFolder = viewFolder; return this; } protected class DataGenerator extends DataDictionaryGenerator { public DataGenerator(DataSource dataSource, String dataDictionaryOutputDir) { super(dataSource, dataDictionaryOutputDir); } public void rebuildColumnMetas(List tableMetas) { super.rebuildColumnMetas(tableMetas); } } ; public TableMeta getTableMeta(String tableName) { if (tablemetaMap == null) { DataSource dataSource = _JFinalGenerator.getDataSource(); MetaBuilder metaBuilder = new MetaBuilder(dataSource); metaBuilder.setDialect(new MysqlDialect()); metaBuilder.addExcludedTable(_JFinalGenerator.excludedTable); List tableMetas = metaBuilder.build(); new DataGenerator(dataSource, null).rebuildColumnMetas(tableMetas); if (tableMetas.size() == 0) { System.out.println("TableMeta 数量为 0,不生成任何文件"); return null; } Kv kv = Kv.create(); for (TableMeta tableMeta : tableMetas) { kv.set(tableMeta.name, tableMeta); } tablemetaMap = kv; } return (TableMeta) tablemetaMap.get(tableName); } /** * 生成手脚架代码 */ public _JFCodeGenerator allRender(String className, String tableName) { return javaRender(className, tableName).htmlRender(className, tableName); } /** * java 代码生成 */ public _JFCodeGenerator javaRender(String className, String tableName) { //刷新 映射对象 _JFinalGenerator.main(null); controller(className); service(className, tableName); return this; } private String toClassNameSmall(String className) { return new StringBuffer(className.substring(0, 1).toLowerCase()).append(className.substring(1)).toString(); } private String toPackages() { return new StringBuffer(packageBase).append(".").append(basePath).toString(); } /** * 生成Controller * * @param className 类名称 */ public void controller(String className) { for (String excluded:excludedControllerClass ) { if (excluded.equalsIgnoreCase(className)) { return; } } String packages = toPackages(); String classNameSmall = toClassNameSmall(className); String controllerPathName = "/controller/"; if (!StringUtils.startsWith(className.toLowerCase(), "sys")) { controllerPathName = "/controller/Sys"; } jfEngine.render("/java/controller.html", Kv.by("package", packages) .set("className", className) .set("classNameSmall", classNameSmall) .set("basePath", basePath) , new StringBuilder() .append(System.getProperty("user.dir")) .append("/") .append(srcFolder) .append("/") .append(packages.replace(".", "/")) .append(controllerPathName) .append(className) .append("Controller.java") ); } /** * 生成Service * * @param className 类名称 * @param tableName 表名 */ public void service(String className, String tableName) { String packages = toPackages(); String classNameSmall = toClassNameSmall(className); jfEngine.render("/java/service.html", Kv.by("package", packages) .set("className", className) .set("classNameSmall", classNameSmall) .set("tableName", tableName) , new StringBuilder() .append(System.getProperty("user.dir")) .append("/") .append(srcFolder) .append("/") .append(packages.replace(".", "/")) .append("/service/") .append(className) .append("Service.java") ); } /** * 生成ServiceImpl * * @param className 类名称 * @param tableName 表名 */ public void serviceImpl(String className, String tableName) { String packages = toPackages(); String classNameSmall = toClassNameSmall(className); jfEngine.render("/java/serviceImpl.html", Kv.by("package", packages) .set("className", className) .set("classNameSmall", classNameSmall) .set("tableName", tableName) , new StringBuilder() .append(System.getProperty("user.dir")) .append("/") .append(srcFolder) .append("/") .append(packages.replace(".", "/")) .append("/service/impl/") .append(className) .append("ServiceImpl.java") ); } /** * 生成Dao * * @param className 类名称 * @param tableName 表名 */ public void dao(String className, String tableName) { String packages = toPackages(); String classNameSmall = toClassNameSmall(className); jfEngine.render("/java/dao.html", Kv.by("package", packages) .set("className", className) .set("classNameSmall", classNameSmall) .set("tableName", tableName) , new StringBuilder() .append(System.getProperty("user.dir")) .append("/") .append(srcFolder) .append("/") .append(packages.replace(".", "/")) .append("/dao/") .append(className) .append("Dao.java") ); } /** * @param className * @param tableName */ public _JFCodeGenerator htmlRender(String className, String tableName) { TableMeta tablemeta = getTableMeta(tableName); htmlList(className, tablemeta); return this; } //页面的生成一般定制比较多..就来个简单的吧 public void htmlList(String className, TableMeta tablemeta) { String packages = toPackages(); String classNameSmall = toClassNameSmall(className); String basePathUrl = basePath.replace('.', '/'); Map columnMap = new HashMap<>(); for (ColumnMeta columnMeta :tablemeta.columnMetas ) { String desc = StringUtils.substringBetween(columnMeta.remarks, "[", "]"); columnMap.put(columnMeta.attrName, desc); } String primaryKey = StrKit.toCamelCase(tablemeta.primaryKey); jfEngine.render("/html/index.vue", Kv.by("tablemeta", tablemeta) .set("package", packages) .set("className", className) .set("columnMap", columnMap) .set("primaryKey", primaryKey) .set("classNameSmall", classNameSmall) .set("basePath", basePathUrl) , new StringBuilder() .append(viewFolder) .append("/") .append(classNameSmall) .append("List.html") ); } //页面的生成一般定制比较多..就来个简单的吧 public void vue(String className, TableMeta tablemeta) { boolean includeFlag = false; for (String includeClass:includedVueClass ) { if (includeClass.equalsIgnoreCase(className)) { includeFlag = true; break; } } if (!includeFlag) { return; } String packages = toPackages(); String classNameSmall = toClassNameSmall(className); String basePathUrl = basePath.replace('.', '/'); Map columnMap = new HashMap<>(); for (ColumnMeta columnMeta :tablemeta.columnMetas ) { String desc = StringUtils.substringBetween(columnMeta.remarks, "[", "]"); columnMap.put(columnMeta.attrName, desc); } String primaryKey = StrKit.toCamelCase(tablemeta.primaryKey); jfEngine.render("/html/index.html", Kv.by("tablemeta", tablemeta) .set("package", packages) .set("className", className) .set("columnMap", columnMap) .set("primaryKey", primaryKey) .set("classNameSmall", classNameSmall) .set("basePath", basePathUrl) , new StringBuilder() .append(viewFolder) .append("/") .append(classNameSmall) .append(".vue") ); } public void vueAddUpdate(String className, TableMeta tablemeta) { boolean includeFlag = false; for (String includeClass:includedVueClass ) { if (includeClass.equalsIgnoreCase(className)) { includeFlag = true; break; } } if (!includeFlag) { return; } String packages = toPackages(); String classNameSmall = toClassNameSmall(className); String basePathUrl = basePath.replace('.', '/'); Map columnMap = new HashMap<>(); for (ColumnMeta columnMeta :tablemeta.columnMetas ) { String desc = StringUtils.substringBetween(columnMeta.remarks, "[", "]"); columnMap.put(columnMeta.attrName, desc); } String primaryKey = StrKit.toCamelCase(tablemeta.primaryKey); jfEngine.render("/html/add-or-update.html", Kv.by("tablemeta", tablemeta) .set("package", packages) .set("className", className) .set("columnMap", columnMap) .set("primaryKey", primaryKey) .set("classNameSmall", classNameSmall) .set("basePath", basePathUrl) , new StringBuilder() .append(viewFolder) .append("/") .append(classNameSmall) .append("-add-or-update") .append(".vue") ); } public void generate(){ DataSource dataSource = _JFinalGenerator.getDataSource(); MyMetaBuilder metaBuilder = new MyMetaBuilder(dataSource); metaBuilder.setDialect(new MysqlDialect()); metaBuilder.addExcludedTable(_JFinalGenerator.excludedTable); List tableMetas = metaBuilder.build(); for (TableMeta tableMeta : tableMetas ) { if (serviceGenerate) { _JFCodeGenerator.me.service(tableMeta.modelName, tableMeta.name); _JFCodeGenerator.me.serviceImpl(tableMeta.modelName, tableMeta.name); _JFCodeGenerator.me.dao(tableMeta.modelName, tableMeta.name); _JFCodeGenerator.me.controller(tableMeta.modelName); _JFCodeGenerator.me.vue(tableMeta.modelName, tableMeta); _JFCodeGenerator.me.vueAddUpdate(tableMeta.modelName, tableMeta); } } } // ... 继续扩展吧~ public static void main(String[] args) { _JFCodeGenerator.me.generate(); } } ================================================ FILE: src/main/java/io/sdb/common/utils/_JFinalGenerator.java ================================================ package io.sdb.common.utils; import com.jfinal.kit.PathKit; import com.jfinal.plugin.activerecord.generator.Generator; import com.jfinal.plugin.activerecord.generator.MetaBuilder; import com.jfinal.plugin.druid.DruidPlugin; import javax.sql.DataSource; /** * 在数据库表有任何变动时,运行一下 main 方法,极速响应变化进行代码重构 */ public class _JFinalGenerator { final static String DB_NAME = "sdb"; final static String DB_USER_NAME = "root"; final static String DB_USER_PWD = "123456"; final static String PK_NAME = "sdb"; //项目包名称 final static String[] excludedTable = new String[]{ "QRTZ_JOB_DETAILS", "QRTZ_TRIGGERS", "QRTZ_SIMPLE_TRIGGERS", "QRTZ_CRON_TRIGGERS", "QRTZ_SIMPROP_TRIGGERS", "QRTZ_BLOB_TRIGGERS", "QRTZ_CALENDARS", "QRTZ_PAUSED_TRIGGER_GRPS", "QRTZ_FIRED_TRIGGERS", "QRTZ_SCHEDULER_STATE", "QRTZ_LOCKS" }; public static DataSource getDataSource() { String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/"+DB_NAME+"?useUnicode=true&characterEncoding=UTF-8"; String user = DB_USER_NAME; String password = DB_USER_PWD; DruidPlugin druidPlugin = new DruidPlugin(jdbcUrl, user, password); druidPlugin.start(); return druidPlugin.getDataSource(); } public static void main(String[] args) { String rootPath = PathKit.getWebRootPath(); // base model 所使用的包名 String baseModelPackageName = "io."+PK_NAME+".model.base"; // base model 文件保存路径 String baseModelOutputDir = rootPath + "/src/main/java/io/"+PK_NAME+"/model/base"; // model 所使用的包名 (MappingKit 默认使用的包名) String modelPackageName = "io."+PK_NAME+".model"; // model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径) String modelOutputDir = baseModelOutputDir + "/.."; // 创建生成器 Generator gernerator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir); MetaBuilder mataBuilder = new MetaBuilder(getDataSource()); mataBuilder.addExcludedTable(excludedTable); gernerator.setMetaBuilder(mataBuilder); // 添加不需要生成的表名 // gernerator.addExcludedTable("order_coupon"); // 设置是否在 Model 中生成 dao 对象 gernerator.setGenerateDaoInModel(true); // 设置是否生成字典文件 gernerator.setGenerateDataDictionary(false); // 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser gernerator.setRemovedTableNamePrefixes("tb_"); gernerator.generate(); //代码生成 _JFCodeGenerator.me.generate(); } } ================================================ FILE: src/main/java/io/sdb/common/utils/tpl/html/add-or-update.html ================================================ ================================================ FILE: src/main/java/io/sdb/common/utils/tpl/html/index.html ================================================ ================================================ FILE: src/main/java/io/sdb/common/utils/tpl/java/controller.html ================================================ package #(package).controller; import #(package).common.utils.PageUtils; import #(package).common.utils.R; import #(package).service.#(className)Service; import #(package).model.#(className); import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.Map; @Controller @RequestMapping("/sys/#(classNameSmall)") public class Sys#(className)Controller { @Autowired private #(className)Service #(classNameSmall)Service; /** * 列表 */ @ResponseBody @GetMapping("/list") public R list(@RequestParam Map params){ PageUtils page = #(classNameSmall)Service.queryPage(params); return R.ok().put("page", page); } /** * 详情 */ @ResponseBody @GetMapping("/info/{id}") public R info(@PathVariable Object id){ #(className) #(classNameSmall) = #(classNameSmall)Service.findById(id); return R.ok().put("#(classNameSmall)", #(classNameSmall)); } /** * 更新 */ @ResponseBody @PostMapping("/update") public R update(@RequestBody #(className) #(classNameSmall)) { #(classNameSmall).update(); return R.ok(); } /** * 新增 */ @ResponseBody @PostMapping("/save") public R save(@RequestBody #(className) #(classNameSmall)) { #(classNameSmall).save(); return R.ok(); } /** * 删除 */ @ResponseBody @PostMapping("/delete") public R delete(@RequestBody Object[] ids) { #(classNameSmall)Service.deleteBatch(ids); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/common/utils/tpl/java/dao.html ================================================ package #(package).dao; import #(package).dao.BaseDao; import #(package).model.#(className); import org.springframework.stereotype.Component; @Component public class #(className)Dao extends BaseDao<#(className)> { public #(className)Dao() { super(#(className).class); } } ================================================ FILE: src/main/java/io/sdb/common/utils/tpl/java/service.html ================================================ package #(package).service; import #(package).model.#(className); public interface #(className)Service extends BaseService<#(className)> { } ================================================ FILE: src/main/java/io/sdb/common/utils/tpl/java/serviceImpl.html ================================================ package #(package).service.impl; import #(package).dao.#(className)Dao; import #(package).model.#(className); import #(package).service.#(className)Service; import org.springframework.stereotype.Service; @Service public class #(className)ServiceImpl extends BaseServiceImpl<#(className)Dao, #(className)> implements #(className)Service { } ================================================ FILE: src/main/java/io/sdb/common/validator/Assert.java ================================================ package io.sdb.common.validator; import io.sdb.common.exception.RRException; import org.apache.commons.lang.StringUtils; /** * 数据校验 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-23 15:50 */ public abstract class Assert { public static void isBlank(String str, String message) { if (StringUtils.isBlank(str)) { throw new RRException(message); } } public static void isNull(Object object, String message) { if (object == null) { throw new RRException(message); } } } ================================================ FILE: src/main/java/io/sdb/common/validator/ValidatorUtils.java ================================================ package io.sdb.common.validator; import io.sdb.common.exception.RRException; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import java.util.Set; /** * hibernate-validator校验工具类 * * 参考文档:http://docs.jboss.org/hibernate/validator/5.4/reference/en-US/html_single/ * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-15 10:50 */ public class ValidatorUtils { private static Validator validator; static { validator = Validation.buildDefaultValidatorFactory().getValidator(); } /** * 校验对象 * @param object 待校验对象 * @param groups 待校验的组 * @throws RRException 校验不通过,则报RRException异常 */ public static void validateEntity(Object object, Class... groups) throws RRException { Set> constraintViolations = validator.validate(object, groups); if (!constraintViolations.isEmpty()) { StringBuilder msg = new StringBuilder(); for(ConstraintViolation constraint: constraintViolations){ msg.append(constraint.getMessage()).append("\n"); } throw new RRException(msg.toString()); } } } ================================================ FILE: src/main/java/io/sdb/common/validator/group/AddGroup.java ================================================ package io.sdb.common.validator.group; /** * 新增数据 Group * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-16 0:04 */ public interface AddGroup { } ================================================ FILE: src/main/java/io/sdb/common/validator/group/AliyunGroup.java ================================================ package io.sdb.common.validator.group; /** * 阿里云 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-28 13:51 */ public interface AliyunGroup { } ================================================ FILE: src/main/java/io/sdb/common/validator/group/Group.java ================================================ package io.sdb.common.validator.group; import javax.validation.GroupSequence; /** * 定义校验顺序,如果AddGroup组失败,则UpdateGroup组不会再校验 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-15 23:15 */ @GroupSequence({AddGroup.class, UpdateGroup.class}) public interface Group { } ================================================ FILE: src/main/java/io/sdb/common/validator/group/QcloudGroup.java ================================================ package io.sdb.common.validator.group; /** * 腾讯云 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-28 13:51 */ public interface QcloudGroup { } ================================================ FILE: src/main/java/io/sdb/common/validator/group/QiniuGroup.java ================================================ package io.sdb.common.validator.group; /** * 七牛 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-28 13:51 */ public interface QiniuGroup { } ================================================ FILE: src/main/java/io/sdb/common/validator/group/UpdateGroup.java ================================================ package io.sdb.common.validator.group; /** * 更新数据 Group * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-15 21:21 */ public interface UpdateGroup { } ================================================ FILE: src/main/java/io/sdb/common/xss/HTMLFilter.java ================================================ package io.sdb.common.xss; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * HTML filtering utility for protecting against XSS (Cross Site Scripting). * * This code is licensed LGPLv3 * * This code is a Java port of the original work in PHP by Cal Hendersen. * http://code.iamcal.com/php/lib_filter/ * * The trickiest part of the translation was handling the differences in regex handling * between PHP and Java. These resources were helpful in the process: * * http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html * http://us2.php.net/manual/en/reference.pcre.pattern.modifiers.php * http://www.regular-expressions.info/modifiers.html * * A note on naming conventions: instance variables are prefixed with a "v"; global * constants are in all caps. * * Sample use: * String input = ... * String clean = new HTMLFilter().filter( input ); * * The class is not thread safe. Create a new instance if in doubt. * * If you find bugs or have suggestions on improvement (especially regarding * performance), please contact us. The latest version of this * source, and our contact details, can be found at http://xss-html-filter.sf.net * * @author Joseph O'Connell * @author Cal Hendersen * @author Michael Semb Wever */ public final class HTMLFilter { /** regex flag union representing /si modifiers in php **/ private static final int REGEX_FLAGS_SI = Pattern.CASE_INSENSITIVE | Pattern.DOTALL; private static final Pattern P_COMMENTS = Pattern.compile("", Pattern.DOTALL); private static final Pattern P_COMMENT = Pattern.compile("^!--(.*)--$", REGEX_FLAGS_SI); private static final Pattern P_TAGS = Pattern.compile("<(.*?)>", Pattern.DOTALL); private static final Pattern P_END_TAG = Pattern.compile("^/([a-z0-9]+)", REGEX_FLAGS_SI); private static final Pattern P_START_TAG = Pattern.compile("^([a-z0-9]+)(.*?)(/?)$", REGEX_FLAGS_SI); private static final Pattern P_QUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)=([\"'])(.*?)\\2", REGEX_FLAGS_SI); private static final Pattern P_UNQUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)(=)([^\"\\s']+)", REGEX_FLAGS_SI); private static final Pattern P_PROTOCOL = Pattern.compile("^([^:]+):", REGEX_FLAGS_SI); private static final Pattern P_ENTITY = Pattern.compile("&#(\\d+);?"); private static final Pattern P_ENTITY_UNICODE = Pattern.compile("&#x([0-9a-f]+);?"); private static final Pattern P_ENCODE = Pattern.compile("%([0-9a-f]{2});?"); private static final Pattern P_VALID_ENTITIES = Pattern.compile("&([^&;]*)(?=(;|&|$))"); private static final Pattern P_VALID_QUOTES = Pattern.compile("(>|^)([^<]+?)(<|$)", Pattern.DOTALL); private static final Pattern P_END_ARROW = Pattern.compile("^>"); private static final Pattern P_BODY_TO_END = Pattern.compile("<([^>]*?)(?=<|$)"); private static final Pattern P_XML_CONTENT = Pattern.compile("(^|>)([^<]*?)(?=>)"); private static final Pattern P_STRAY_LEFT_ARROW = Pattern.compile("<([^>]*?)(?=<|$)"); private static final Pattern P_STRAY_RIGHT_ARROW = Pattern.compile("(^|>)([^<]*?)(?=>)"); private static final Pattern P_AMP = Pattern.compile("&"); private static final Pattern P_QUOTE = Pattern.compile("<"); private static final Pattern P_LEFT_ARROW = Pattern.compile("<"); private static final Pattern P_RIGHT_ARROW = Pattern.compile(">"); private static final Pattern P_BOTH_ARROWS = Pattern.compile("<>"); // @xxx could grow large... maybe use sesat's ReferenceMap private static final ConcurrentMap P_REMOVE_PAIR_BLANKS = new ConcurrentHashMap(); private static final ConcurrentMap P_REMOVE_SELF_BLANKS = new ConcurrentHashMap(); /** set of allowed html elements, along with allowed attributes for each element **/ private final Map> vAllowed; /** counts of open tags for each (allowable) html element **/ private final Map vTagCounts = new HashMap(); /** html elements which must always be self-closing (e.g. "") **/ private final String[] vSelfClosingTags; /** html elements which must always have separate opening and closing tags (e.g. "") **/ private final String[] vNeedClosingTags; /** set of disallowed html elements **/ private final String[] vDisallowed; /** attributes which should be checked for valid protocols **/ private final String[] vProtocolAtts; /** allowed protocols **/ private final String[] vAllowedProtocols; /** tags which should be removed if they contain no content (e.g. "" or "") **/ private final String[] vRemoveBlanks; /** entities allowed within html markup **/ private final String[] vAllowedEntities; /** flag determining whether comments are allowed in input String. */ private final boolean stripComment; private final boolean encodeQuotes; private boolean vDebug = false; /** * flag determining whether to try to make tags when presented with "unbalanced" * angle brackets (e.g. "" becomes " text "). If set to false, * unbalanced angle brackets will be html escaped. */ private final boolean alwaysMakeTags; /** Default constructor. * */ public HTMLFilter() { vAllowed = new HashMap<>(); final ArrayList a_atts = new ArrayList(); a_atts.add("href"); a_atts.add("target"); vAllowed.put("a", a_atts); final ArrayList img_atts = new ArrayList(); img_atts.add("src"); img_atts.add("width"); img_atts.add("height"); img_atts.add("alt"); vAllowed.put("img", img_atts); final ArrayList no_atts = new ArrayList(); vAllowed.put("b", no_atts); vAllowed.put("strong", no_atts); vAllowed.put("i", no_atts); vAllowed.put("em", no_atts); vSelfClosingTags = new String[]{"img"}; vNeedClosingTags = new String[]{"a", "b", "strong", "i", "em"}; vDisallowed = new String[]{}; vAllowedProtocols = new String[]{"http", "mailto", "https"}; // no ftp. vProtocolAtts = new String[]{"src", "href"}; vRemoveBlanks = new String[]{"a", "b", "strong", "i", "em"}; vAllowedEntities = new String[]{"amp", "gt", "lt", "quot"}; stripComment = true; encodeQuotes = true; alwaysMakeTags = true; } /** Set debug flag to true. Otherwise use default settings. See the default constructor. * * @param debug turn debug on with a true argument */ public HTMLFilter(final boolean debug) { this(); vDebug = debug; } /** Map-parameter configurable constructor. * * @param conf map containing configuration. keys match field names. */ public HTMLFilter(final Map conf) { assert conf.containsKey("vAllowed") : "configuration requires vAllowed"; assert conf.containsKey("vSelfClosingTags") : "configuration requires vSelfClosingTags"; assert conf.containsKey("vNeedClosingTags") : "configuration requires vNeedClosingTags"; assert conf.containsKey("vDisallowed") : "configuration requires vDisallowed"; assert conf.containsKey("vAllowedProtocols") : "configuration requires vAllowedProtocols"; assert conf.containsKey("vProtocolAtts") : "configuration requires vProtocolAtts"; assert conf.containsKey("vRemoveBlanks") : "configuration requires vRemoveBlanks"; assert conf.containsKey("vAllowedEntities") : "configuration requires vAllowedEntities"; vAllowed = Collections.unmodifiableMap((HashMap>) conf.get("vAllowed")); vSelfClosingTags = (String[]) conf.get("vSelfClosingTags"); vNeedClosingTags = (String[]) conf.get("vNeedClosingTags"); vDisallowed = (String[]) conf.get("vDisallowed"); vAllowedProtocols = (String[]) conf.get("vAllowedProtocols"); vProtocolAtts = (String[]) conf.get("vProtocolAtts"); vRemoveBlanks = (String[]) conf.get("vRemoveBlanks"); vAllowedEntities = (String[]) conf.get("vAllowedEntities"); stripComment = conf.containsKey("stripComment") ? (Boolean) conf.get("stripComment") : true; encodeQuotes = conf.containsKey("encodeQuotes") ? (Boolean) conf.get("encodeQuotes") : true; alwaysMakeTags = conf.containsKey("alwaysMakeTags") ? (Boolean) conf.get("alwaysMakeTags") : true; } private void reset() { vTagCounts.clear(); } private void debug(final String msg) { if (vDebug) { Logger.getAnonymousLogger().info(msg); } } //--------------------------------------------------------------- // my versions of some PHP library functions public static String chr(final int decimal) { return String.valueOf((char) decimal); } public static String htmlSpecialChars(final String s) { String result = s; result = regexReplace(P_AMP, "&", result); result = regexReplace(P_QUOTE, """, result); result = regexReplace(P_LEFT_ARROW, "<", result); result = regexReplace(P_RIGHT_ARROW, ">", result); return result; } //--------------------------------------------------------------- /** * given a user submitted input String, filter out any invalid or restricted * html. * * @param input text (i.e. submitted by a user) than may contain html * @return "clean" version of input, with only valid, whitelisted html elements allowed */ public String filter(final String input) { reset(); String s = input; debug("************************************************"); debug(" INPUT: " + input); s = escapeComments(s); debug(" escapeComments: " + s); s = balanceHTML(s); debug(" balanceHTML: " + s); s = checkTags(s); debug(" checkTags: " + s); s = processRemoveBlanks(s); debug("processRemoveBlanks: " + s); s = validateEntities(s); debug(" validateEntites: " + s); debug("************************************************\n\n"); return s; } public boolean isAlwaysMakeTags(){ return alwaysMakeTags; } public boolean isStripComments(){ return stripComment; } private String escapeComments(final String s) { final Matcher m = P_COMMENTS.matcher(s); final StringBuffer buf = new StringBuffer(); if (m.find()) { final String match = m.group(1); //(.*?) m.appendReplacement(buf, Matcher.quoteReplacement("")); } m.appendTail(buf); return buf.toString(); } private String balanceHTML(String s) { if (alwaysMakeTags) { // // try and form html // s = regexReplace(P_END_ARROW, "", s); s = regexReplace(P_BODY_TO_END, "<$1>", s); s = regexReplace(P_XML_CONTENT, "$1<$2", s); } else { // // escape stray brackets // s = regexReplace(P_STRAY_LEFT_ARROW, "<$1", s); s = regexReplace(P_STRAY_RIGHT_ARROW, "$1$2><", s); // // the last regexp causes '<>' entities to appear // (we need to do a lookahead assertion so that the last bracket can // be used in the next pass of the regexp) // s = regexReplace(P_BOTH_ARROWS, "", s); } return s; } private String checkTags(String s) { Matcher m = P_TAGS.matcher(s); final StringBuffer buf = new StringBuffer(); while (m.find()) { String replaceStr = m.group(1); replaceStr = processTag(replaceStr); m.appendReplacement(buf, Matcher.quoteReplacement(replaceStr)); } m.appendTail(buf); s = buf.toString(); // these get tallied in processTag // (remember to reset before subsequent calls to filter method) for (String key : vTagCounts.keySet()) { for (int ii = 0; ii < vTagCounts.get(key); ii++) { s += ""; } } return s; } private String processRemoveBlanks(final String s) { String result = s; for (String tag : vRemoveBlanks) { if(!P_REMOVE_PAIR_BLANKS.containsKey(tag)){ P_REMOVE_PAIR_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?>")); } result = regexReplace(P_REMOVE_PAIR_BLANKS.get(tag), "", result); if(!P_REMOVE_SELF_BLANKS.containsKey(tag)){ P_REMOVE_SELF_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?/>")); } result = regexReplace(P_REMOVE_SELF_BLANKS.get(tag), "", result); } return result; } private static String regexReplace(final Pattern regex_pattern, final String replacement, final String s) { Matcher m = regex_pattern.matcher(s); return m.replaceAll(replacement); } private String processTag(final String s) { // ending tags Matcher m = P_END_TAG.matcher(s); if (m.find()) { final String name = m.group(1).toLowerCase(); if (allowed(name)) { if (!inArray(name, vSelfClosingTags)) { if (vTagCounts.containsKey(name)) { vTagCounts.put(name, vTagCounts.get(name) - 1); return ""; } } } } // starting tags m = P_START_TAG.matcher(s); if (m.find()) { final String name = m.group(1).toLowerCase(); final String body = m.group(2); String ending = m.group(3); //debug( "in a starting tag, name='" + name + "'; body='" + body + "'; ending='" + ending + "'" ); if (allowed(name)) { String params = ""; final Matcher m2 = P_QUOTED_ATTRIBUTES.matcher(body); final Matcher m3 = P_UNQUOTED_ATTRIBUTES.matcher(body); final List paramNames = new ArrayList(); final List paramValues = new ArrayList(); while (m2.find()) { paramNames.add(m2.group(1)); //([a-z0-9]+) paramValues.add(m2.group(3)); //(.*?) } while (m3.find()) { paramNames.add(m3.group(1)); //([a-z0-9]+) paramValues.add(m3.group(3)); //([^\"\\s']+) } String paramName, paramValue; for (int ii = 0; ii < paramNames.size(); ii++) { paramName = paramNames.get(ii).toLowerCase(); paramValue = paramValues.get(ii); // debug( "paramName='" + paramName + "'" ); // debug( "paramValue='" + paramValue + "'" ); // debug( "allowed? " + vAllowed.get( name ).contains( paramName ) ); if (allowedAttribute(name, paramName)) { if (inArray(paramName, vProtocolAtts)) { paramValue = processParamProtocol(paramValue); } params += " " + paramName + "=\"" + paramValue + "\""; } } if (inArray(name, vSelfClosingTags)) { ending = " /"; } if (inArray(name, vNeedClosingTags)) { ending = ""; } if (ending == null || ending.length() < 1) { if (vTagCounts.containsKey(name)) { vTagCounts.put(name, vTagCounts.get(name) + 1); } else { vTagCounts.put(name, 1); } } else { ending = " /"; } return "<" + name + params + ending + ">"; } else { return ""; } } // comments m = P_COMMENT.matcher(s); if (!stripComment && m.find()) { return "<" + m.group() + ">"; } return ""; } private String processParamProtocol(String s) { s = decodeEntities(s); final Matcher m = P_PROTOCOL.matcher(s); if (m.find()) { final String protocol = m.group(1); if (!inArray(protocol, vAllowedProtocols)) { // bad protocol, turn into local anchor link instead s = "#" + s.substring(protocol.length() + 1, s.length()); if (s.startsWith("#//")) { s = "#" + s.substring(3, s.length()); } } } return s; } private String decodeEntities(String s) { StringBuffer buf = new StringBuffer(); Matcher m = P_ENTITY.matcher(s); while (m.find()) { final String match = m.group(1); final int decimal = Integer.decode(match).intValue(); m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); } m.appendTail(buf); s = buf.toString(); buf = new StringBuffer(); m = P_ENTITY_UNICODE.matcher(s); while (m.find()) { final String match = m.group(1); final int decimal = Integer.valueOf(match, 16).intValue(); m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); } m.appendTail(buf); s = buf.toString(); buf = new StringBuffer(); m = P_ENCODE.matcher(s); while (m.find()) { final String match = m.group(1); final int decimal = Integer.valueOf(match, 16).intValue(); m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal))); } m.appendTail(buf); s = buf.toString(); s = validateEntities(s); return s; } private String validateEntities(final String s) { StringBuffer buf = new StringBuffer(); // validate entities throughout the string Matcher m = P_VALID_ENTITIES.matcher(s); while (m.find()) { final String one = m.group(1); //([^&;]*) final String two = m.group(2); //(?=(;|&|$)) m.appendReplacement(buf, Matcher.quoteReplacement(checkEntity(one, two))); } m.appendTail(buf); return encodeQuotes(buf.toString()); } private String encodeQuotes(final String s){ if(encodeQuotes){ StringBuffer buf = new StringBuffer(); Matcher m = P_VALID_QUOTES.matcher(s); while (m.find()) { final String one = m.group(1); //(>|^) final String two = m.group(2); //([^<]+?) final String three = m.group(3); //(<|$) m.appendReplacement(buf, Matcher.quoteReplacement(one + regexReplace(P_QUOTE, """, two) + three)); } m.appendTail(buf); return buf.toString(); }else{ return s; } } private String checkEntity(final String preamble, final String term) { return ";".equals(term) && isValidEntity(preamble) ? '&' + preamble : "&" + preamble; } private boolean isValidEntity(final String entity) { return inArray(entity, vAllowedEntities); } private static boolean inArray(final String s, final String[] array) { for (String item : array) { if (item != null && item.equals(s)) { return true; } } return false; } private boolean allowed(final String name) { return (vAllowed.isEmpty() || vAllowed.containsKey(name)) && !inArray(name, vDisallowed); } private boolean allowedAttribute(final String name, final String paramName) { return allowed(name) && (vAllowed.isEmpty() || vAllowed.get(name).contains(paramName)); } } ================================================ FILE: src/main/java/io/sdb/common/xss/SQLFilter.java ================================================ package io.sdb.common.xss; import io.sdb.common.exception.RRException; import org.apache.commons.lang.StringUtils; /** * SQL过滤 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-04-01 16:16 */ public class SQLFilter { /** * SQL注入过滤 * @param str 待验证的字符串 */ public static String sqlInject(String str){ if(StringUtils.isBlank(str)){ return null; } //去掉'|"|;|\字符 str = StringUtils.replace(str, "'", ""); str = StringUtils.replace(str, "\"", ""); str = StringUtils.replace(str, ";", ""); str = StringUtils.replace(str, "\\", ""); //转换成小写 str = str.toLowerCase(); //非法字符 String[] keywords = {"master", "truncate", "insert", "select", "delete", "update", "declare", "alert", "drop"}; //判断是否包含非法字符 for(String keyword : keywords){ if(str.indexOf(keyword) != -1){ throw new RRException("包含非法字符"); } } return str; } } ================================================ FILE: src/main/java/io/sdb/common/xss/XssFilter.java ================================================ package io.sdb.common.xss; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; /** * XSS过滤 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-04-01 10:20 */ public class XssFilter implements Filter { @Override public void init(FilterConfig config) throws ServletException { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper( (HttpServletRequest) request); chain.doFilter(xssRequest, response); } @Override public void destroy() { } } ================================================ FILE: src/main/java/io/sdb/common/xss/XssHttpServletRequestWrapper.java ================================================ package io.sdb.common.xss; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.LinkedHashMap; import java.util.Map; /** * XSS过滤处理 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-04-01 11:29 */ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { //没被包装过的HttpServletRequest(特殊场景,需要自己过滤) HttpServletRequest orgRequest; //html过滤 private final static HTMLFilter htmlFilter = new HTMLFilter(); public XssHttpServletRequestWrapper(HttpServletRequest request) { super(request); orgRequest = request; } @Override public ServletInputStream getInputStream() throws IOException { //非json类型,直接返回 if(!MediaType.APPLICATION_JSON_VALUE.equalsIgnoreCase(super.getHeader(HttpHeaders.CONTENT_TYPE))){ return super.getInputStream(); } //为空,直接返回 String json = IOUtils.toString(super.getInputStream(), "utf-8"); if (StringUtils.isBlank(json)) { return super.getInputStream(); } //xss过滤 json = xssEncode(json); final ByteArrayInputStream bis = new ByteArrayInputStream(json.getBytes("utf-8")); return new ServletInputStream() { @Override public boolean isFinished() { return true; } @Override public boolean isReady() { return true; } @Override public void setReadListener(ReadListener readListener) { } @Override public int read() throws IOException { return bis.read(); } }; } @Override public String getParameter(String name) { String value = super.getParameter(xssEncode(name)); if (StringUtils.isNotBlank(value)) { value = xssEncode(value); } return value; } @Override public String[] getParameterValues(String name) { String[] parameters = super.getParameterValues(name); if (parameters == null || parameters.length == 0) { return null; } for (int i = 0; i < parameters.length; i++) { parameters[i] = xssEncode(parameters[i]); } return parameters; } @Override public Map getParameterMap() { Map map = new LinkedHashMap<>(); Map parameters = super.getParameterMap(); for (String key : parameters.keySet()) { String[] values = parameters.get(key); for (int i = 0; i < values.length; i++) { values[i] = xssEncode(values[i]); } map.put(key, values); } return map; } @Override public String getHeader(String name) { String value = super.getHeader(xssEncode(name)); if (StringUtils.isNotBlank(value)) { value = xssEncode(value); } return value; } private String xssEncode(String input) { return htmlFilter.filter(input); } /** * 获取最原始的request */ public HttpServletRequest getOrgRequest() { return orgRequest; } /** * 获取最原始的request */ public static HttpServletRequest getOrgRequest(HttpServletRequest request) { if (request instanceof XssHttpServletRequestWrapper) { return ((XssHttpServletRequestWrapper) request).getOrgRequest(); } return request; } } ================================================ FILE: src/main/java/io/sdb/config/ActiveRecordConfig.java ================================================ package io.sdb.config; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.template.source.ClassPathSourceFactory; import io.sdb.model._MappingKit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import javax.sql.DataSource; @Component public class ActiveRecordConfig { // 由于spring中已经注入了DruidDataSource这里直接拿 @Autowired private DataSource ds; @Bean(initMethod="start", destroyMethod="stop") public ActiveRecordPlugin init() { ActiveRecordPlugin arp = new ActiveRecordPlugin(ds); arp.addSqlTemplate("sql/all.sql"); // arp.addMapping("user", UserModel.class); arp.getEngine().setSourceFactory(new ClassPathSourceFactory()); _MappingKit.mapping(arp); return arp; } } ================================================ FILE: src/main/java/io/sdb/config/AlipayConfig.java ================================================ package io.sdb.config; public class AlipayConfig { // 商户appid public static String APPID = "2016080200146930"; // 私钥 pkcs8格式的 public static String RSA_PRIVATE_KEY = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCvoIMcDKvaM7c224+YZg79hXJETq6aaXqGq4Ws2ClUtcDKek8ot12B5X65PT6B4eAsuAJmtioOB1d2IFx08YDE0wnOdQa7f4GnMhxsc5ncH3wcqFieFVaFqa36cOT6ctUUAEpfTtrevdQeIq3ZZPdPJlsdRQI83BvPjdruU8hna7Nc17WX3ypjZ4I62A0wS2/VKxIyB4eq6IMRzMBWasFV6hyMp4gtA7/2RPkHrjQzcKz2+47zvj/LqcvCaeNHgfNoO/Bde9F5fx40tXvYhsQeBjCbO1CZLVRFOoBAThczbXBMYroRGO5mWBrc4ObtJUEVyisLUuuMYdauCF9QcX5ZAgMBAAECggEAY3FLS3KRS/fEYbdoUy5Who4s6Sh0DNJ0ohQ0mG282U4gX4VplPBebdJ4MoLPBdPTjv6RvX6fyVm22BfywfSMqOWlw9TXfwrvarAhD/dUwyLAr6lSpBAI8Z3l+Mw7muOyaqTPd6+6lix+EqIoNdPJhHN/W89bOQKYbKkxsYiXDJcq1CgYw5CKO1dzNB1ciz1DZfEkfSBSjDQLrBzcJcU86VyEJwRlhz7OTbZGZ9/vugXn78aEIkl6sOI1JF1ci+opcViXAIlK9lg9UWZq7LHuVDx0gfXKWkhzc2TeUsshv9FQcMAyLKf5MXC/LYXVlb1/Cak8KFisjqwOWlF1I4dTQQKBgQDU1/491phjwCOl2k+mVFNNyCDuMtVxU7EC2HsXzC/wBRMjcgv939083E2+BmjFcKSGtgiw3bH7+ruaIu11VqNJT4v3mK63fvdQcvT96bkO2DBTpsdzsG8ceiyLPzKR83vrNx+CffbnC6jIxU6eMi704BvGwpfhh/c5zM4t8j7/BQKBgQDTPLklxa7FAq1sGHNQh9jLWj8+lTmKSrLE6DaV80ZcivkK5/BrSXNMdaH9AvA4vmYIsA6vHRnj4RFA1ndDTDDjeFh+J+Sr0kZSpMdjcpeLrAdO9heqWrgbgl3jZqXEsr7hikLy1FNNBa2wNBH5EO1hDMF5mq6yp9SgUBQIU8NaRQKBgQC99Q9pLS7QR9kI2nAfqD64upX5QNER1XmzanVhZdCazEyqY8ykBbmz6YJQx/OV0tRjje7vusxwcPQhum5nPK16bk4i6dd02RHscMyKGKAayYNIBR8Y9ywTJE7A7+Q4MjA0Wvv6QGWtCtDWbpGdynfyAFmJ6H4YwHo60bhpdTwX6QKBgQCK+7kWESsclNZl+PBmW/tYUNir5KMnSl61D9RadOYmnYmek1ysOneSJxOd1QEZVKztqmj+7rbKKJuhfXqa3NaN0/DlkHn0UzXRynkmBY+QZm+olGKdw3K/Jtd/d1o6QSE2ZDIIc4sbclEFTj1FEs4cvLfPuuaWxbYwhH+puvMdwQKBgQCkHW18bYaSPo4DI75TEvEyPzuTGp/pVTkro2eRjUFlwOuXQGUZwjrz+K4PJdITEUlRDSVr2WbmfEJ4EEj+ahHVKvWKVLq3Veb2SL/FUhX9Xbg8cAd+eU9pRaPoz3TxIlGQLjNcZNShhdmyzoQ7OU8G8FFL92kPAHhg0dKN4njYQg=="; // 服务器异步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 public static String notify_url = "http://sdbtest.s1.natapp.cc/sdb/pay/alinotify"; // 页面跳转同步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 商户可以自定义同步跳转地址 public static String return_url = "http://sdbtest.s1.natapp.cc/sdb/pay/returnUrl"; // 请求网关地址 public static String URL = "https://openapi.alipaydev.com/gateway.do"; // 编码 public static String CHARSET = "UTF-8"; // 返回格式 public static String FORMAT = "json"; // 支付宝公钥 public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA11cJmqgBiJN8PGHVYHaVemuREwqZ6bQaa4EZvmIFeZt1juSJKfY1pSufhDrojAr5G8BBrYhywD3g4zzwmSnTKRpMEbwsf+S/YXd+sl3rZEcKihamJwOU1e9E7RXdmjJsKRh3rF38qXCklb2VqHkUMoPnzJlu2GQBGx2QxzuIiqJ3uEtCHYzssjfAgg4rz5iZuLGvkDTbJpWS3c0zP3KLPKFsZsvWGho2CPVtaDtwuLgq7I13XPo9qb0+K9N7ihoPUi3gzG4hkLWxa9kPjkoPJem6K+GKaSde/84GFXFbVhsQ7ozkOgKtbkdaC3RsJ7nf1VsUd+er601SAgueLxx0aQIDAQAB"; // 日志记录目录 public static String log_path = "/log"; // RSA2 public static String SIGNTYPE = "RSA2"; } ================================================ FILE: src/main/java/io/sdb/config/CorsConfig.java ================================================ package io.sdb.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .maxAge(3600); } } ================================================ FILE: src/main/java/io/sdb/config/FilterConfig.java ================================================ package io.sdb.config; import io.sdb.common.xss.XssFilter; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.filter.DelegatingFilterProxy; import javax.servlet.DispatcherType; /** * Filter配置 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-04-21 21:56 */ @Configuration public class FilterConfig { @Bean public FilterRegistrationBean shiroFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new DelegatingFilterProxy("shiroFilter")); //该值缺省为false,表示生命周期由SpringApplicationContext管理,设置为true则表示由ServletContainer管理 registration.addInitParameter("targetFilterLifecycle", "true"); registration.setEnabled(true); registration.setOrder(Integer.MAX_VALUE - 1); registration.addUrlPatterns("/*"); return registration; } @Bean public FilterRegistrationBean xssFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setDispatcherTypes(DispatcherType.REQUEST); registration.setFilter(new XssFilter()); registration.addUrlPatterns("/*"); registration.setName("xssFilter"); registration.setOrder(Integer.MAX_VALUE); return registration; } } ================================================ FILE: src/main/java/io/sdb/config/JFinalTxAop.java ================================================ package io.sdb.config; import com.jfinal.kit.LogKit; import com.jfinal.plugin.activerecord.ActiveRecordException; import com.jfinal.plugin.activerecord.Config; import com.jfinal.plugin.activerecord.DbKit; import com.jfinal.plugin.activerecord.NestedTransactionHelpException; import com.jfinal.plugin.activerecord.tx.TxConfig; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.stereotype.Component; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.SQLException; /** * Created by chunmeng.lu * Date: 2016-30-03 19:30 */ @Aspect @Component public class JFinalTxAop { @Pointcut(value = "@annotation(io.sdb.common.annotation.JFinalTx)") private void jFinalTx() {} @Around(value = "jFinalTx()", argNames = "pjp") public Object doAround(ProceedingJoinPoint pjp) throws Throwable { Object retVal = null; Config config = getConfigWithTxConfig(pjp); if (config == null) config = DbKit.getConfig(); Connection conn = config.getThreadLocalConnection(); // Nested transaction support if (conn != null) { try { if (conn.getTransactionIsolation() < getTransactionLevel(config)) conn.setTransactionIsolation(getTransactionLevel(config)); retVal = pjp.proceed(); return retVal; } catch (SQLException e) { throw new ActiveRecordException(e); } } Boolean autoCommit = null; try { conn = config.getConnection(); autoCommit = conn.getAutoCommit(); config.setThreadLocalConnection(conn); // conn.setTransactionIsolation(transactionLevel); conn.setTransactionIsolation(getTransactionLevel(config)); conn.setAutoCommit(false); retVal = pjp.proceed(); conn.commit(); } catch (NestedTransactionHelpException e) { if (conn != null) try {conn.rollback();} catch (Exception e1) {LogKit.error(e1.getMessage(), e1);} LogKit.logNothing(e); } catch (Throwable t) { if (conn != null) try {conn.rollback();} catch (Exception e1) {LogKit.error(e1.getMessage(), e1);} throw t instanceof RuntimeException ? (RuntimeException)t : new ActiveRecordException(t); } finally { try { if (conn != null) { if (autoCommit != null) conn.setAutoCommit(autoCommit); conn.close(); } } catch (Throwable t) { // can not throw exception here, otherwise the more important exception in previous catch block can not be thrown LogKit.error(t.getMessage(), t); } finally { // prevent memory leak config.removeThreadLocalConnection(); } } return retVal; } /** * 获取配置的事务级别 * @param config * @return */ protected int getTransactionLevel(Config config) { return config.getTransactionLevel(); } /** * 获取配置的TxConfig,可注解到class或者方法上 * @param pjp * @return Config */ public static Config getConfigWithTxConfig(ProceedingJoinPoint pjp) { MethodSignature ms = (MethodSignature) pjp.getSignature(); Method method = ms.getMethod(); TxConfig txConfig = method.getAnnotation(TxConfig.class); if (txConfig == null) txConfig = pjp.getTarget().getClass().getAnnotation(TxConfig.class); if (txConfig != null) { Config config = DbKit.getConfig(txConfig.value()); if (config == null) throw new RuntimeException("Config not found with TxConfig: " + txConfig.value()); return config; } return null; } } ================================================ FILE: src/main/java/io/sdb/config/KaptchaConfig.java ================================================ package io.sdb.config; import com.google.code.kaptcha.impl.DefaultKaptcha; import com.google.code.kaptcha.util.Config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.Properties; /** * 生成验证码配置 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-04-20 19:22 */ @Configuration public class KaptchaConfig { @Bean public DefaultKaptcha producer() { Properties properties = new Properties(); properties.put("kaptcha.border", "no"); properties.put("kaptcha.textproducer.font.color", "black"); properties.put("kaptcha.textproducer.char.space", "5"); Config config = new Config(properties); DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); defaultKaptcha.setConfig(config); return defaultKaptcha; } } ================================================ FILE: src/main/java/io/sdb/config/Kuaidi100Config.java ================================================ package io.sdb.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Map; /** * Created by yjjdick * 2017-07-03 01:31 */ @Data @Component @ConfigurationProperties(prefix = "kuaidi100") public class Kuaidi100Config { private String notifyUrl; private String kuaidi100Key; private String kuaidi100PollUrl; } ================================================ FILE: src/main/java/io/sdb/config/OrderProperties.java ================================================ package io.sdb.config; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * @author Binary Wang */ @ConfigurationProperties(prefix = "order") @Component @Data public class OrderProperties { Boolean refund; } ================================================ FILE: src/main/java/io/sdb/config/RedisConfig.java ================================================ package io.sdb.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.*; import org.springframework.data.redis.serializer.StringRedisSerializer; /** * Redis配置 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-07-70 19:22 */ @Configuration public class RedisConfig { @Autowired private RedisConnectionFactory factory; @Bean public RedisTemplate redisTemplate() { RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new StringRedisSerializer()); redisTemplate.setConnectionFactory(factory); return redisTemplate; } @Bean public HashOperations hashOperations(RedisTemplate redisTemplate) { return redisTemplate.opsForHash(); } @Bean public ValueOperations valueOperations(RedisTemplate redisTemplate) { return redisTemplate.opsForValue(); } @Bean public ListOperations listOperations(RedisTemplate redisTemplate) { return redisTemplate.opsForList(); } @Bean public SetOperations setOperations(RedisTemplate redisTemplate) { return redisTemplate.opsForSet(); } @Bean public ZSetOperations zSetOperations(RedisTemplate redisTemplate) { return redisTemplate.opsForZSet(); } } ================================================ FILE: src/main/java/io/sdb/config/ShiroConfig.java ================================================ package io.sdb.config; import io.sdb.sys.oauth2.OAuth2Filter; import io.sdb.sys.oauth2.OAuth2Realm; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.session.mgt.SessionManager; import org.apache.shiro.spring.LifecycleBeanPostProcessor; import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.apache.shiro.web.mgt.DefaultWebSecurityManager; import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.servlet.Filter; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; /** * Shiro配置 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-04-20 18:33 */ @Configuration public class ShiroConfig { @Bean("sessionManager") public SessionManager sessionManager(){ DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); sessionManager.setSessionValidationSchedulerEnabled(true); sessionManager.setSessionIdCookieEnabled(true); return sessionManager; } @Bean("securityManager") public SecurityManager securityManager(OAuth2Realm oAuth2Realm, SessionManager sessionManager) { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(oAuth2Realm); securityManager.setSessionManager(sessionManager); return securityManager; } @Bean("shiroFilter") public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean(); shiroFilter.setSecurityManager(securityManager); //oauth过滤 Map filters = new HashMap<>(); filters.put("oauth2", new OAuth2Filter()); shiroFilter.setFilters(filters); Map filterMap = new LinkedHashMap<>(); filterMap.put("/test/**", "anon"); filterMap.put("/actuator/**", "anon"); filterMap.put("/pay/**", "anon"); filterMap.put("/webjars/**", "anon"); filterMap.put("/druid/**", "anon"); filterMap.put("/app/**", "anon"); filterMap.put("/file/**", "anon"); filterMap.put("/wechat/**", "anon"); filterMap.put("/UEditor/**", "anon"); filterMap.put("/sys/login", "anon"); filterMap.put("/sys/logistics/**", "anon"); filterMap.put("/swagger/**", "anon"); filterMap.put("/wx/**", "anon"); filterMap.put("/v2/api-docs", "anon"); filterMap.put("/swagger-ui.html", "anon"); filterMap.put("/swagger-resources/**", "anon"); filterMap.put("/captcha.jpg", "anon"); filterMap.put("/**", "oauth2"); shiroFilter.setFilterChainDefinitionMap(filterMap); return shiroFilter; } @Bean("lifecycleBeanPostProcessor") public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); } @Bean public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { DefaultAdvisorAutoProxyCreator proxyCreator = new DefaultAdvisorAutoProxyCreator(); proxyCreator.setProxyTargetClass(true); return proxyCreator; } @Bean public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) { AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); advisor.setSecurityManager(securityManager); return advisor; } } ================================================ FILE: src/main/java/io/sdb/config/SpringBootConfig.java ================================================ package io.sdb.config; import com.jfinal.template.ext.spring.JFinalViewResolver; import com.jfinal.template.source.ClassPathSourceFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SpringBootConfig { @Bean(name = "jfinalViewResolver") public JFinalViewResolver getJfinalViewRrsolver() { JFinalViewResolver jfr = new JFinalViewResolver(); jfr.setDevMode(true); jfr.setSourceFactory(new ClassPathSourceFactory()); jfr.setPrefix("/templates/"); jfr.setSuffix(".html"); jfr.setContentType("text/html;charset=UTF-8"); jfr.setOrder(0); // jfr.addSharedFunction("/view/common/_layout.html"); return jfr; } } ================================================ FILE: src/main/java/io/sdb/config/SwaggerConfig.java ================================================ package io.sdb.config; import io.swagger.annotations.ApiOperation; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class SwaggerConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //加了ApiOperation注解的方法,生成接口文档 // .apis(RequestHandlerSelectors.basePackage("io.sdb.controller")) //包下的类,生成接口文档 .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("森多邦开源") .description("森多邦框架文档") .termsOfServiceUrl("http://www.senduobang.com") .version("1.0") .build(); } } ================================================ FILE: src/main/java/io/sdb/config/WebMvcConfig.java ================================================ package io.sdb.config; import io.sdb.interceptor.AuthorizationInterceptor; import io.sdb.resolver.LoginUserHandlerMethodArgumentResolver; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.List; /** * MVC配置 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-04-20 22:30 */ @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Autowired private AuthorizationInterceptor authorizationInterceptor; @Autowired private LoginUserHandlerMethodArgumentResolver loginUserHandlerMethodArgumentResolver; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(authorizationInterceptor).addPathPatterns("/app/**"); registry.addInterceptor(authorizationInterceptor).addPathPatterns("/wechat/**"); } @Override public void addArgumentResolvers(List argumentResolvers) { argumentResolvers.add(loginUserHandlerMethodArgumentResolver); } } ================================================ FILE: src/main/java/io/sdb/config/WechatOpenConfig.java ================================================ package io.sdb.config; import me.chanjar.weixin.mp.api.WxMpConfigStorage; import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; /** * Created by yjjdick * 2017-07-30 11:05 */ @Component public class WechatOpenConfig { @Autowired private WxMpProperties config; @Bean public WxMpService wxOpenService() { WxMpService wxOpenService = new WxMpServiceImpl(); wxOpenService.setWxMpConfigStorage(wxOpenConfigStorage()); return wxOpenService; } @Bean public WxMpConfigStorage wxOpenConfigStorage() { WxMpInMemoryConfigStorage wxMpInMemoryConfigStorage = new WxMpInMemoryConfigStorage(); wxMpInMemoryConfigStorage.setAppId(config.getOpenAppId()); wxMpInMemoryConfigStorage.setSecret(config.getOpenAppSecret()); return wxMpInMemoryConfigStorage; } } ================================================ FILE: src/main/java/io/sdb/config/WechatPayConfig.java ================================================ package io.sdb.config; import com.google.common.collect.Maps; import com.lly835.bestpay.config.WxPayH5Config; import com.lly835.bestpay.service.impl.BestPayServiceImpl; import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import java.util.Map; import java.util.stream.Collectors; /** * Created by yjjdick * 2017-07-04 01:05 */ @Configuration @EnableConfigurationProperties(WxMpProperties.class) public class WechatPayConfig { private WxMaProperties properties; public WechatPayConfig(WxMaProperties maProperties) { this.properties = maProperties; } @Bean public BestPayServiceImpl bestPayService() { BestPayServiceImpl bestPayService = new BestPayServiceImpl(); bestPayService.setWxPayH5Config(wxPayH5Config()); return bestPayService; } @Bean public WxPayH5Config wxPayH5Config() { WxPayH5Config wxPayH5Config = new WxPayH5Config(); wxPayH5Config.setAppId(this.properties.getAppid()); wxPayH5Config.setAppSecret(properties.getSecret()); wxPayH5Config.setMchId(properties.getMchId()); wxPayH5Config.setMchKey(properties.getMchKey()); wxPayH5Config.setKeyPath(properties.getKeyPath()); wxPayH5Config.setNotifyUrl(properties.getNotifyUrl()); return wxPayH5Config; } } ================================================ FILE: src/main/java/io/sdb/config/WxMaConfiguration.java ================================================ package io.sdb.config; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage; import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage; import cn.binarywang.wx.miniapp.config.WxMaConfig; import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig; import cn.binarywang.wx.miniapp.message.WxMaMessageHandler; import cn.binarywang.wx.miniapp.message.WxMaMessageRouter; import com.google.common.collect.Lists; import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; import me.chanjar.weixin.common.exception.WxErrorException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.io.File; /** * @author Binary Wang */ @Configuration @ConditionalOnClass(WxMaService.class) @EnableConfigurationProperties(WxMaProperties.class) public class WxMaConfiguration { private WxMaProperties properties; public WxMaConfiguration(WxMaProperties properties) { this.properties = properties; } private static final WxMaMessageHandler templateMsgHandler = (wxMessage, context, service, sessionManager) -> service.getMsgService().sendTemplateMsg(WxMaTemplateMessage.builder() .templateId("此处更换为自己的模板id") .formId("自己替换可用的formid") .data(Lists.newArrayList( new WxMaTemplateMessage.Data("keyword1", "339208499", "#173177"))) .toUser(wxMessage.getFromUser()) .build()); private final WxMaMessageHandler logHandler = (wxMessage, context, service, sessionManager) -> { System.out.println("收到消息:" + wxMessage.toString()); service.getMsgService().sendKefuMsg(WxMaKefuMessage.newTextBuilder().content("收到信息为:" + wxMessage.toJson()) .toUser(wxMessage.getFromUser()).build()); }; private final WxMaMessageHandler textHandler = (wxMessage, context, service, sessionManager) -> service.getMsgService().sendKefuMsg(WxMaKefuMessage.newTextBuilder().content("回复文本消息") .toUser(wxMessage.getFromUser()).build()); private final WxMaMessageHandler picHandler = (wxMessage, context, service, sessionManager) -> { try { WxMediaUploadResult uploadResult = service.getMediaService() .uploadMedia("image", "png", ClassLoader.getSystemResourceAsStream("tmp.png")); service.getMsgService().sendKefuMsg( WxMaKefuMessage .newImageBuilder() .mediaId(uploadResult.getMediaId()) .toUser(wxMessage.getFromUser()) .build()); } catch (WxErrorException e) { e.printStackTrace(); } }; private final WxMaMessageHandler qrcodeHandler = (wxMessage, context, service, sessionManager) -> { try { final File file = service.getQrcodeService().createQrcode("123", 430); WxMediaUploadResult uploadResult = service.getMediaService().uploadMedia("image", file); service.getMsgService().sendKefuMsg( WxMaKefuMessage .newImageBuilder() .mediaId(uploadResult.getMediaId()) .toUser(wxMessage.getFromUser()) .build()); } catch (WxErrorException e) { e.printStackTrace(); } }; @Bean @ConditionalOnMissingBean public WxMaConfig maConfig() { WxMaInMemoryConfig config = new WxMaInMemoryConfig(); config.setAppid(this.properties.getAppid()); config.setSecret(this.properties.getSecret()); config.setToken(this.properties.getToken()); config.setAesKey(this.properties.getAesKey()); config.setMsgDataFormat(this.properties.getMsgDataFormat()); return config; } @Bean @ConditionalOnMissingBean public WxMaService wxMaService(WxMaConfig maConfig) { WxMaService service = new WxMaServiceImpl(); service.setWxMaConfig(maConfig); return service; } @Bean public WxMaMessageRouter router(WxMaService service) { final WxMaMessageRouter router = new WxMaMessageRouter(service); router .rule().handler(logHandler).next() .rule().async(false).content("模板").handler(templateMsgHandler).end() .rule().async(false).content("文本").handler(textHandler).end() .rule().async(false).content("图片").handler(picHandler).end() .rule().async(false).content("二维码").handler(qrcodeHandler).end(); return router; } } ================================================ FILE: src/main/java/io/sdb/config/WxMaProperties.java ================================================ package io.sdb.config; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import org.springframework.boot.context.properties.ConfigurationProperties; /** * @author Binary Wang */ @ConfigurationProperties(prefix = "wechat.ma") @Data public class WxMaProperties { /** * 设置微信小程序的appid */ private String appid; /** * 设置微信小程序的Secret */ private String secret; /** * 设置微信小程序的token */ private String token; /** * 设置微信小程序的EncodingAESKey */ private String aesKey; /** * 消息格式,XML或者JSON */ private String msgDataFormat; /** * 开放平台APPID */ private String openAppId; /** * 开放平台密钥 */ private String openAppSecret; /** * 商户号 */ private String mchId; /** * 商户密钥 */ private String mchKey; /** * 商户证书路径 */ private String keyPath; /** * 微信支付异步通知地址 */ private String notifyUrl; @Override public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); } } ================================================ FILE: src/main/java/io/sdb/config/WxMpConfiguration.java ================================================ package io.sdb.config; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.message.WxMaMessageRouter; import io.sdb.handler.*; import com.google.common.collect.Maps; import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage; import me.chanjar.weixin.mp.api.WxMpMessageRouter; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; import me.chanjar.weixin.mp.constant.WxMpEventConstants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.Map; import java.util.stream.Collectors; import static me.chanjar.weixin.common.api.WxConsts.*; /** * wechat mp configuration * * @author Binary Wang(https://github.com/binarywang) */ @Configuration @EnableConfigurationProperties(WxMpProperties.class) public class WxMpConfiguration { private LogHandler logHandler; private NullHandler nullHandler; private KfSessionHandler kfSessionHandler; private StoreCheckNotifyHandler storeCheckNotifyHandler; private LocationHandler locationHandler; private MenuHandler menuHandler; private MsgHandler msgHandler; private UnsubscribeHandler unsubscribeHandler; private SubscribeHandler subscribeHandler; private WxMpProperties properties; private static Map routers = Maps.newHashMap(); private static Map mpServices = Maps.newHashMap(); @Autowired public WxMpConfiguration(LogHandler logHandler, NullHandler nullHandler, KfSessionHandler kfSessionHandler, StoreCheckNotifyHandler storeCheckNotifyHandler, LocationHandler locationHandler, MenuHandler menuHandler, MsgHandler msgHandler, UnsubscribeHandler unsubscribeHandler, SubscribeHandler subscribeHandler, WxMpProperties properties) { this.logHandler = logHandler; this.nullHandler = nullHandler; this.kfSessionHandler = kfSessionHandler; this.storeCheckNotifyHandler = storeCheckNotifyHandler; this.locationHandler = locationHandler; this.menuHandler = menuHandler; this.msgHandler = msgHandler; this.unsubscribeHandler = unsubscribeHandler; this.subscribeHandler = subscribeHandler; this.properties = properties; } public static Map getRouters() { return routers; } public static Map getMpServices() { return mpServices; } @Bean public Object services() { mpServices = this.properties.getConfigs() .stream() .map(a -> { WxMpInMemoryConfigStorage configStorage = new WxMpInMemoryConfigStorage(); configStorage.setAppId(a.getAppId()); configStorage.setSecret(a.getSecret()); configStorage.setToken(a.getToken()); configStorage.setAesKey(a.getAesKey()); WxMpService service = new WxMpServiceImpl(); service.setWxMpConfigStorage(configStorage); routers.put(a.getAppId(), this.newRouter(service)); return service; }).collect(Collectors.toMap(s -> s.getWxMpConfigStorage().getAppId(), a -> a)); return Boolean.TRUE; } private WxMpMessageRouter newRouter(WxMpService wxMpService) { final WxMpMessageRouter newRouter = new WxMpMessageRouter(wxMpService); // 记录所有事件的日志 (异步执行) newRouter.rule().handler(this.logHandler).next(); // 接收客服会话管理事件 newRouter.rule().async(false).msgType(XmlMsgType.EVENT) .event(WxMpEventConstants.CustomerService.KF_CREATE_SESSION) .handler(this.kfSessionHandler).end(); newRouter.rule().async(false).msgType(XmlMsgType.EVENT) .event(WxMpEventConstants.CustomerService.KF_CLOSE_SESSION) .handler(this.kfSessionHandler) .end(); newRouter.rule().async(false).msgType(XmlMsgType.EVENT) .event(WxMpEventConstants.CustomerService.KF_SWITCH_SESSION) .handler(this.kfSessionHandler).end(); // 门店审核事件 newRouter.rule().async(false).msgType(XmlMsgType.EVENT) .event(WxMpEventConstants.POI_CHECK_NOTIFY) .handler(this.storeCheckNotifyHandler).end(); // 自定义菜单事件 newRouter.rule().async(false).msgType(XmlMsgType.EVENT) .event(MenuButtonType.CLICK).handler(this.menuHandler).end(); // 点击菜单连接事件 newRouter.rule().async(false).msgType(XmlMsgType.EVENT) .event(MenuButtonType.VIEW).handler(this.nullHandler).end(); // 关注事件 newRouter.rule().async(false).msgType(XmlMsgType.EVENT) .event(EventType.SUBSCRIBE).handler(this.subscribeHandler) .end(); // 取消关注事件 newRouter.rule().async(false).msgType(XmlMsgType.EVENT) .event(EventType.UNSUBSCRIBE) .handler(this.unsubscribeHandler).end(); // 上报地理位置事件 newRouter.rule().async(false).msgType(XmlMsgType.EVENT) .event(EventType.LOCATION).handler(this.locationHandler) .end(); // 接收地理位置消息 newRouter.rule().async(false).msgType(XmlMsgType.LOCATION) .handler(this.locationHandler).end(); // 扫码事件 newRouter.rule().async(false).msgType(XmlMsgType.EVENT) .event(EventType.SCAN).handler(this.nullHandler).end(); // 默认 newRouter.rule().async(false).handler(this.msgHandler).end(); return newRouter; } } ================================================ FILE: src/main/java/io/sdb/config/WxMpProperties.java ================================================ package io.sdb.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; /** * Created by yjjdick * 2017-07-03 01:31 */ @Data @ConfigurationProperties(prefix = "wechat.mp") public class WxMpProperties { private List configs; @Data public static class MpConfig { /** * 设置微信公众号的appid */ private String appId; /** * 设置微信公众号的app secret */ private String secret; /** * 设置微信公众号的token */ private String token; /** * 设置微信公众号的EncodingAESKey */ private String aesKey; } private String openAppId; /** * 开放平台密钥 */ private String openAppSecret; /** * 商户号 */ private String mchId; /** * 商户密钥 */ private String mchKey; /** * 商户证书路径 */ private String keyPath; /** * 微信支付异步通知地址 */ private String notifyUrl; } ================================================ FILE: src/main/java/io/sdb/controller/AbstractController.java ================================================ package io.sdb.controller; import io.sdb.model.SysUser; import org.apache.shiro.SecurityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Controller公共组件 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年11月9日 下午9:42:26 */ public abstract class AbstractController { protected Logger logger = LoggerFactory.getLogger(getClass()); protected SysUser getUser() { return (SysUser) SecurityUtils.getSubject().getPrincipal(); } protected Long getUserId() { return getUser().getUserId(); } } ================================================ FILE: src/main/java/io/sdb/controller/AppLoginController.java ================================================ package io.sdb.controller; import io.sdb.common.utils.R; import io.sdb.common.validator.ValidatorUtils; import io.sdb.form.LoginForm; import io.sdb.service.UserService; import io.sdb.common.utils.JwtUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; /** * APP登录授权 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-23 15:31 */ @RestController @RequestMapping("/app") @Api("APP登录接口") public class AppLoginController { @Autowired private UserService userService; @Autowired private JwtUtils jwtUtils; /** * 登录 */ @PostMapping("login") @ApiOperation("登录") public R login(@RequestBody LoginForm form){ //表单校验 ValidatorUtils.validateEntity(form); //用户登录 String userId = userService.login(form); //生成token String token = jwtUtils.generateToken(userId); Map map = new HashMap<>(); map.put("token", token); map.put("expire", jwtUtils.getExpire()); return R.ok(map); } } ================================================ FILE: src/main/java/io/sdb/controller/AppRegisterController.java ================================================ package io.sdb.controller; import io.sdb.common.utils.R; import io.sdb.common.validator.ValidatorUtils; import io.sdb.model.User; import io.sdb.form.RegisterForm; import io.sdb.service.UserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.codec.digest.DigestUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Date; /** * 注册 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-26 17:27 */ @RestController @RequestMapping("/app") @Api("APP注册接口") public class AppRegisterController { @Autowired private UserService userService; @PostMapping("register") @ApiOperation("注册") public R register(@RequestBody RegisterForm form){ //表单校验 ValidatorUtils.validateEntity(form); User user = new User(); user.setMobile(form.getMobile()); user.setUsername(form.getMobile()); user.setPassword(DigestUtils.sha256Hex(form.getPassword())); user.setCreateDate(new Date()); user.save(); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/AppTestController.java ================================================ package io.sdb.controller; import io.sdb.common.utils.R; import io.sdb.model.User; import io.sdb.common.annotation.Login; import io.sdb.common.annotation.LoginUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * APP测试接口 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-23 15:47 */ @RestController @RequestMapping("/app") @Api("APP测试接口") public class AppTestController { @Login @GetMapping("userInfo") @ApiOperation("获取用户信息") public R userInfo(@LoginUser User user){ return R.ok().put("user", user); } @Login @GetMapping("userId") @ApiOperation("获取用户ID") public R userInfo(@RequestAttribute("userId") Integer userId){ return R.ok().put("userId", userId); } @GetMapping("notToken") @ApiOperation("忽略Token验证测试") public R notToken(){ return R.ok().put("msg", "无需token也能访问。。。"); } } ================================================ FILE: src/main/java/io/sdb/controller/CartController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.utils.R; import io.sdb.dto.CartDTO; import io.sdb.model.Cart; import io.sdb.model.User; import io.sdb.common.annotation.Login; import io.sdb.common.annotation.LoginUser; import io.sdb.form.CartForm; import io.sdb.service.CartService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/wechat/cart") public class CartController { @Autowired private CartService cartService; @PostMapping("/add") @Login public R info(@LoginUser User user, @RequestBody CartForm cartForm){ cartService.saveOrUpdate(user.getUserId(), cartForm.getProductId(), cartForm.getQuantity()); Cart query = new Cart(); query.setUserId(user.getUserId()); List cartList = cartService.findByModel(query); return R.ok().put("cartList", cartList); } @PostMapping("/remove") @Login public R remove(@LoginUser User user, @RequestBody CartForm cartForm) { Long[] cartItemIdArr = cartForm.getCartItemIds().toArray(new Long[cartForm.getCartItemIds().size()]); cartService.deleteBatch(cartItemIdArr); Cart query = new Cart(); query.setUserId(user.getUserId()); List cartList = cartService.findByModel(query); return R.ok().put("cartList", cartList); } /** * 列表 */ @GetMapping("/list") @Login public R list(@LoginUser User user){ List cartDTOList = cartService.listDetail(user.getUserId()); return R.ok().put("cartList", cartDTOList); } } ================================================ FILE: src/main/java/io/sdb/controller/FavoriteGoodsController.java ================================================ package io.sdb.controller; import io.sdb.common.annotation.Login; import io.sdb.common.annotation.LoginUser; import io.sdb.common.entity.Filter; import io.sdb.common.utils.R; import io.sdb.dto.FavoriteGoodsDTO; import io.sdb.model.FavoriteGoods; import io.sdb.model.User; import io.sdb.service.FavoriteGoodsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @Controller @RequestMapping("/wechat/favoriteGoods") public class FavoriteGoodsController { @Autowired private FavoriteGoodsService favoriteGoodsService; @ResponseBody @GetMapping("list") @Login public R list(@LoginUser User user){ List favoriteGoodsDTOList = favoriteGoodsService.list(user.getUserId()); return R.ok().put("favoriteList",favoriteGoodsDTOList); } /** * 添加收藏 */ @ResponseBody @GetMapping("/add/{goodsId}") @Login public R add(@LoginUser User user, @PathVariable String goodsId){ List filterList = new ArrayList<>(); Filter filterGoods = new Filter(); filterGoods.setProperty("favorite_goods"); filterGoods.setOperator(Filter.Operator.eq); filterGoods.setValue(goodsId); filterList.add(filterGoods); Filter filterUser = new Filter(); filterUser.setProperty("favorite_user"); filterUser.setOperator(Filter.Operator.eq); filterUser.setValue(user.getUserId()); filterList.add(filterUser); List favoriteGoodsList = favoriteGoodsService.findByFilters(filterList); if(favoriteGoodsList==null || favoriteGoodsList.isEmpty()){ FavoriteGoods favoriteGoods = new FavoriteGoods(); favoriteGoods.setFavoriteGoods(goodsId); favoriteGoods.setFavoriteUser(user.getUserId()); favoriteGoodsService.insert(favoriteGoods); } return R.ok(); } /** * remove */ @ResponseBody @Login @GetMapping("/remove/{goodsId}") public R remove(@LoginUser User user, @PathVariable String goodsId){ Filter filter = new Filter(); filter.setProperty("favorite_goods"); filter.setOperator(Filter.Operator.eq); filter.setValue(goodsId); filter.setWhereOpt(Filter.WhereOpt.and); filter.setProperty("favorite_user"); filter.setOperator(Filter.Operator.eq); filter.setValue(user.getUserId()); List favoriteGoodsList = favoriteGoodsService.findByFilter(filter); if(favoriteGoodsList!=null || favoriteGoodsList.size()>0){ FavoriteGoods favoriteGoods = new FavoriteGoods(); favoriteGoods.setFavoriteGoods(goodsId); favoriteGoods.setFavoriteUser(user.getUserId()); favoriteGoodsService.deleteByModel(favoriteGoods); } return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/FileController.java ================================================ package io.sdb.controller; import io.sdb.common.exception.RRException; import io.sdb.common.utils.R; import io.sdb.enums.ResultEnum; import io.sdb.model.SysOss; import io.sdb.common.annotation.Login; import io.sdb.oss.cloud.OSSFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.Date; /** * 微信小程序用户接口 * * @author Binary Wang */ @RestController @Slf4j @RequestMapping("/file") public class FileController { @PostMapping("/upload") @Login public R upload(@RequestParam("file") MultipartFile file) throws Exception { if (file.isEmpty()) { throw new RRException("上传文件不能为空"); } Long fileSize = file.getSize(); if (fileSize > 2048 * 1000) { return R.error(ResultEnum.VOLUNTEER_UPLOAD_FILE_BIG); } //上传文件 String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); String url = OSSFactory.build().uploadSuffix(file.getBytes(), suffix); //保存文件信息 SysOss sysOss = new SysOss(); sysOss.setUrl(url); sysOss.setCreateDate(new Date()); sysOss.save(); return R.ok().put("url", url); } } ================================================ FILE: src/main/java/io/sdb/controller/GoodsController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import com.jfinal.plugin.activerecord.Page; import io.sdb.common.annotation.LoginUser; import io.sdb.common.entity.Filter; import io.sdb.common.entity.Order; import io.sdb.common.utils.R; import io.sdb.enums.GeneralEnum; import io.sdb.model.FavoriteGoods; import io.sdb.model.Goods; import io.sdb.model.ProductCategory; import io.sdb.common.annotation.Login; import io.sdb.form.GoodsListForm; import io.sdb.model.User; import io.sdb.service.FavoriteGoodsService; import io.sdb.service.GoodsService; import io.sdb.service.ProductCategoryService; import io.sdb.vo.GoodsVO; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Controller @RequestMapping("/wechat/goods") public class GoodsController { @Autowired private GoodsService goodsService; @Autowired private ProductCategoryService productCategoryService; @Autowired private FavoriteGoodsService favoriteGoodsService; /** * 列表 */ @ResponseBody @Login @GetMapping("/info/{goodId}") public R info(@LoginUser User user, @PathVariable String goodId){ Goods goods = goodsService.findById(goodId); GoodsVO goodsVO = new GoodsVO(); BeanUtils.copyProperties(goods, goodsVO); List filterList = new ArrayList<>(); Filter filterGoods = new Filter(); filterGoods.setProperty("favorite_goods"); filterGoods.setOperator(Filter.Operator.eq); filterGoods.setValue(goodId); Filter filterUser = new Filter(); filterUser.setProperty("favorite_user"); filterUser.setOperator(Filter.Operator.eq); filterUser.setValue(user.getUserId()); filterList.add(filterGoods); filterList.add(filterUser); List favoriteGoodsList = favoriteGoodsService.findByFilters(filterList); if(favoriteGoodsList!=null && favoriteGoodsList.size()>0){ goodsVO.setFavorite(true); } return R.ok().put("goodsInfo", goodsVO); } /** * 列表 */ @ResponseBody @Login @PostMapping("/list") public R info(@RequestBody GoodsListForm goodsListForm){ List filterList = new ArrayList<>(); Filter filter = new Filter(); if (goodsListForm.getCategoryId() != null &&!goodsListForm.getCategoryId().equals(-1)) { filter.setProperty("product_category_id"); filter.setOperator(Filter.Operator.in); Filter pc = new Filter(); pc.setProperty("tree_path"); pc.setValue(goodsListForm.getCategoryId()); pc.setOperator(Filter.Operator.like); List productCategoryList = productCategoryService.findByFilter(pc); List categoryIds = productCategoryList.stream().map(item -> { return item.getId(); }).collect(Collectors.toList()); filter.setValue(categoryIds); filterList.add(filter); } filter = new Filter(); filter.setProperty("is_marketable"); filter.setValue(GeneralEnum.TRUE.getCode()); filter.setOperator(Filter.Operator.eq); filterList.add(filter); Order order = new Order(); order.setProperty("create_date"); order.setDirection(Order.Direction.desc); Page pr = goodsService.paginate(goodsListForm.getPageNum(), goodsListForm.getPageSize(), filterList, order); return R.ok().put("goodsPage", pr); } } ================================================ FILE: src/main/java/io/sdb/controller/GrouponController.java ================================================ package io.sdb.controller; import com.jfinal.plugin.activerecord.Page; import io.sdb.common.entity.Filter; import io.sdb.common.entity.Order; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.enums.GeneralEnum; import io.sdb.enums.GrouponStatusEnum; import io.sdb.model.Groupon; import io.sdb.model.GrouponTeam; import io.sdb.model.User; import io.sdb.service.GrouponService; import io.sdb.service.GrouponTeamService; import io.sdb.service.UserService; import io.sdb.vo.GrouponDetailVO; import io.sdb.vo.GrouponTeamVO; import io.sdb.vo.GrouponVO; import io.swagger.models.auth.In; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.Predicate; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.stream.Collectors; @Controller @RequestMapping("/wechat/groupon") public class GrouponController { @Autowired private GrouponService grouponService; @Autowired private GrouponTeamService grouponTeamService; @Autowired private UserService userService; @ResponseBody @GetMapping("/grouponTeam/{grouponId}") public R grouponTeam(@PathVariable String grouponId){ Filter filter = new Filter(); filter.setProperty("groupon_id"); filter.setOperator(Filter.Operator.eq); filter.setValue(grouponId); List grouponTeamList = grouponTeamService.findByFilter(filter); List grouponTeamVOList = grouponTeamList.stream().map(item -> { GrouponTeamVO grouponTeamVO = new GrouponTeamVO(); BeanUtils.copyProperties(item, grouponTeamVO); User user = userService.findById(item.getUserId()); grouponTeamVO.setHeadUrl(user.getAvatar()); return grouponTeamVO; }).collect(Collectors.toList()); Groupon groupon = grouponService.findById(grouponId); Integer surplus = groupon.getCount() - grouponTeamList.size(); if (surplus < 0) { surplus = 0; } return R.ok().put("grouponTeamList", grouponTeamVOList).put("surplus", surplus).put("grouponExpireTime", groupon.getExpireDate().getTime()); } @ResponseBody @GetMapping("/grouponTop/{goodsId}") public R grouponTop(@PathVariable String goodsId){ List filterList = new ArrayList<>(); Filter filter = new Filter(); filter.setProperty("goods_id"); filter.setOperator(Filter.Operator.eq); filter.setValue(goodsId); filterList.add(filter); filter = new Filter(); filter.setProperty("expire_date"); filter.setOperator(Filter.Operator.gt); filter.setValue(new Date()); filterList.add(filter); filter = new Filter(); filter.setProperty("status"); filter.setOperator(Filter.Operator.eq); filter.setValue(GrouponStatusEnum.PENDING.getCode()); filterList.add(filter); Order order = new Order(); order.setDirection(Order.Direction.asc); order.setProperty("create_date"); Page page = grouponService.paginate(1, 10, filterList, order); List grouponList = page.getList(); List grouponDetailVOList = grouponList.stream().map(item -> { GrouponDetailVO grouponDetailVO = new GrouponDetailVO(); grouponDetailVO.setGrouponId(item.getId()); grouponDetailVO.setTotalCount(item.getCount()); List gtFilterList = new ArrayList<>(); Filter gtFilter = new Filter(); gtFilter.setProperty("groupon_id"); gtFilter.setOperator(Filter.Operator.eq); gtFilter.setValue(item.getId()); gtFilterList.add(gtFilter); List grouponTeamList = grouponTeamService.findByFilters(gtFilterList); GrouponTeam captain = new GrouponTeam(); for (GrouponTeam grouponTeam : grouponTeamList) { if (grouponTeam.getCaptain() == GeneralEnum.TRUE.getCode()) { captain = grouponTeam; break; } } User user = userService.findById(captain.getUserId()); grouponDetailVO.setHeadUrl(user.getAvatar()); grouponDetailVO.setName(user.getNickname()); grouponDetailVO.setJoinedCount(grouponTeamList.size()); return grouponDetailVO; }).collect(Collectors.toList()); return R.ok().put("grouponDetailList", grouponDetailVOList); } } ================================================ FILE: src/main/java/io/sdb/controller/OrderController.java ================================================ package io.sdb.controller; import com.jfinal.plugin.activerecord.Page; import com.lly835.bestpay.model.PayResponse; import io.sdb.common.entity.Filter; import io.sdb.common.entity.Order; import io.sdb.common.exception.RRException; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.dto.OrderDTO; import io.sdb.dto.ProductDTO; import io.sdb.enums.*; import io.sdb.form.*; import io.sdb.model.*; import io.sdb.common.annotation.Login; import io.sdb.common.annotation.LoginUser; import io.sdb.service.LogisticsService; import io.sdb.service.*; import io.sdb.vo.OrderDetailVO; import io.sdb.vo.OrderVO; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @RestController @RequestMapping("/wechat/order") public class OrderController { @Autowired ReceiverService receiverService; @Autowired SnService snService; @Autowired CartService cartService; @Autowired OrderMasterService orderService; @Autowired OrderDetailService orderDetailService; @Autowired ProductService productService; @Autowired GoodsService goodsService; @Autowired PayService payService; @Autowired LogisticsService logisticsService; @Autowired GrouponService grouponService; @Autowired GrouponTeamService grouponTeamService; @Login @PostMapping("refund") public R refund(HttpServletRequest request, @LoginUser User user, @RequestBody RefundForm refundForm) { OrderMaster orderMaster = orderService.findById(refundForm.getOrderId()); if (orderMaster.getOrderStatus().equals(OrderStatusEnum.NEW.getCode()) && orderMaster.getPayStatus().equals(PayStatusEnum.SUCCESS.getCode())) { orderMaster = payService.refund(refundForm.getOrderId()); return R.ok().put("refundTradeNo", orderMaster.getRefundTradeNo()); }else { throw new RRException(ResultEnum.ORDER_STATUS_ERROR); } } @Login @PostMapping("cancel") public R cancel(@LoginUser User user,@RequestBody RefundForm refundForm) { OrderMaster orderMaster = orderService.cancel(refundForm.getOrderId()); return R.ok().put("refundTradeNo", orderMaster.getRefundTradeNo()); } @Login @GetMapping("logistic/{orderId}") public R logistic(@LoginUser User user, @PathVariable String orderId) { OrderMaster orderMaster = orderService.findById(orderId); Logistics logistics = logisticsService.findById(orderMaster.getTrackingNumber()); Filter filter = new Filter(); filter.setProperty("order_id"); filter.setOperator(Filter.Operator.eq); filter.setValue(orderId); List orderDetails = orderDetailService.findByFilter(filter); List orderDetailVOList = orderDetails.stream().map(item -> { OrderDetailVO detailVO = new OrderDetailVO(); BeanUtils.copyProperties(item, detailVO); return detailVO; }).collect(Collectors.toList()); OrderVO orderVO = new OrderVO(); BeanUtils.copyProperties(orderMaster, orderVO); orderVO.setOrderDetailList(orderDetailVOList); return R.ok().put("orderInfo", orderVO).put("logistics", logistics); } @Login @PostMapping("finish") public R finish(@LoginUser User user, @RequestBody OrderForm orderForm) { OrderMaster orderMaster = orderService.findById(orderForm.getOrderId()); if (!orderMaster.getOrderStatus().equals(OrderStatusEnum.SHIPPING.getCode()) || !orderMaster.getBuyerId().equals(user.getUserId())) { throw new RRException(ResultEnum.ORDER_STATUS_ERROR); } orderMaster.setOrderStatus(OrderStatusEnum.FINISHED.getCode()); orderMaster.update(); return R.ok(); } @Login @PostMapping("delete") public R delete(@LoginUser User user, @RequestBody OrderForm orderForm) { OrderMaster orderMaster = orderService.findById(orderForm.getOrderId()); if (orderMaster.getOrderStatus().equals(OrderStatusEnum.FINISHED.getCode()) || orderMaster.getOrderStatus().equals(OrderStatusEnum.SHIPPING.getCode()) || !orderMaster.getBuyerId().equals(user.getUserId())) { throw new RRException(ResultEnum.ORDER_STATUS_ERROR); } orderService.delete(orderForm.getOrderId()); return R.ok(); } @Login @GetMapping("info/{id}") public R checkout(@LoginUser User user, @PathVariable String id) { OrderMaster orderMaster = orderService.findById(id); OrderDetail query = new OrderDetail(); query.setOrderId(orderMaster.getOrderId()); List orderDetailList = orderDetailService.findByModel(query); OrderVO orderVO = new OrderVO(); BeanUtils.copyProperties(orderMaster, orderVO); List orderDetailVOList = orderDetailList.stream().map(item -> { OrderDetailVO orderDetailVO = new OrderDetailVO(); BeanUtils.copyProperties(item, orderDetailVO); return orderDetailVO; }).collect(Collectors.toList()); orderVO.setOrderDetailList(orderDetailVOList); if (orderMaster.getGroupon() == GeneralEnum.TRUE.getCode()) { OrderDetail orderDetail = orderDetailList.get(0); String productId = orderDetail.getProductId(); Product product = productService.findById(productId); return R.ok().put("orderInfo", orderVO).put("goodsId", product.getGoodsSn()); }else { return R.ok().put("orderInfo", orderVO); } } @Login @PostMapping("detailList") public R detailList(@LoginUser User user,@RequestBody OrderDetailForm orderDetailForm) { List filterList = new ArrayList<>(); List orderList = new ArrayList<>(); Filter filter = new Filter(); filter.setProperty("buyer_id"); filter.setOperator(Filter.Operator.eq); filter.setValue(user.getUserId()); filterList.add(filter); if (orderDetailForm.getOrderStatus() != -1) { filter = new Filter(); filter.setProperty("order_status"); filter.setOperator(Filter.Operator.in); filter.setValue(orderDetailForm.getOrderStatus()); filterList.add(filter); } if (orderDetailForm.getOrderStatus() == OrderStatusEnum.NEW.getCode()) { filter = new Filter(); filter.setProperty("order_status"); filter.setOperator(Filter.Operator.in); filter.setValue(OrderStatusEnum.GROUPON_SUCC.getCode()); filter.setWhereOpt(Filter.WhereOpt.or); filterList.add(filter); } if (orderDetailForm.getPayStatus() != -1) { filter = new Filter(); filter.setProperty("pay_status"); filter.setOperator(Filter.Operator.in); filter.setValue(orderDetailForm.getPayStatus()); filterList.add(filter); } Order order = new Order(); order.setProperty("create_date"); order.setDirection(Order.Direction.desc); orderList.add(order); Page orderDetailPage = orderService.paginate(orderDetailForm.getPageNum(), orderDetailForm.getPageSize(), filterList, orderList); if(orderDetailPage.getList().size() == 0) { return R.ok().put("orderDetailPage", new ArrayList<>()); } List orderIdList = orderDetailPage.getList().stream().map(item -> { return item.getOrderId(); }).collect(Collectors.toList()); filter = new Filter(); filter.setProperty("order_id"); filter.setOperator(Filter.Operator.in); filter.setValue(orderIdList); filterList.add(filter); List orderVOList = orderDetailPage.getList().stream().map(item -> { OrderVO orderVO = new OrderVO(); BeanUtils.copyProperties(item, orderVO); return orderVO; }).collect(Collectors.toList()); List orderDetailList = orderDetailService.findByFilter(filter); for (OrderVO orderVO:orderVOList ) { for (OrderDetail detail : orderDetailList) { if (detail.getOrderId().equals(orderVO.getOrderId())) { OrderDetailVO orderDetailVO = new OrderDetailVO(); BeanUtils.copyProperties(detail, orderDetailVO); if(orderVO.getOrderDetailList() == null) { orderVO.setOrderDetailList(new ArrayList<>()); } orderVO.getOrderDetailList().add(orderDetailVO); } } } return R.ok().put("orderDetailPage", new PageUtils(orderVOList, orderDetailPage.getTotalPage(), orderDetailPage.getPageSize(), orderDetailForm.getPageNum())); } @Login @PostMapping("create") public R create(@LoginUser User user,@RequestBody CheckOutForm checkOutForm) { if (checkOutForm.getProductInfos() == null || checkOutForm.getProductInfos().size() == 0) { throw new RRException(ResultEnum.CART_CANNOT_NULL); } if (checkOutForm.isGroupon() && !StringUtils.isBlank(checkOutForm.getGrouponId())) { Groupon groupon = grouponService.findById(checkOutForm.getGrouponId()); Integer total = groupon.getCount(); Filter filter = new Filter(); filter.setProperty("groupon_id"); filter.setOperator(Filter.Operator.eq); filter.setValue(checkOutForm.getGrouponId()); List grouponTeamList = grouponTeamService.findByFilter(filter); Integer joinCount = grouponTeamList.size(); if (total <= joinCount) { throw new RRException(ResultEnum.GROUPON_NOT_ENOUGH); } GrouponTeam grouponTeam = grouponTeamService.findById(checkOutForm.getGrouponId(), user.getUserId()); if(grouponTeam != null) { throw new RRException(ResultEnum.GROUPON_USER_EXSITS); } } InvoiceInfo invoiceInfo = checkOutForm.getInvoiceInfo(); ReceiveInfo receiveInfo = checkOutForm.getReceiveInfo(); List productIds = checkOutForm.getProductInfos().stream().map(item -> { return item.getId(); }).collect(Collectors.toList()); List productList = productService.listDetailByProductIds(String.join(",", productIds)); for (ProductDTO item :productList ) { for (ProductInfo info :checkOutForm.getProductInfos() ) { if (info.getId().equals(item.getSn())) { item.setQuantity(info.getQuantity()); break; } } } OrderDTO orderDTO = new OrderDTO(); orderDTO.setBuyerAddress(receiveInfo.getFullAddr()); orderDTO.setBuyerName(receiveInfo.getName()); orderDTO.setBuyerOpenid(user.getMaOpenId()); orderDTO.setBuyerPhone(receiveInfo.getPhone()); orderDTO.setBuyerId(user.getUserId()); orderDTO.setTitle(invoiceInfo.getTitle()); orderDTO.setTaxNumber(invoiceInfo.getTaxNumber()); orderDTO.setBankAccount(invoiceInfo.getBankAccount()); orderDTO.setBankName(invoiceInfo.getBankName()); orderDTO.setInvoiceType(invoiceInfo.getType()); orderDTO.setCompanyAddress(invoiceInfo.getCompanyAddress()); orderDTO.setTelephone(invoiceInfo.getTelephone()); orderDTO.setRemark(checkOutForm.getRemark()); orderDTO.setNeedInvoice(checkOutForm.isNeedInvoice()? GeneralEnum.TRUE.getCode(): GeneralEnum.FALSE.getCode()); orderDTO.setTitle(invoiceInfo.getTitle()); orderDTO.setOrderStatus(OrderStatusEnum.NEW.getCode()); orderDTO.setPayStatus(PayStatusEnum.WAIT.getCode()); if(checkOutForm.isGroupon()) { orderDTO.setGroupon(GeneralEnum.TRUE.getCode()); orderDTO.setGrouponId(checkOutForm.getGrouponId()); ProductDTO productDTO = productList.get(0); Goods goods = goodsService.findById(productDTO.getGoodsSn()); orderDTO.setGrouponCount(goods.getGrouponCount()); }else { orderDTO.setGroupon(GeneralEnum.FALSE.getCode()); } List orderDetails = productList.stream().map(item->{ OrderDetail orderDetail = new OrderDetail(); String sn = snService.generate(SnEnum.ORDER_MASTER); orderDetail.setDetailId(sn); orderDetail.setProductIcon(item.getImage()); orderDetail.setProductId(item.getSn()); orderDetail.setProductName(item.getName()); orderDetail.setProductModel(item.getModel()); orderDetail.setProductSpec(item.getSpecificationValues()); orderDetail.setProductPrice(item.getPrice()); orderDetail.setGroupPrice(item.getGroupPrice()); orderDetail.setProductQuantity(item.getQuantity()); return orderDetail; }).collect(Collectors.toList()); orderDTO.setOrderDetailList(orderDetails); orderDTO = orderService.create(orderDTO); if (checkOutForm.getCartItemIds() != null && checkOutForm.getCartItemIds().size() > 0) { Object[] ids = checkOutForm.getCartItemIds().toArray(); cartService.deleteBatch(ids); } PayResponse payResponse = null; if(orderDTO.getPayStatus().equals(PayStatusEnum.WAIT.getCode())) { payResponse = payService.create(orderDTO); } return R.ok().put("orderDTO", orderDTO).put("payResponse", payResponse); } } ================================================ FILE: src/main/java/io/sdb/controller/PayController.java ================================================ package io.sdb.controller; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.domain.AlipayTradeRefundModel; import com.alipay.api.domain.AlipayTradeWapPayModel; import com.alipay.api.internal.util.AlipaySignature; import com.alipay.api.request.AlipayTradeRefundRequest; import com.alipay.api.request.AlipayTradeWapPayRequest; import com.alipay.api.response.AlipayTradeRefundResponse; import io.sdb.config.AlipayConfig; import io.sdb.service.OrderMasterService; import io.sdb.service.PayService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.UUID; /** * APP登录授权 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-23 15:31 */ @Controller @Slf4j @RequestMapping("/pay") public class PayController { @Autowired PayService payService; @Autowired OrderMasterService orderService; @RequestMapping("/returnUrl") public void returnUrl(HttpServletResponse response, HttpServletRequest request) throws IOException, AlipayApiException { response.sendRedirect("https://www.baidu.com"); } @RequestMapping("/refund/{no}") public void testTradeRefund(@PathVariable String no) throws Exception { AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY,AlipayConfig.SIGNTYPE); AlipayTradeRefundModel model = new AlipayTradeRefundModel(); model.setOutTradeNo(no); //与预授权转支付商户订单号相同,代表对该笔交易退款 model.setRefundAmount("0.01"); model.setRefundReason("预授权退款测试"); model.setOutRequestNo("refund0000001");//标识一次退款请求,同一笔交易多次退款需要保证唯一,如部分退款则此参数必传。 AlipayTradeRefundRequest request = new AlipayTradeRefundRequest(); request.setBizModel(model); AlipayTradeRefundResponse response = client.execute(request); log.info("response: {}"+response.getBody()); //退款失败的"fund_change":"N" // {"alipay_trade_refund_response":{"code":"10000","msg":"Success","buyer_logon_id":"mqv***@sandbox.com","buyer_user_id":"2088102171383132","fund_change":"N","gmt_refund_pay":"2018-08-30 15:39:03","out_trade_no":"13c7b574-5f54-42da-8165-e9fc0602f74e","refund_fee":"0.01","send_back_fee":"0.00","trade_no":"2018083021001004130500297310"},"sign":"LgzBU1K7056OLY0AAvFAZBVcZuXXt7PTbZDms5nB5qieslSKiKbYc22Jw4As/GdCJJuH7NVEtBABRM9UBXtTJBCGGn7By/H+vZfkulv43E4ASHvLC8OjXiPrypUO4SDleBTB4WW5h3Vnwk8q/SJ+UXv0lb5xrib84Zspsbz//3rrhzqGJ2sr/40YZIoIuevq/OAmLAkbNuAyIiC4ZxkJijF+mD3PbITTdYs/5e4cVEwriZcdLWnptblucSUtjKwEZvwaAuXuB+CEbqaMEBnpPgye0yqvY9tNb6PmVxHX7sc8sL9rfgDjK09xIXMhU9tgh0R/cgPZsRXvSs/HjHiqlA=="} //退款成功的"fund_change":"Y" // {"alipay_trade_refund_response":{"code":"10000","msg":"Success","buyer_logon_id":"mqv***@sandbox.com","buyer_user_id":"2088102171383132","fund_change":"Y","gmt_refund_pay":"2018-08-30 15:42:15","out_trade_no":"2936025a-73eb-4273-8b1c-dfa8d637ff70","refund_fee":"0.01","send_back_fee":"0.00","trade_no":"2018083021001004130500297311"},"sign":"Nr6WroDGtVfWVCvqSSY7Z2SPtV68UbN9eII9GSMIZ3D4xlMRd+NoEUPl8EB9h3z2T8rR7fUrjAAjfIfC5qamaW6LW9tGXI4d8GprgU0YGx+53ZqyXJIaz3LeSJ6+U7NsC3h62/jOmgow6qAqca/XHkjHXmDTeERC+D6nqJLY28E5EKbVZK2IvupCo4sJLih8nI6BS0H5IjVIsRztAjgosrqCHic32JUel4/uyouBfRGPp5pp+3fzbxdJ1yMbUeKjuipNFS9Bhdvdt3ngTJoOAF+o7vQn7DIsJZQn5zNNP3BCEeXZIiXEfF/yha2HBlAM/ush5yZBpjMhDLXYRGuJUQ=="} } /** * 微信异步通知 * @param notifyData */ @RequestMapping("/notify") public ModelAndView notify(@RequestBody String notifyData) { payService.notify(notifyData); //返回给微信处理结果 return new ModelAndView("success"); } @RequestMapping("/alinotify") public void alinotify(HttpServletRequest request, HttpServletResponse response) { //获取支付宝POST过来反馈信息 Map params = new HashMap(); Map requestParams = request.getParameterMap(); for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) { String name = (String) iter.next(); String[] values = (String[]) requestParams.get(name); String valueStr = ""; for (int i = 0; i < values.length; i++) { valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ","; } //乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化 //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk"); params.put(name, valueStr); } //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)// //商户订单号 String out_trade_no = ""; String trade_no = ""; String trade_status = ""; try { out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8"); //支付宝交易号 log.info("alinotify out_trade_no = {}", out_trade_no); trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8"); log.info("alinotify trade_no = {}", trade_no); //交易状态 trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)// //计算得出通知验证结果 //boolean AlipaySignature.rsaCheckV1(Map params, String publicKey, String charset, String sign_type) boolean verify_result = false; try { verify_result = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, "RSA2"); } catch (AlipayApiException e) { e.printStackTrace(); } if(verify_result){//验证成功 ////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— if(trade_status.equals("TRADE_FINISHED")){ //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 //如果有做过处理,不执行商户的业务程序 //注意: //如果签约的是可退款协议,退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 //如果没有签约可退款协议,那么付款完成后,支付宝系统发送该交易状态通知。 } else if (trade_status.equals("TRADE_SUCCESS")){ //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 //如果有做过处理,不执行商户的业务程序 //注意: //如果签约的是可退款协议,那么付款完成后,支付宝系统发送该交易状态通知。 } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— // out.clear(); try { response.getWriter().print("success"); //请不要修改或删除 } catch (IOException e) { e.printStackTrace(); } ////////////////////////////////////////////////////////////////////////////////////////// }else{//验证失败 try { response.getWriter().print("fail"); } catch (IOException e) { e.printStackTrace(); } } } @RequestMapping("/test") public ModelAndView test() { return new ModelAndView("success"); } @RequestMapping("/alipay") public void alipay(HttpServletResponse response) { // 商户订单号,商户网站订单系统中唯一订单号,必填 String out_trade_no = UUID.randomUUID().toString(); // 订单名称,必填 String subject = "test" + UUID.randomUUID().toString(); System.out.println(subject); // 付款金额,必填 String total_amount= "0.01"; // 商品描述,可空 String body = "test desc"; // 超时时间 可空 String timeout_express=""; // 销售产品码 必填 String product_code="QUICK_WAP_WAY"; /**********************/ // SDK 公共请求类,包含公共请求参数,以及封装了签名与验签,开发者无需关注签名与验签 //调用RSA签名方式 AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY,AlipayConfig.SIGNTYPE); AlipayTradeWapPayRequest alipay_request=new AlipayTradeWapPayRequest(); // 封装请求支付信息 AlipayTradeWapPayModel model=new AlipayTradeWapPayModel(); model.setOutTradeNo(out_trade_no); model.setSubject(subject); model.setTotalAmount(total_amount); model.setBody(body); model.setTimeoutExpress(timeout_express); model.setProductCode(product_code); alipay_request.setBizModel(model); // 设置异步通知地址 alipay_request.setNotifyUrl(AlipayConfig.notify_url); // 设置同步地址 alipay_request.setReturnUrl(AlipayConfig.return_url); // form表单生产 String form = ""; try { // 调用SDK生成表单 form = client.pageExecute(alipay_request).getBody(); response.setContentType("text/html;charset=" + AlipayConfig.CHARSET); response.getWriter().write(form);//直接将完整的表单html输出到页面 response.getWriter().flush(); response.getWriter().close(); } catch (AlipayApiException e) { // TODO Auto-generated catch block e.printStackTrace(); log.error("Alipay ApiException>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", e); } catch (IOException e) { e.printStackTrace(); log.error("Alipay IOException>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", e); } } } ================================================ FILE: src/main/java/io/sdb/controller/ProductCategoryController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.utils.R; import io.sdb.common.utils.TreeBuilder; import io.sdb.model.ProductCategory; import io.sdb.common.annotation.Login; import io.sdb.service.ProductCategoryService; import io.sdb.vo.ProductCategoryVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; import java.util.stream.Collectors; @Controller @RequestMapping("/wechat/productCategory") public class ProductCategoryController { @Autowired private ProductCategoryService productCategoryService; @ResponseBody @Login @GetMapping("/tree") public R tree(){ List productCategoryList = productCategoryService.findAll(); List productCategoryVOList = productCategoryList.stream().map(item -> { ProductCategoryVO productCategoryVO = new ProductCategoryVO(item); return productCategoryVO; }).collect(Collectors.toList()); List productCategoryVOTree = new TreeBuilder().buildTree(productCategoryVOList); return R.ok().put("productCategroyTree", productCategoryVOTree); } /** * 列表 */ @ResponseBody @Login @GetMapping("/list") public R list(){ List productCategoryList = productCategoryService.findAll(); return R.ok().put("productCategoryList", productCategoryList); } } ================================================ FILE: src/main/java/io/sdb/controller/ProductController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.entity.Filter; import io.sdb.common.utils.R; import io.sdb.dto.ProductDTO; import io.sdb.model.Product; import io.sdb.model.Specification; import io.sdb.service.ProductService; import io.sdb.service.SpecificationService; import io.sdb.vo.ProductVO; import io.sdb.vo.SpecificationVO; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @Controller @RequestMapping("/wechat/product") public class ProductController { @Autowired private ProductService productService; /** * 列表 */ @ResponseBody @GetMapping("/listByGoodId/{goodId}") public R listByGoodId(@PathVariable String goodId){ Product product = new Product(); product.setGoodsSn(goodId); List productList = productService.findByModel(product); return R.ok().put("productList", productList); } /** * 列表 */ @ResponseBody @GetMapping("/listByProductIds/{productIds}") public R listByProductIds(@PathVariable String productIds){ String[] productIdArr = productIds.split(","); // List pruductIdList = Arrays.asList(productIdArr); Filter filter = new Filter(); filter.setOperator(Filter.Operator.in); filter.setProperty("sn"); filter.setValue(productIdArr); List productList = productService.findByFilter(filter); return R.ok().put("productList", productList); } /** * 列表 */ @ResponseBody @GetMapping("/listDetailByProductIds/{productIds}") public R listDetailByProductIds(@PathVariable String productIds){ List productList = productService.listDetailByProductIds(productIds); List productVOList = productList.stream().map(item -> { ProductVO productVO = new ProductVO(); BeanUtils.copyProperties(item, productVO); return productVO; }).collect(Collectors.toList()); return R.ok().put("productList", productVOList); } } ================================================ FILE: src/main/java/io/sdb/controller/ScheduleJobController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.annotation.SysLog; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.common.validator.ValidatorUtils; import io.sdb.model.ScheduleJob; import io.sdb.service.ScheduleJobService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Map; /** * 定时任务 * * @author Mark sunlightcs@gmail.com * @since 1.2.0 2016-11-28 */ @RestController @RequestMapping("/sys/schedule") public class ScheduleJobController { @Autowired private ScheduleJobService scheduleJobService; /** * 定时任务列表 */ @GetMapping("/list") @RequiresPermissions("sys:schedule:list") public R list(@RequestParam Map params){ PageUtils page = scheduleJobService.queryPage(params); return R.ok().put("page", page); } /** * 定时任务信息 */ @GetMapping("/info/{jobId}") @RequiresPermissions("sys:schedule:info") public R info(@PathVariable("jobId") Long jobId){ ScheduleJob schedule = scheduleJobService.findById(jobId); return R.ok().put("schedule", schedule); } /** * 保存定时任务 */ @SysLog("保存定时任务") @PostMapping("/save") @RequiresPermissions("sys:schedule:save") public R save(@RequestBody ScheduleJob scheduleJob){ ValidatorUtils.validateEntity(scheduleJob); scheduleJobService.save(scheduleJob); return R.ok(); } /** * 修改定时任务 */ @SysLog("修改定时任务") @PostMapping("/update") @RequiresPermissions("sys:schedule:update") public R update(@RequestBody ScheduleJob scheduleJob){ ValidatorUtils.validateEntity(scheduleJob); scheduleJobService.update(scheduleJob); return R.ok(); } /** * 删除定时任务 */ @SysLog("删除定时任务") @PostMapping("/delete") @RequiresPermissions("sys:schedule:delete") public R delete(@RequestBody Long[] jobIds){ scheduleJobService.deleteBatch(jobIds); return R.ok(); } /** * 立即执行任务 */ @SysLog("立即执行任务") @PostMapping("/run") @RequiresPermissions("sys:schedule:run") public R run(@RequestBody Long[] jobIds){ scheduleJobService.run(jobIds); return R.ok(); } /** * 暂停定时任务 */ @SysLog("暂停定时任务") @PostMapping("/pause") @RequiresPermissions("sys:schedule:pause") public R pause(@RequestBody Long[] jobIds){ scheduleJobService.pause(jobIds); return R.ok(); } /** * 恢复定时任务 */ @SysLog("恢复定时任务") @PostMapping("/resume") @RequiresPermissions("sys:schedule:resume") public R resume(@RequestBody Long[] jobIds){ scheduleJobService.resume(jobIds); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/ScheduleJobLogController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.model.ScheduleJobLog; import io.sdb.service.ScheduleJobLogService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Map; /** * 定时任务日志 * * @author Mark sunlightcs@gmail.com * @since 1.2.0 2016-11-28 */ @RestController @RequestMapping("/sys/scheduleLog") public class ScheduleJobLogController { @Autowired private ScheduleJobLogService scheduleJobLogService; /** * 定时任务日志列表 */ @GetMapping("/list") @RequiresPermissions("sys:schedule:log") public R list(@RequestParam Map params){ PageUtils page = scheduleJobLogService.queryPage(params); return R.ok().put("page", page); } /** * 定时任务日志信息 */ @GetMapping("/info/{logId}") public R info(@PathVariable("logId") Long logId){ ScheduleJobLog log = scheduleJobLogService.findById(logId); return R.ok().put("log", log); } } ================================================ FILE: src/main/java/io/sdb/controller/SpecificationController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.utils.R; import io.sdb.common.utils.TreeBuilder; import io.sdb.model.Specification; import io.sdb.service.SpecificationService; import io.sdb.vo.SpecificationVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; import java.util.stream.Collectors; @Controller @RequestMapping("/wechat/specification") public class SpecificationController { @Autowired private SpecificationService specificationService; /** * 列表 */ @ResponseBody @GetMapping("/list") public R list(){ List specificationList = specificationService.findAll(); List specificationVOList = specificationList.stream().map(item -> { SpecificationVO specificationVO = new SpecificationVO(item); return specificationVO; }).collect(Collectors.toList()); return R.ok().put("specificationList", specificationVOList); } } ================================================ FILE: src/main/java/io/sdb/controller/SysCampaignController.java ================================================ package io.sdb.controller; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.service.CampaignService; import io.sdb.model.Campaign; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.Map; @Controller @RequestMapping("/sys/campaign") public class SysCampaignController { @Autowired private CampaignService campaignService; /** * 列表 */ @ResponseBody @GetMapping("/list") public R list(@RequestParam Map params){ PageUtils page = campaignService.queryPage(params); return R.ok().put("page", page); } /** * 更新 */ @ResponseBody @PostMapping("/update") public R update(@RequestBody Campaign campaign) { campaign.update(); return R.ok(); } /** * 新增 */ @ResponseBody @PostMapping("/save") public R save(@RequestBody Campaign campaign) { campaign.save(); return R.ok(); } /** * 删除 */ @ResponseBody @PostMapping("/delete") public R delete(@RequestBody Campaign campaign) { campaign.delete(); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/SysConfigController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.annotation.SysLog; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.common.validator.ValidatorUtils; import io.sdb.model.SysConfig; import io.sdb.service.SysConfigService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Map; /** * 系统配置信息 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年12月4日 下午6:55:53 */ @RestController @RequestMapping("/sys/config") public class SysConfigController extends AbstractController { @Autowired private SysConfigService sysConfigService; /** * 所有配置列表 */ @GetMapping("/list") @RequiresPermissions("sys:config:list") public R list(@RequestParam Map params){ PageUtils page = sysConfigService.queryPage(params); return R.ok().put("page", page); } /** * 配置信息 */ @GetMapping("/info/{id}") @RequiresPermissions("sys:config:info") public R info(@PathVariable("id") Long id){ SysConfig config = sysConfigService.findById(id); return R.ok().put("config", config); } /** * 保存配置 */ @SysLog("保存配置") @PostMapping("/save") @RequiresPermissions("sys:config:save") public R save(@RequestBody SysConfig config){ ValidatorUtils.validateEntity(config); sysConfigService.save(config); return R.ok(); } /** * 修改配置 */ @SysLog("修改配置") @PostMapping("/update") @RequiresPermissions("sys:config:update") public R update(@RequestBody SysConfig config){ ValidatorUtils.validateEntity(config); sysConfigService.update(config); return R.ok(); } /** * 删除配置 */ @SysLog("删除配置") @PostMapping("/delete") @RequiresPermissions("sys:config:delete") public R delete(@RequestBody Long[] ids){ sysConfigService.deleteBatch(ids); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/SysDeliveryCorpController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.utils.R; import io.sdb.model.DeliveryCorp; import io.sdb.service.DeliveryCorpService; import io.sdb.vo.DeliveryCorpVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.stream.Collectors; @Controller @RequestMapping("/sys/deliveryCorp") public class SysDeliveryCorpController { @Autowired DeliveryCorpService deliveryCorpService; /** * 列表 */ @ResponseBody @GetMapping("/list") public R list(){ List deliveryCorpList = deliveryCorpService.findAll(); List deliveryCorpVOList = deliveryCorpList.stream().map(item -> { return convert(item); }).collect(Collectors.toList()); return R.ok().put("deliveryCorpVOList", deliveryCorpVOList); } private DeliveryCorpVO convert(DeliveryCorp deliveryCorp) { DeliveryCorpVO deliveryCorpVO = new DeliveryCorpVO(); deliveryCorpVO.setValue(deliveryCorp.getCode()); deliveryCorpVO.setLabel(deliveryCorp.getName()); return deliveryCorpVO; } } ================================================ FILE: src/main/java/io/sdb/controller/SysFavoriteGoodsController.java ================================================ package io.sdb.controller; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.service.FavoriteGoodsService; import io.sdb.model.FavoriteGoods; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.Map; @Controller @RequestMapping("/sys/favoriteGoods") public class SysFavoriteGoodsController { @Autowired private FavoriteGoodsService favoriteGoodsService; /** * 列表 */ @ResponseBody @GetMapping("/list") public R list(@RequestParam Map params){ PageUtils page = favoriteGoodsService.queryPage(params); return R.ok().put("page", page); } /** * 更新 */ @ResponseBody @PostMapping("/update") public R update(@RequestBody FavoriteGoods favoriteGoods) { favoriteGoods.update(); return R.ok(); } /** * 新增 */ @ResponseBody @PostMapping("/save") public R save(@RequestBody FavoriteGoods favoriteGoods) { favoriteGoods.save(); return R.ok(); } /** * 删除 */ @ResponseBody @PostMapping("/delete") public R delete(@RequestBody FavoriteGoods favoriteGoods) { favoriteGoods.delete(); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/SysGoodsController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.model.Goods; import io.sdb.model.Product; import io.sdb.model.ProductCategory; import io.sdb.form.GoodsForm; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.service.GoodsService; import io.sdb.service.ProductCategoryService; import io.sdb.service.ProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @Controller @RequestMapping("/sys/goods") public class SysGoodsController { @Autowired private GoodsService goodsService; @Autowired private ProductService productService; @Autowired private ProductCategoryService productCategoryService; /** * 列表 */ @ResponseBody @GetMapping("/list") public R list(@RequestParam Map params){ PageUtils page = goodsService.queryPage(params); return R.ok().put("page", page); } /** * 新增 */ @ResponseBody @PostMapping("/add") public R add(@RequestBody GoodsForm goodsForm){ goodsService.saveUpdateGoods(goodsForm.getGoods(), goodsForm.getParaList(), goodsForm.getSpecList()); return R.ok(); } /** * 信息 */ @ResponseBody @GetMapping("/info/{goodsId}") public R info(@PathVariable String goodsId){ Goods goods = goodsService.findById(goodsId); Product query = new Product(); query.setGoodsSn(goodsId); List productList = productService.findByModel(query); goods.setProductList(productList); ProductCategory productCategory = productCategoryService.findById(goods.getProductCategoryId()); return R.ok().put("goodsInfo", goods).put("treePath", productCategory.getTreePath()); } @ResponseBody @PostMapping("batchShelf") public R batchShelf(@RequestBody String[] ids){ return goodsService.batchShelf(ids); } @ResponseBody @PostMapping("batchObtained") public R batchObtained(@RequestBody String[] ids){ return goodsService.batchObtained(ids); } } ================================================ FILE: src/main/java/io/sdb/controller/SysGrouponController.java ================================================ package io.sdb.controller; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.service.GrouponService; import io.sdb.model.Groupon; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.Map; @Controller @RequestMapping("/sys/groupon") public class SysGrouponController { @Autowired private GrouponService grouponService; /** * 列表 */ @ResponseBody @GetMapping("/list") public R list(@RequestParam Map params){ PageUtils page = grouponService.queryPage(params); return R.ok().put("page", page); } /** * 详情 */ @ResponseBody @GetMapping("/info/{id}") public R info(@PathVariable Object id){ Groupon groupon = grouponService.findById(id); return R.ok().put("groupon", groupon); } /** * 更新 */ @ResponseBody @PostMapping("/update") public R update(@RequestBody Groupon groupon) { groupon.update(); return R.ok(); } /** * 新增 */ @ResponseBody @PostMapping("/save") public R save(@RequestBody Groupon groupon) { groupon.save(); return R.ok(); } /** * 删除 */ @ResponseBody @PostMapping("/delete") public R delete(@RequestBody Object[] ids) { grouponService.deleteBatch(ids); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/SysGrouponTeamController.java ================================================ package io.sdb.controller; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.service.GrouponTeamService; import io.sdb.model.GrouponTeam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.Map; @Controller @RequestMapping("/sys/grouponTeam") public class SysGrouponTeamController { @Autowired private GrouponTeamService grouponTeamService; /** * 列表 */ @ResponseBody @GetMapping("/list") public R list(@RequestParam Map params){ PageUtils page = grouponTeamService.queryPage(params); return R.ok().put("page", page); } /** * 详情 */ @ResponseBody @GetMapping("/info/{id}") public R info(@PathVariable Object id){ GrouponTeam grouponTeam = grouponTeamService.findById(id); return R.ok().put("grouponTeam", grouponTeam); } /** * 更新 */ @ResponseBody @PostMapping("/update") public R update(@RequestBody GrouponTeam grouponTeam) { grouponTeam.update(); return R.ok(); } /** * 新增 */ @ResponseBody @PostMapping("/save") public R save(@RequestBody GrouponTeam grouponTeam) { grouponTeam.save(); return R.ok(); } /** * 删除 */ @ResponseBody @PostMapping("/delete") public R delete(@RequestBody Object[] ids) { grouponTeamService.deleteBatch(ids); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/SysLogController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.service.SysLogService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.Map; /** * 系统日志 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-08 10:40:56 */ @Controller @RequestMapping("/sys/log") public class SysLogController { @Autowired private SysLogService sysLogService; /** * 列表 */ @ResponseBody @GetMapping("/list") @RequiresPermissions("sys:log:list") public R list(@RequestParam Map params){ PageUtils page = sysLogService.queryPage(params); return R.ok().put("page", page); } } ================================================ FILE: src/main/java/io/sdb/controller/SysLoginController.java ================================================ package io.sdb.controller; import io.sdb.common.utils.R; import io.sdb.enums.OrderStatusEnum; import io.sdb.model.OrderMaster; import io.sdb.model.SysUser; import io.sdb.service.*; import io.sdb.form.SysLoginForm; import org.apache.commons.io.IOUtils; import org.apache.shiro.crypto.hash.Sha256Hash; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.IOException; import java.math.BigDecimal; import java.util.List; import java.util.Map; /** * 登录相关 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年11月10日 下午1:15:31 */ @RestController public class SysLoginController extends AbstractController { @Autowired private SysUserService sysUserService; @Autowired private SysUserTokenService sysUserTokenService; @Autowired private SysCaptchaService sysCaptchaService; @Autowired private OrderMasterService orderService; @Autowired private UserService userService; /** * 验证码 */ @GetMapping("captcha.jpg") public void captcha(HttpServletResponse response, String uuid)throws ServletException, IOException { response.setHeader("Cache-Control", "no-store, no-cache"); response.setContentType("image/jpeg"); //获取图片验证码 BufferedImage image = sysCaptchaService.getCaptcha(uuid); ServletOutputStream out = response.getOutputStream(); ImageIO.write(image, "jpg", out); IOUtils.closeQuietly(out); } /** * 验证码 */ @GetMapping("/home/dash/info") public void dashInfo(){ BigDecimal totalSale = orderService.getTodayTotalSale(); Integer totalUsers = userService.getTotalUsers(); Integer newUsers = userService.getYestodayNewUsers(); List orderMasterList = orderService.getTodayOrders(); Integer totalOrder = orderMasterList.size(); Integer waitingOrder = 0; for (OrderMaster orderMaster:orderMasterList ) { if (orderMaster.getOrderStatus() == OrderStatusEnum.NEW.getCode()) { waitingOrder++; } } R.ok().put("totalSale", totalSale) .put("newUsers", newUsers) .put("totalUsers", totalUsers) .put("waitingOrder", waitingOrder) .put("totalOrder", totalOrder); } /** * 登录 */ @PostMapping("/sys/login") public Map login(@RequestBody SysLoginForm form)throws IOException { boolean captcha = sysCaptchaService.validate(form.getUuid(), form.getCaptcha()); if(!captcha){ return R.error("验证码不正确"); } //用户信息 SysUser user = sysUserService.queryByUserName(form.getUsername()); //账号不存在、密码错误 if(user == null || !user.getPassword().equals(new Sha256Hash(form.getPassword(), user.getSalt()).toHex())) { return R.error("账号或密码不正确"); } //账号锁定 if(user.getStatus() == 0){ return R.error("账号已被锁定,请联系管理员"); } //生成token,并保存到数据库 R r = sysUserTokenService.createToken(user.getUserId()); return r; } /** * 退出 */ @PostMapping("/sys/logout") public R logout() { sysUserTokenService.logout(getUserId()); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/SysLogisticsController.java ================================================ package io.sdb.controller; import com.alibaba.fastjson.JSON; import com.jfinal.kit.JsonKit; import com.jfinal.kit.LogKit; import io.sdb.common.entity.kuaidi100.NoticeRequest; import io.sdb.common.entity.kuaidi100.NoticeResponse; import io.sdb.common.entity.kuaidi100.Result; import io.sdb.model.Logistics; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.Date; @RestController @Slf4j @RequestMapping("/sys/logistics") public class SysLogisticsController { @RequestMapping("notify") public NoticeResponse kuaidi100Notify(@RequestParam String param){ NoticeResponse resp = new NoticeResponse(); resp.setResult(false); resp.setReturnCode("500"); resp.setMessage("保存失败"); try { NoticeRequest nReq = JSON.parseObject(param, NoticeRequest.class); Result result = nReq.getLastResult(); // 处理快递结果 Logistics logistics = Logistics.dao.findById(result.getNu()); resp.setResult(true); resp.setReturnCode("200"); resp.setMessage("提交成功"); if(logistics != null){ logistics.setUpdateDate(new Date()); logistics.setOrderState(Integer.parseInt(result.getState())); logistics.setData(JSON.toJSONString(result.getData())); logistics.update(); return resp; }else { logistics = new Logistics(); logistics.setUpdateDate(new Date()); logistics.setOrderState(Integer.parseInt(result.getState())); logistics.setData(JSON.toJSONString(result.getData())); logistics.setTrackingNo(result.getNu()); logistics.save(); return resp; } //response.getWriter().print(JsonKit.toJson(resp)); //这里必须返回,否则认为失败,过30分钟又会重复推送。 } catch (Exception e) { e.printStackTrace(); log.error("kuaidi100Notify 保存失败 error = ", e); resp.setMessage("保存失败"); return resp; //response.getWriter().print(JsonKit.toJson(resp));//保存失败,服务端等30分钟会重复推送。 } } } ================================================ FILE: src/main/java/io/sdb/controller/SysMenuController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.annotation.SysLog; import io.sdb.common.exception.RRException; import io.sdb.common.utils.Constant; import io.sdb.common.utils.R; import io.sdb.model.SysMenu; import io.sdb.service.ShiroService; import io.sdb.service.SysMenuService; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Set; /** * 系统菜单 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年10月27日 下午9:58:15 */ @RestController @RequestMapping("/sys/menu") public class SysMenuController extends AbstractController { @Autowired private SysMenuService sysMenuService; @Autowired private ShiroService shiroService; @RequestMapping(value="/media/", method=RequestMethod.GET) public void getDownload(Long id, HttpServletRequest request, HttpServletResponse response) { // Get your file stream from wherever. String fullPath = "E:/" + id +".rmvb"; ServletContext context = request.getServletContext(); // get MIME type of the file String mimeType = context.getMimeType(fullPath); if (mimeType == null) { // set to binary type if MIME mapping not found mimeType = "application/octet-stream"; System.out.println("context getMimeType is null"); } System.out.println("MIME type: " + mimeType); // set content attributes for the response response.setContentType(mimeType); // response.setContentLength((int) downloadFile.length()); // set headers for the response String headerKey = "Content-Disposition"; String headerValue = String.format("attachment; filename=\"%s\"", "test"); response.setHeader(headerKey, headerValue); // Copy the stream to the response's output stream. try { InputStream myStream = new FileInputStream(fullPath); IOUtils.copy(myStream, response.getOutputStream()); response.flushBuffer(); } catch (IOException e) { e.printStackTrace(); } } /** * 导航菜单 */ @GetMapping("/nav") public R nav(){ List menuList = sysMenuService.getUserMenuList(getUserId()); Set permissions = shiroService.getUserPermissions(getUserId()); return R.ok().put("menuList", menuList).put("permissions", permissions); } /** * 所有菜单列表 */ @GetMapping("/list") @RequiresPermissions("sys:menu:list") public List list(){ List menuList = sysMenuService.findAll(); for(SysMenu SysMenu : menuList){ SysMenu parentMenu = sysMenuService.findById(SysMenu.getParentId()); if(parentMenu != null){ SysMenu.setParentName(parentMenu.getName()); } } return menuList; } /** * 选择菜单(添加、修改菜单) */ @GetMapping("/select") @RequiresPermissions("sys:menu:select") public R select(){ //查询列表数据 List menuList = sysMenuService.queryNotButtonList(); //添加顶级菜单 SysMenu root = new SysMenu(); root.setMenuId(0L); root.setName("一级菜单"); root.setParentId(-1L); root.setOpen(true); menuList.add(root); return R.ok().put("menuList", menuList); } /** * 菜单信息 */ @GetMapping("/info/{menuId}") @RequiresPermissions("sys:menu:info") public R info(@PathVariable("menuId") Long menuId){ SysMenu menu = sysMenuService.findById(menuId); return R.ok().put("menu", menu); } /** * 保存 */ @SysLog("保存菜单") @PostMapping("/save") @RequiresPermissions("sys:menu:save") public R save(@RequestBody SysMenu menu){ //数据校验 verifyForm(menu); menu.save(); return R.ok(); } /** * 修改 */ @SysLog("修改菜单") @PostMapping("/update") @RequiresPermissions("sys:menu:update") public R update(@RequestBody SysMenu menu){ //数据校验 verifyForm(menu); menu.update(); return R.ok(); } /** * 删除 */ @SysLog("删除菜单") @PostMapping("/delete/{menuId}") @RequiresPermissions("sys:menu:delete") public R delete(@PathVariable("menuId") long menuId){ if(menuId <= 31){ return R.error("系统菜单,不能删除"); } //判断是否有子菜单或按钮 List menuList = sysMenuService.queryListParentId(menuId); if(menuList.size() > 0){ return R.error("请先删除子菜单或按钮"); } sysMenuService.delete(menuId); return R.ok(); } /** * 验证参数是否正确 */ private void verifyForm(SysMenu menu){ if(StringUtils.isBlank(menu.getName())){ throw new RRException("菜单名称不能为空"); } if(menu.getParentId() == null){ throw new RRException("上级菜单不能为空"); } //菜单 if(menu.getType() == Constant.MenuType.MENU.getValue()){ if(StringUtils.isBlank(menu.getUrl())){ throw new RRException("菜单URL不能为空"); } } //上级菜单类型 int parentType = Constant.MenuType.CATALOG.getValue(); if(menu.getParentId() != 0){ SysMenu parentMenu = sysMenuService.findById(menu.getParentId()); parentType = parentMenu.getType(); } //目录、菜单 if(menu.getType() == Constant.MenuType.CATALOG.getValue() || menu.getType() == Constant.MenuType.MENU.getValue()){ if(parentType != Constant.MenuType.CATALOG.getValue()){ throw new RRException("上级菜单只能为目录类型"); } return ; } //按钮 if(menu.getType() == Constant.MenuType.BUTTON.getValue()){ if(parentType != Constant.MenuType.MENU.getValue()){ throw new RRException("上级菜单只能为菜单类型"); } return ; } } } ================================================ FILE: src/main/java/io/sdb/controller/SysOrderController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import com.jfinal.validate.Validator; import io.sdb.common.exception.RRException; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.dto.OrderDTO; import io.sdb.enums.OrderStatusEnum; import io.sdb.enums.PayStatusEnum; import io.sdb.enums.ResultEnum; import io.sdb.model.OrderDetail; import io.sdb.model.OrderMaster; import io.sdb.form.SysOrderForm; import io.sdb.service.OrderDetailService; import io.sdb.service.OrderMasterService; import io.sdb.service.PayService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @Controller @RequestMapping("/sys/order") public class SysOrderController { @Autowired private OrderMasterService orderService; @Autowired private OrderDetailService orderDetailService; @Autowired private PayService payService; /** * 列表 */ @ResponseBody @GetMapping("/list") public R list(@RequestParam Map params){ PageUtils page = orderService.queryPage(params); return R.ok().put("page", page); } /** * 退款 */ @ResponseBody @PostMapping("/refund") public R list(@RequestBody SysOrderForm orderForm){ OrderMaster orderMaster = orderService.findById(orderForm.getOrderId()); if (orderMaster.getOrderStatus().equals(OrderStatusEnum.NEW.getCode()) && orderMaster.getPayStatus().equals(PayStatusEnum.SUCCESS.getCode())) { orderMaster = payService.refund(orderForm.getOrderId()); return R.ok().put("refundTradeNo", orderMaster.getRefundTradeNo()); }else { throw new RRException(ResultEnum.ORDER_STATUS_ERROR); } } /** * 信息 */ @ResponseBody @GetMapping("/info/{id}") public R list(@PathVariable String id){ OrderMaster orderMaster = orderService.findById(id); return R.ok().put("order", orderMaster); } /** * 详情 */ @ResponseBody @GetMapping("/detail/{id}") public R detail(@PathVariable String id){ List orderDetailList = orderDetailService.findByModel(new OrderDetail(){ {this.setOrderId(id);} }); return R.ok().put("orderDetailList", orderDetailList); } /** * 更新 */ @ResponseBody @PostMapping("/update") public R update(@RequestBody SysOrderForm orderForm) { OrderMaster orderMaster = new OrderMaster(); BeanUtils.copyProperties(orderForm, orderMaster); orderMaster.update(); return R.ok(); } /** * 发货 */ @ResponseBody @PostMapping("/shipping") public R shipping(@RequestBody SysOrderForm orderForm) { OrderDTO orderDTO = new OrderDTO(); orderDTO.setOrderId(orderForm.getOrderId()); orderDTO.setTrackingNumber(orderForm.getTrackingNumber()); orderDTO.setDeliveryCode(orderForm.getDeliveryCode()); orderService.shipping(orderDTO, orderForm.getDeliveryCode()); return R.ok(); } /** * 收款 */ @ResponseBody @PostMapping("/gathering") public R gathering(@RequestBody SysOrderForm orderForm) { OrderMaster orderMaster = new OrderMaster(); BeanUtils.copyProperties(orderForm, orderMaster); orderMaster.setOrderStatus(OrderStatusEnum.FINISHED.getCode()); orderMaster.setPayStatus(PayStatusEnum.SUCCESS.getCode()); orderMaster.update(); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/SysOssController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import com.google.gson.Gson; import io.sdb.common.exception.RRException; import io.sdb.common.utils.ConfigConstant; import io.sdb.common.utils.Constant; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.common.validator.ValidatorUtils; import io.sdb.common.validator.group.AliyunGroup; import io.sdb.common.validator.group.QcloudGroup; import io.sdb.common.validator.group.QiniuGroup; import io.sdb.model.SysOss; import io.sdb.oss.cloud.CloudStorageConfig; import io.sdb.oss.cloud.OSSFactory; import io.sdb.service.SysOssService; import io.sdb.service.SysConfigService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.Date; import java.util.Map; /** * 文件上传 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-25 12:13:26 */ @RestController @RequestMapping("sys/oss") public class SysOssController { @Autowired private SysOssService sysOssService; @Autowired private SysConfigService sysConfigService; private final static String KEY = ConfigConstant.CLOUD_STORAGE_CONFIG_KEY; /** * 列表 */ @GetMapping("/list") @RequiresPermissions("sys:oss:all") public R list(@RequestParam Map params){ PageUtils page = sysOssService.queryPage(params); return R.ok().put("page", page); } /** * 云存储配置信息 */ @GetMapping("/config") @RequiresPermissions("sys:oss:all") public R config(){ CloudStorageConfig config = sysConfigService.getConfigObject(KEY, CloudStorageConfig.class); return R.ok().put("config", config); } /** * 保存云存储配置信息 */ @PostMapping("/saveConfig") @RequiresPermissions("sys:oss:all") public R saveConfig(@RequestBody CloudStorageConfig config){ //校验类型 ValidatorUtils.validateEntity(config); if(config.getType() == Constant.CloudService.QINIU.getValue()){ //校验七牛数据 ValidatorUtils.validateEntity(config, QiniuGroup.class); }else if(config.getType() == Constant.CloudService.ALIYUN.getValue()){ //校验阿里云数据 ValidatorUtils.validateEntity(config, AliyunGroup.class); }else if(config.getType() == Constant.CloudService.QCLOUD.getValue()){ //校验腾讯云数据 ValidatorUtils.validateEntity(config, QcloudGroup.class); } sysConfigService.updateValueByKey(KEY, new Gson().toJson(config)); return R.ok(); } /** * 上传文件 */ @PostMapping("/upload") @RequiresPermissions("sys:oss:all") public R upload(@RequestParam("file") MultipartFile file) throws Exception { if (file.isEmpty()) { throw new RRException("上传文件不能为空"); } //上传文件 String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); String url = OSSFactory.build().uploadSuffix(file.getBytes(), suffix); //保存文件信息 SysOss sysOss = new SysOss(); sysOss.setUrl(url); sysOss.setCreateDate(new Date()); sysOss.save(); return R.ok().put("url", url); } /** * 删除 */ @PostMapping("/delete") @RequiresPermissions("sys:oss:all") public R delete(@RequestBody Long[] ids){ sysConfigService.deleteBatch(ids); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/SysProductCategoryController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.annotation.SysLog; import io.sdb.common.exception.RRException; import io.sdb.vo.ProductCategoryVO; import io.sdb.common.utils.R; import io.sdb.common.utils.TreeBuilder; import io.sdb.model.ProductCategory; import io.sdb.service.ProductCategoryService; import org.apache.commons.lang.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.stream.Collectors; @RestController @RequestMapping("/sys/productCategory") public class SysProductCategoryController extends AbstractController { @Autowired private ProductCategoryService productCategoryService; @ResponseBody @GetMapping("/tree") public R tree(){ List productCategoryList = productCategoryService.findAll(); List productCategoryVOList = productCategoryList.stream().map(item -> { ProductCategoryVO productCategoryVO = new ProductCategoryVO(item); return productCategoryVO; }).collect(Collectors.toList()); List productCategoryVOTree = new TreeBuilder().buildTree(productCategoryVOList); return R.ok().put("productCategroyTree", productCategoryVOTree); } /** * 列表 */ @ResponseBody @GetMapping("/list") public R list(){ List productCategoryList = productCategoryService.findAll(); for(ProductCategory p : productCategoryList){ ProductCategory productCategory = productCategoryService.findById(p.getParentId()); if(productCategory!=null){ p.setParentName(productCategory.getName()); } } return R.ok().put("productCategoryList", productCategoryList); } /** * 分类信息 */ @GetMapping("/info/{productCategoryId}") // @RequiresPermissions("sys:productCategory:info") public R info(@PathVariable("productCategoryId") Long productCategoryId){ ProductCategory productCategory = productCategoryService.findById(productCategoryId); return R.ok().put("productCategory", productCategory); } /** * 选择菜单(添加、修改菜单) */ @GetMapping("/select") // @RequiresPermissions("sys:productCategory:select") public R select(){ //查询列表数据 List productCategoryList = productCategoryService.queryListOrder(); //添加顶级菜单 /*ProductCategory root = new ProductCategory(); root.setId(null); root.setName("一级菜单"); root.setParentId(-1L); root.setOpen(true); root.setOrder(100); productCategoryList.add(0, root);*/ return R.ok().put("productCategoryList", productCategoryList); } /** * 保存 */ @SysLog("保存商品类目") @PostMapping("/save") // @RequiresPermissions("sys:productCategory:save") public R save(@RequestBody ProductCategory productCategory){ //数据校验 verifyForm(productCategory); productCategoryService.save(productCategory); return R.ok(); } /** * 修改 */ @SysLog("修改菜单") @PostMapping("/update") // @RequiresPermissions("sys:productCategory:update") public R update(@RequestBody ProductCategory productCategory){ //数据校验 verifyForm(productCategory); productCategoryService.update(productCategory); return R.ok(); } /** * 删除 */ @SysLog("删除菜单") @PostMapping("/delete/{productCategoryId}") // @RequiresPermissions("sys:productCategory:delete") public R delete(@PathVariable("productCategoryId") long productCategoryId){ return productCategoryService.delete(productCategoryId); } /** * 验证参数是否正确 */ private void verifyForm(ProductCategory productCategory){ if(StringUtils.isBlank(productCategory.getName())){ throw new RRException("类目名称不能为空"); } // if(productCategory.getParentId() == null){ // throw new RRException("上级类目不能为空"); // } } } ================================================ FILE: src/main/java/io/sdb/controller/SysRoleController.java ================================================ package io.sdb.controller; import io.sdb.common.annotation.SysLog; import io.sdb.common.utils.Constant; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.common.validator.ValidatorUtils; import io.sdb.model.SysRole; import io.sdb.service.SysRoleMenuService; import io.sdb.service.SysRoleService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; /** * 角色管理 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年11月8日 下午2:18:33 */ @RestController @RequestMapping("/sys/role") public class SysRoleController extends AbstractController { @Autowired private SysRoleService sysRoleService; @Autowired private SysRoleMenuService sysRoleMenuService; /** * 角色列表 */ @GetMapping("/list") @RequiresPermissions("sys:role:list") public R list(@RequestParam Map params){ //如果不是超级管理员,则只查询自己创建的角色列表 if(getUserId() != Constant.SUPER_ADMIN){ params.put("createUserId", getUserId()); } PageUtils page = sysRoleService.queryPage(params); return R.ok().put("page", page); } /** * 角色列表 */ @GetMapping("/select") @RequiresPermissions("sys:role:select") public R select(){ SysRole sysRole = new SysRole(); //如果不是超级管理员,则只查询自己所拥有的角色列表 if(getUserId() != Constant.SUPER_ADMIN){ sysRole.setCreateUserId(getUserId()); } List list = sysRoleService.findByModel(sysRole); return R.ok().put("list", list); } /** * 角色信息 */ @GetMapping("/info/{roleId}") @RequiresPermissions("sys:role:info") public R info(@PathVariable("roleId") Long roleId){ SysRole role = sysRoleService.findById(roleId); //查询角色对应的菜单 List menuIdList = sysRoleMenuService.queryMenuIdList(roleId); role.setMenuIdList(menuIdList); return R.ok().put("role", role); } /** * 保存角色 */ @SysLog("保存角色") @PostMapping("/save") @RequiresPermissions("sys:role:save") public R save(@RequestBody SysRole role){ ValidatorUtils.validateEntity(role); role.setCreateUserId(getUserId()); sysRoleService.save(role); return R.ok(); } /** * 修改角色 */ @SysLog("修改角色") @PostMapping("/update") @RequiresPermissions("sys:role:update") public R update(@RequestBody SysRole role){ ValidatorUtils.validateEntity(role); role.setCreateUserId(getUserId()); sysRoleService.update(role); return R.ok(); } /** * 删除角色 */ @SysLog("删除角色") @PostMapping("/delete") @RequiresPermissions("sys:role:delete") public R delete(@RequestBody Long[] roleIds){ sysRoleService.deleteBatch(roleIds); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/SysSpecificationController.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.controller; import io.sdb.common.annotation.SysLog; import io.sdb.common.entity.Filter; import io.sdb.common.exception.RRException; import io.sdb.common.utils.R; import io.sdb.common.utils.TreeBuilder; import io.sdb.model.Specification; import io.sdb.service.SpecificationService; import io.sdb.vo.SpecificationVO; import org.apache.commons.lang.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.stream.Collectors; @RestController @RequestMapping("/sys/specification") public class SysSpecificationController extends AbstractController{ @Autowired private SpecificationService specificationService; /** * 列表 */ @ResponseBody @GetMapping("/tree") public R tree(){ List specificationList = specificationService.findAll(); List specificationVOList = specificationList.stream().map(item -> { SpecificationVO specificationVO = new SpecificationVO(item); return specificationVO; }).collect(Collectors.toList()); List specificationTree = new TreeBuilder().buildTree(specificationVOList); return R.ok().put("specificationTree", specificationTree); } /** * 列表 */ @ResponseBody @GetMapping("/treeParent") public R treeParent(){ List specificationList = specificationService.findByFilter(Filter.isNull("parent")); List specificationVOList = specificationList.stream().map(item -> { SpecificationVO specificationVO = new SpecificationVO(item); return specificationVO; }).collect(Collectors.toList()); List specificationTree = new TreeBuilder().buildTree(specificationVOList); return R.ok().put("specificationTree", specificationTree); } /** * 列表 */ @ResponseBody @GetMapping("/list") public R list(){ List specificationList = specificationService.findAll(); /*List specificationVOList = specificationList.stream().map(item -> { SpecificationVO specificationVO = new SpecificationVO(item); return specificationVO; }).collect(Collectors.toList());*/ return R.ok().put("specificationList", specificationList); } /** * 规格信息 */ @GetMapping("/info/{id}") // @RequiresPermissions("sys:specification:info") public R info(@PathVariable("id") Long id){ Specification specification = specificationService.findById(id); return R.ok().put("specification", specification); } /** * 选择规格(添加、修改规格) */ @GetMapping("/select") // @RequiresPermissions("sys:specification:select") public R select(){ //查询列表数据 List specificationList = specificationService.queryListByOrder(); return R.ok().put("specificationList", specificationList); } /** * 保存 */ @SysLog("保存规格") @PostMapping("/save") // @RequiresPermissions("sys:specification:save") public R save(@RequestBody Specification specification){ //数据校验 verifyForm(specification); return specificationService.save(specification); } /** * 修改 */ @SysLog("修改规格") @PostMapping("/update") // @RequiresPermissions("sys:specification:update") public R update(@RequestBody Specification specification){ //数据校验 verifyForm(specification); specificationService.update(specification); return R.ok(); } /** * 删除 */ @SysLog("删除规格") @PostMapping("/delete/{id}") // @RequiresPermissions("sys:specification:delete") public R delete(@PathVariable("id") long id){ return specificationService.delete(id); } /** * 验证参数是否正确 */ private void verifyForm(Specification specification){ if(StringUtils.isBlank(specification.getName())){ throw new RRException("规格名称不能为空"); } /*if(specification.getParentId() == null){ throw new RRException("上级规格不能为空"); }*/ if(specification.getType() == null){ throw new RRException("规格类型不正确"); } } } ================================================ FILE: src/main/java/io/sdb/controller/SysUserController.java ================================================ package io.sdb.controller; import io.sdb.common.annotation.SysLog; import io.sdb.common.utils.Constant; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.R; import io.sdb.common.validator.Assert; import io.sdb.common.validator.ValidatorUtils; import io.sdb.common.validator.group.AddGroup; import io.sdb.common.validator.group.UpdateGroup; import io.sdb.model.SysUser; import io.sdb.form.PasswordForm; import io.sdb.service.SysUserRoleService; import io.sdb.service.SysUserService; import org.apache.commons.lang.ArrayUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.crypto.hash.Sha256Hash; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; /** * 系统用户 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年10月31日 上午10:40:10 */ @RestController @RequestMapping("/sys/user") public class SysUserController extends AbstractController { @Autowired private SysUserService sysUserService; @Autowired private SysUserRoleService sysUserRoleService; /** * 所有用户列表 */ @GetMapping("/list") @RequiresPermissions("sys:user:list") public R list(@RequestParam Map params){ //只有超级管理员,才能查看所有管理员列表 if(getUserId() != Constant.SUPER_ADMIN){ params.put("createUserId", getUserId()); } PageUtils page = sysUserService.queryPage(params); return R.ok().put("page", page); } /** * 获取登录的用户信息 */ @GetMapping("/info") public R info(){ return R.ok().put("user", getUser()); } /** * 修改登录用户密码 */ @SysLog("修改密码") @PostMapping("/password") public R password(@RequestBody PasswordForm form){ Assert.isBlank(form.getNewPassword(), "新密码不为能空"); //sha256加密 String password = new Sha256Hash(form.getPassword(), getUser().getSalt()).toHex(); //sha256加密 String newPassword = new Sha256Hash(form.getNewPassword(), getUser().getSalt()).toHex(); //更新密码 boolean flag = sysUserService.updatePassword(getUserId(), password, newPassword); if(!flag){ return R.error("原密码不正确"); } return R.ok(); } /** * 用户信息 */ @GetMapping("/info/{userId}") @RequiresPermissions("sys:user:info") public R info(@PathVariable("userId") Long userId){ SysUser user = sysUserService.findById(userId); //获取用户所属的角色列表 List roleIdList = sysUserRoleService.queryRoleIdList(userId); user.setRoleIdList(roleIdList); return R.ok().put("user", user); } /** * 保存用户 */ @SysLog("保存用户") @PostMapping("/save") @RequiresPermissions("sys:user:save") public R save(@RequestBody SysUser user){ ValidatorUtils.validateEntity(user, AddGroup.class); user.setCreateUserId(getUserId()); sysUserService.save(user); return R.ok(); } /** * 修改用户 */ @SysLog("修改用户") @PostMapping("/update") @RequiresPermissions("sys:user:update") public R update(@RequestBody SysUser user){ ValidatorUtils.validateEntity(user, UpdateGroup.class); user.setCreateUserId(getUserId()); sysUserService.update(user); return R.ok(); } /** * 删除用户 */ @SysLog("删除用户") @PostMapping("/delete") @RequiresPermissions("sys:user:delete") public R delete(@RequestBody Long[] userIds){ if(ArrayUtils.contains(userIds, 1L)){ return R.error("系统管理员不能删除"); } if(ArrayUtils.contains(userIds, getUserId())){ return R.error("当前用户不能删除"); } sysUserService.deleteBatch(userIds); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/controller/TestController.java ================================================ package io.sdb.controller; import com.jfinal.kit.PathKit; import com.lly835.bestpay.model.PayResponse; import io.sdb.common.utils.R; import io.sdb.service.PayService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletResponse; import java.net.InetAddress; import java.net.UnknownHostException; @Controller @RequestMapping("/test") @Slf4j public class TestController { @Autowired PayService payService; @GetMapping("/hello") public ModelAndView hello(ModelAndView modelAndView, HttpServletResponse response) { response.setCharacterEncoding("UTF-8"); response.setHeader("Content-disposition", "attachment; filename=test.doc"); response.setContentType("application/octet-stream;charset=UTF-8"); modelAndView.addObject("value", "test"); modelAndView.setViewName("hello"); return modelAndView; } @PostMapping("/pay") @ResponseBody public R pay() { PayResponse payResponse = payService.create(null); return R.ok().put("payResponse", payResponse); } @GetMapping("/ip") @ResponseBody public String ip() { String host = null; try { host = InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e) { log.error("get server host Exception e:", e); } return host; } /** * 微信异步通知 * @param notifyData */ @RequestMapping("/notify") public ModelAndView notify(@RequestBody String notifyData) { payService.notify(notifyData); //返回给微信处理结果 return new ModelAndView("success"); } public static void main(String[] args) { String baseTemplatePath = new StringBuilder(PathKit.getRootClassPath()) .append("/") // .append(PathKit.getPackagePath(this)) // .append("/tpl") .toString(); log.info(System.getProperty("user.dir")); } } ================================================ FILE: src/main/java/io/sdb/controller/UEditorController.java ================================================ package io.sdb.controller; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.baidu.ueditor.ActionEnter; @WebServlet(name = "UEditorServlet", urlPatterns = "/UEditor") public class UEditorController extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding( "utf-8" ); response.setHeader("Content-Type" , "text/html"); PrintWriter out = response.getWriter(); ServletContext application=this.getServletContext(); String rootPath = application.getRealPath( "/" ); String action = request.getParameter("action"); String result = new ActionEnter( request, rootPath ).exec(); if( action!=null && (action.equals("listfile") || action.equals("listimage") ) ){ rootPath = rootPath.replace("\\", "/"); result = result.replaceAll(rootPath, "/"); } out.write( result ); } } ================================================ FILE: src/main/java/io/sdb/controller/WxMaMediaController.java ================================================ package io.sdb.controller; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.constant.WxMaConstants; import com.google.common.collect.Lists; import com.google.common.io.Files; import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; import me.chanjar.weixin.common.exception.WxErrorException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; /** *

 *  小程序临时素材接口
 *  Created by BinaryWang on 2017/6/16.
 * 
* * @author Binary Wang */ @RestController @RequestMapping("/wechat/media") public class WxMaMediaController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private WxMaService service; /** * 上传临时素材 * * @return 素材的media_id列表,实际上如果有的话,只会有一个 */ @PostMapping("/upload") public List uploadMedia(HttpServletRequest request) throws WxErrorException { CommonsMultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext()); if (!resolver.isMultipart(request)) { return Lists.newArrayList(); } MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; Iterator it = multiRequest.getFileNames(); List result = Lists.newArrayList(); while (it.hasNext()) { try { MultipartFile file = multiRequest.getFile(it.next()); File newFile = new File(Files.createTempDir(), file.getOriginalFilename()); this.logger.info("filePath is :" + newFile.toString()); file.transferTo(newFile); WxMediaUploadResult uploadResult = this.service.getMediaService().uploadMedia(WxMaConstants.KefuMsgType.IMAGE, newFile); this.logger.info("media_id : " + uploadResult.getMediaId()); result.add(uploadResult.getMediaId()); } catch (IOException e) { this.logger.error(e.getMessage(), e); } } return result; } /** * 下载临时素材 */ @GetMapping("/download/{mediaId}") public File getMedia(@PathVariable String mediaId) throws WxErrorException { return this.service.getMediaService().getMedia(mediaId); } } ================================================ FILE: src/main/java/io/sdb/controller/WxMaUserController.java ================================================ package io.sdb.controller; import io.sdb.common.utils.JsonUtils; import io.sdb.common.utils.R; import io.sdb.enums.ResultEnum; import io.sdb.model.User; import io.sdb.common.annotation.Login; import io.sdb.common.annotation.LoginUser; import io.sdb.form.MaLoginForm; import io.sdb.service.UserService; import io.sdb.common.utils.JwtUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; import cn.binarywang.wx.miniapp.bean.WxMaUserInfo; import me.chanjar.weixin.common.exception.WxErrorException; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; /** * 微信小程序用户接口 * * @author Binary Wang */ @RestController @Slf4j @RequestMapping("/wechat/user") public class WxMaUserController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private WxMaService wxService; @Autowired private JwtUtils jwtUtils; @Autowired private UserService userService; /** * 登陆接口 */ @PostMapping("/login") public R login(HttpServletRequest request, @RequestBody MaLoginForm maLoginForm) { if (StringUtils.isBlank(maLoginForm.getCode())) { return R.error("empty jscode"); } try { WxMaJscode2SessionResult session = this.wxService.getUserService().getSessionInfo(maLoginForm.getCode()); String sessionKey = session.getSessionKey(); String openId = session.getOpenid(); // 用户信息校验 if (!this.wxService.getUserService().checkUserInfo(sessionKey, maLoginForm.getRawData(), maLoginForm.getSignature())) { return R.error("user check failed"); } User user = new User(); user.setMaOpenId(openId); User dbUser = userService.findFirstByModel(user); if (dbUser == null) { // 解密用户信息 WxMaUserInfo userInfo = this.wxService.getUserService().getUserInfo(sessionKey, maLoginForm.getEncryptedData(), maLoginForm.getIv()); dbUser = userService.addMaUser(userInfo); if (dbUser.getUserId() == null) { return R.error(ResultEnum.MA_LOGIN_ERROR); } } //生成token String token = jwtUtils.generateToken(dbUser.getUserId()); Map map = new HashMap<>(); map.put("token", token); map.put("expire", jwtUtils.getExpire()); return R.ok(map); } catch (WxErrorException e) { this.logger.error(e.getMessage(), e); return R.error(e.toString()); } } @Login @GetMapping("userInfo") public R userInfo(@LoginUser User user) { return R.ok().put("user", user); } /** *
     * 获取用户信息接口
     * 
*/ @GetMapping("/info") public String info(String sessionKey, String signature, String rawData, String encryptedData, String iv) { // 用户信息校验 if (!this.wxService.getUserService().checkUserInfo(sessionKey, rawData, signature)) { return "user check failed"; } // 解密用户信息 WxMaUserInfo userInfo = this.wxService.getUserService().getUserInfo(sessionKey, encryptedData, iv); return JsonUtils.toJson(userInfo); } /** *
     * 获取用户绑定手机号信息
     * 
*/ @GetMapping("/phone") public String phone(String sessionKey, String signature, String rawData, String encryptedData, String iv) { // 用户信息校验 if (!this.wxService.getUserService().checkUserInfo(sessionKey, rawData, signature)) { return "user check failed"; } // 解密 WxMaPhoneNumberInfo phoneNoInfo = this.wxService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv); return JsonUtils.toJson(phoneNoInfo); } } ================================================ FILE: src/main/java/io/sdb/controller/WxPayController.java ================================================ package io.sdb.controller; import com.lly835.bestpay.model.PayResponse; import io.sdb.common.utils.R; import io.sdb.dto.OrderDTO; import io.sdb.enums.PayStatusEnum; import io.sdb.model.OrderMaster; import io.sdb.model.User; import io.sdb.common.annotation.Login; import io.sdb.common.annotation.LoginUser; import io.sdb.service.OrderMasterService; import io.sdb.service.PayService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; /** * APP登录授权 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-23 15:31 */ @RestController @RequestMapping("/wechat/pay") public class WxPayController { @Autowired PayService payService; @Autowired OrderMasterService orderService; @Login @GetMapping("/create/{orderId}") public R create(@LoginUser User user, @PathVariable String orderId) { PayResponse payResponse = null; OrderMaster orderMaster = orderService.findById(orderId); if(orderMaster.getPayStatus().equals(PayStatusEnum.WAIT.getCode())) { OrderDTO orderDTO = new OrderDTO(); orderDTO.setBuyerOpenid(user.getMaOpenId()); BeanUtils.copyProperties(orderMaster, orderDTO); payResponse = payService.create(orderDTO); } //返回给微信处理结果 return R.ok().put("payResponse", payResponse); } } ================================================ FILE: src/main/java/io/sdb/controller/WxPortalController.java ================================================ package io.sdb.controller; import io.sdb.config.WxMpConfiguration; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; /** * @author Binary Wang(https://github.com/binarywang) */ @RestController @RequestMapping("/wx/portal/{appid}") @Slf4j public class WxPortalController { @GetMapping(produces = "text/plain;charset=utf-8") public String authGet(@PathVariable String appid, @RequestParam(name = "signature", required = false) String signature, @RequestParam(name = "timestamp", required = false) String timestamp, @RequestParam(name = "nonce", required = false) String nonce, @RequestParam(name = "echostr", required = false) String echostr) { final WxMpService wxService = WxMpConfiguration.getMpServices().get(appid); log.info("\n接收到来自微信服务器的认证消息:[{}, {}, {}, {}]", signature, timestamp, nonce, echostr); if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) { throw new IllegalArgumentException("请求参数非法,请核实!"); } if (wxService.checkSignature(timestamp, nonce, signature)) { return echostr; } return "非法请求"; } @PostMapping(produces = "application/xml; charset=UTF-8") public String post(@PathVariable String appid, @RequestBody String requestBody, @RequestParam("signature") String signature, @RequestParam("timestamp") String timestamp, @RequestParam("nonce") String nonce, @RequestParam(name = "encrypt_type", required = false) String encType, @RequestParam(name = "msg_signature", required = false) String msgSignature) { final WxMpService wxService = WxMpConfiguration.getMpServices().get(appid); log.info("\n接收微信请求:[signature=[{}], encType=[{}], msgSignature=[{}]," + " timestamp=[{}], nonce=[{}], requestBody=[\n{}\n] ", signature, encType, msgSignature, timestamp, nonce, requestBody); if (!wxService.checkSignature(timestamp, nonce, signature)) { throw new IllegalArgumentException("非法请求,可能属于伪造的请求!"); } String out = null; if (encType == null) { // 明文传输的消息 WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(requestBody); WxMpXmlOutMessage outMessage = this.route(inMessage, appid); if (outMessage == null) { return ""; } out = outMessage.toXml(); } else if ("aes".equalsIgnoreCase(encType)) { // aes加密的消息 WxMpXmlMessage inMessage = WxMpXmlMessage.fromEncryptedXml(requestBody, wxService.getWxMpConfigStorage(), timestamp, nonce, msgSignature); log.info("\n消息解密后内容为:\n{} ", inMessage.toString()); WxMpXmlOutMessage outMessage = this.route(inMessage, appid); if (outMessage == null) { return ""; } out = outMessage.toEncryptedXml(wxService.getWxMpConfigStorage()); } log.info("\n组装回复信息:{}", out); return out; } private WxMpXmlOutMessage route(WxMpXmlMessage message, String appid) { try { return WxMpConfiguration.getRouters().get(appid).route(message); } catch (Exception e) { log.error("路由消息时出现异常!", e); } return null; } } ================================================ FILE: src/main/java/io/sdb/dao/AreaDao.java ================================================ package io.sdb.dao; import io.sdb.model.Area; import org.springframework.stereotype.Component; @Component public class AreaDao extends BaseDao { public AreaDao() { super(Area.class); } } ================================================ FILE: src/main/java/io/sdb/dao/BaseDao.java ================================================ package io.sdb.dao; import com.jfinal.kit.Kv; import com.jfinal.kit.LogKit; import com.jfinal.plugin.activerecord.*; import com.zaxxer.hikari.util.FastList; import io.sdb.common.entity.Filter; import io.sdb.common.entity.Order; import io.sdb.common.utils.GenericsUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; /** * Dao - 基类 * * */ public class BaseDao> { /** "ID"属性名称 */ public static final String ID = "id"; /** "创建日期"属性名称 */ public static final String CREATE_DATE = "create_date"; /** 实体类类型 */ private Class modelClass; protected M modelManager; public Class getModelClass() { return modelClass; } public void setModelClass(Class modelClass) { this.modelClass = modelClass; } /** * 构造方法 */ @SuppressWarnings("unchecked") public BaseDao(Class entityClass) { this.setModelClass(GenericsUtils.getSuperClassGenricType(entityClass)); try { modelManager = modelClass.newInstance(); } catch (InstantiationException e) { LogKit.error("instance model fail!" + e); } catch (IllegalAccessException e) { LogKit.error("instance model fail!" + e); } } public String getTableName() { Table table = TableMapping.me().getTable(getModelClass()); return table.getName(); } public String[] getPrimaryKeys() { Table table = TableMapping.me().getTable(getModelClass()); table.getPrimaryKey(); return table.getPrimaryKey(); } /** * 查找实体对象 * * @param id * ID * @return 实体对象,若不存在则返回null */ public M findById(Object ...id) { if (id == null) { return null; } return modelManager.findById(id); } public M findFirstByModel(M model){ Record record = model.toRecord(); SqlPara sqlPara = Db.getSqlPara("common.findByModel", Kv.by("record", record.getColumns()).set("tableName", this.getTableName())); return this.modelManager.findFirst(sqlPara); } public List findByModel(M model){ Record record = model.toRecord(); SqlPara sqlPara = Db.getSqlPara("common.findByModel", Kv.by("record", record.getColumns()).set("tableName", this.getTableName())); return this.modelManager.find(sqlPara); } public List findByFilter(Filter filter){ List filters = new ArrayList<>(); filters.add(filter); return this.findByFilters(filters); } public List findByFilters(List filters){ SqlPara sqlPara = Db.getSqlPara("common.findList", Kv.by("filters", filters).set("tableName", this.getTableName())); List modelList = this.modelManager.find(sqlPara); return modelList; } public boolean deleteByModel(M model){ Record record = model.toRecord(); SqlPara sqlPara = Db.getSqlPara("common.deleteByModel", Kv.by("record", record.getColumns()).set("tableName", this.getTableName())); return Db.update(sqlPara) > 0; } public boolean deleteById(Object ...id){ return this.modelManager.deleteById(id); } public M getDao(){ return modelManager; } public List findAll() { return findList(null, null, null, null); } /** * 查找实体对象集合 * * @param first * 起始记录 * @param count * 数量 * @param filters * 筛选 * @param orders * 排序 * @return 实体对象集合 */ public List findList(Integer first, Integer count, List filters, List orders) { String sql = "SELECT * FROM `" + getTableName() + "` WHERE 1 = 1 "; return findList(sql, first, count, filters, orders); } /** * 查找实体对象集合 * * @param sql * 查询条件 * @param first * 起始记录 * @param count * 数量 * @param filters * 筛选 * @param orders * 排序 * @return 实体对象集合 */ protected List findList(String sql, Integer first, Integer count, List filters, List orders) { Assert.notNull(sql, "baseDao findList sql cannot null"); String sqlFilters = getFilters(filters); sql += sqlFilters; String sqlOrders = getOrders(orders); sql += sqlOrders; if (first != null && count != null) { sql += " LIMIT " + first + ", " + count; } return modelManager.find(sql); } /** * 转换为Predicate * * @param filters * 筛选 * @return Predicate */ private String getFilters(List filters) { String sql = ""; if (CollectionUtils.isEmpty(filters)) { return ""; } for (Filter filter : filters) { if (filter == null) { continue; } String property = filter.getProperty(); Filter.Operator operator = filter.getOperator(); Object value = filter.getValue(); Boolean ignoreCase = filter.getIgnoreCase(); switch (operator) { case eq: if (value != null) { if (BooleanUtils.isTrue(ignoreCase) && value instanceof String) { sql +=" AND "+ property + " = " + ((String) value).toLowerCase(); } else { sql +=" AND "+ property + " = " + value; } } else { sql +=" AND "+ property + " IS NULL "; } break; case ne: if (value != null) { if (BooleanUtils.isTrue(ignoreCase) && value instanceof String) { sql +=" AND "+ property + " != " + ((String) value).toLowerCase(); } else { sql +=" AND "+ property + " != " + value; } } else { sql +=" AND "+ property + " IS NOT NULL "; } break; case gt: if (value instanceof Number) { sql +=" AND "+ property + " > " + (Number) value; } break; case lt: if (value instanceof Number) { sql +=" AND "+ property + " < " + (Number) value; } break; case ge: if (value instanceof Number) { sql +=" AND "+ property + " >= " + (Number) value; } break; case le: if (value instanceof Number) { sql +=" AND "+ property + " <= " + (Number) value; } break; case like: if (value instanceof String) { if (BooleanUtils.isTrue(ignoreCase)) { sql += " AND " + property + " LIKE '%" + ((String) value).toLowerCase() + "'"; } else { sql += " AND " + property + " LIKE '%" + (String) value + "'"; } } break; case in: sql +=" AND "+ property + " IN(" + value + ")"; break; case isNull: sql +=" AND "+ property + " IS NULL"; break; case isNotNull: sql +=" AND "+ property + " IS NOT NULL"; break; } } return sql; } /** * 转换为Order * * @param orders * 排序 * @return Order */ private String getOrders(List orders) { String orderSql = ""; if (!CollectionUtils.isEmpty(orders)) { orderSql = " ORDER BY "; for (Order order : orders) { String property = order.getProperty(); Order.Direction direction = order.getDirection(); switch (direction) { case asc: orderSql += property + " ASC, "; break; case desc: orderSql += property + " DESC,"; break; } } orderSql = StringUtils.substring(orderSql, 0, orderSql.length() - 1); } return orderSql; } public Page paginate(Integer pageNum, Integer pageSize, Filter filter, Order order) { List filters = new ArrayList<>(); filters.add(filter); List orders = new ArrayList<>(); orders.add(order); Page pr = this.paginate(pageNum, pageSize, filters, orders); return pr; } public Page paginate(Integer pageNum, Integer pageSize) { List filters = new ArrayList<>(); List orders = new ArrayList<>(); Page pr = this.paginate(pageNum, pageSize, filters, orders); return pr; } public Page paginate(Integer pageNum, Integer pageSize, List filters, Order order) { List orders = new ArrayList<>(); if (order != null) { orders.add(order); } Page pr = this.paginate(pageNum, pageSize, filters, orders); return pr; } public Page paginate(Integer pageNum, Integer pageSize, List filters) { List orders = new ArrayList<>(); Page pr = this.paginate(pageNum, pageSize, filters, orders); return pr; } public Page paginate(Integer pageNum, Integer pageSize, List filters, List orders) { SqlPara sqlPara = Db.getSqlPara("common.findList", Kv.by("filters", filters).set("orders", orders).set("tableName", this.getTableName())); Page pr = this.modelManager.paginate(pageNum, pageSize, sqlPara); return pr; } public Page paginate(Integer pageNum, Integer pageSize, Filter filter, List orders) { List filters = new ArrayList<>(); filters.add(filter); Page pr = this.paginate(pageNum, pageSize, filters, orders); return pr; } public boolean deleteBatch(Object[]... ids) { return this.deleteBatch(null, ids); } public boolean deleteBatch(String[] columns, Object[]... ids) { String[] primaryKeys = columns; if (columns == null) { primaryKeys = this.getPrimaryKeys(); } SqlPara sqlPara = Db.getSqlPara("common.deleteBatch", Kv.by("ids", ids).set("primaryKeys", primaryKeys).set("tableName", this.getTableName())); return Db.update(sqlPara) > 0; } public M findFirst(SqlPara sqlPara) { return this.modelManager.findFirst(sqlPara); } public List find(SqlPara sqlPara) { return this.modelManager.find(sqlPara); } } ================================================ FILE: src/main/java/io/sdb/dao/CampaignDao.java ================================================ package io.sdb.dao; import io.sdb.dao.BaseDao; import io.sdb.model.Campaign; import org.springframework.stereotype.Component; @Component public class CampaignDao extends BaseDao { public CampaignDao() { super(Campaign.class); } } ================================================ FILE: src/main/java/io/sdb/dao/CartDao.java ================================================ package io.sdb.dao; import io.sdb.model.Cart; import io.sdb.model.Goods; import org.springframework.stereotype.Component; @Component public class CartDao extends BaseDao { public CartDao() { super(Cart.class); } } ================================================ FILE: src/main/java/io/sdb/dao/DeliveryCorpDao.java ================================================ package io.sdb.dao; import com.jfinal.plugin.activerecord.Db; import io.sdb.common.annotation.JFinalTx; import io.sdb.enums.SnEnum; import io.sdb.model.DeliveryCorp; import io.sdb.model.Sn; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.stereotype.Component; import java.util.Date; /** * Dao - 序列号 * * */ @Component public class DeliveryCorpDao extends BaseDao { /** * 构造方法 */ public DeliveryCorpDao() { super(DeliveryCorp.class); } } ================================================ FILE: src/main/java/io/sdb/dao/FavoriteGoodsDao.java ================================================ package io.sdb.dao; import io.sdb.dao.BaseDao; import io.sdb.model.FavoriteGoods; import org.springframework.stereotype.Component; @Component public class FavoriteGoodsDao extends BaseDao { public FavoriteGoodsDao() { super(FavoriteGoods.class); } } ================================================ FILE: src/main/java/io/sdb/dao/GoodsDao.java ================================================ package io.sdb.dao; import io.sdb.model.Goods; import org.springframework.stereotype.Component; @Component public class GoodsDao extends BaseDao { public GoodsDao() { super(Goods.class); } } ================================================ FILE: src/main/java/io/sdb/dao/GrouponDao.java ================================================ package io.sdb.dao; import io.sdb.dao.BaseDao; import io.sdb.model.Groupon; import org.springframework.stereotype.Component; @Component public class GrouponDao extends BaseDao { public GrouponDao() { super(Groupon.class); } } ================================================ FILE: src/main/java/io/sdb/dao/GrouponTeamDao.java ================================================ package io.sdb.dao; import io.sdb.dao.BaseDao; import io.sdb.model.GrouponTeam; import org.springframework.stereotype.Component; @Component public class GrouponTeamDao extends BaseDao { public GrouponTeamDao() { super(GrouponTeam.class); } } ================================================ FILE: src/main/java/io/sdb/dao/LogisticsDao.java ================================================ package io.sdb.dao; import io.sdb.dao.BaseDao; import io.sdb.model.Logistics; import org.springframework.stereotype.Component; @Component public class LogisticsDao extends BaseDao { public LogisticsDao() { super(Logistics.class); } } ================================================ FILE: src/main/java/io/sdb/dao/OrderDetailDao.java ================================================ package io.sdb.dao; import io.sdb.model.OrderDetail; import io.sdb.model.OrderMaster; import org.springframework.stereotype.Component; @Component public class OrderDetailDao extends BaseDao { public OrderDetailDao() { super(OrderDetail.class); } } ================================================ FILE: src/main/java/io/sdb/dao/OrderMasterDao.java ================================================ package io.sdb.dao; import io.sdb.model.Cart; import io.sdb.model.OrderMaster; import org.springframework.stereotype.Component; @Component public class OrderMasterDao extends BaseDao { public OrderMasterDao() { super(OrderMaster.class); } } ================================================ FILE: src/main/java/io/sdb/dao/ProductCategoryDao.java ================================================ package io.sdb.dao; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.SqlPara; import io.sdb.model.Goods; import io.sdb.model.ProductCategory; import org.springframework.stereotype.Component; import java.util.List; @Component public class ProductCategoryDao extends BaseDao { public ProductCategoryDao() { super(ProductCategory.class); } public List queryListOrder(){ SqlPara sqlPara = Db.getSqlPara("productCategory.queryListOrder"); return this.find(sqlPara); } } ================================================ FILE: src/main/java/io/sdb/dao/ProductDao.java ================================================ package io.sdb.dao; import io.sdb.model.Cart; import io.sdb.model.Product; import org.springframework.stereotype.Component; @Component public class ProductDao extends BaseDao { public ProductDao() { super(Product.class); } } ================================================ FILE: src/main/java/io/sdb/dao/ReceiverDao.java ================================================ package io.sdb.dao; import io.sdb.model.Receiver; import org.springframework.stereotype.Component; @Component public class ReceiverDao extends BaseDao { public ReceiverDao() { super(Receiver.class); } } ================================================ FILE: src/main/java/io/sdb/dao/ScheduleJobDao.java ================================================ package io.sdb.dao; import io.sdb.model.ScheduleJob; import org.springframework.stereotype.Component; @Component public class ScheduleJobDao extends BaseDao { public ScheduleJobDao() { super(ScheduleJob.class); } } ================================================ FILE: src/main/java/io/sdb/dao/ScheduleJobLogDao.java ================================================ package io.sdb.dao; import io.sdb.model.ScheduleJobLog; import org.springframework.stereotype.Component; @Component public class ScheduleJobLogDao extends BaseDao { public ScheduleJobLogDao() { super(ScheduleJobLog.class); } } ================================================ FILE: src/main/java/io/sdb/dao/SnDao.java ================================================ package io.sdb.dao; import com.jfinal.plugin.activerecord.Db; import io.sdb.common.annotation.JFinalTx; import io.sdb.enums.SnEnum; import io.sdb.model.Sn; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.stereotype.Component; import java.util.Date; /** * Dao - 序列号 * * */ @Component public class SnDao extends BaseDao { /** * 构造方法 */ public SnDao() { super(Sn.class); } private String goodsPrefix = "yyyyMMdd"; private int goodsMaxLo = 100; private String productPrefix = "yyyyMMdd"; private int productMaxLo = 100; private String orderMasterPrefix = "yyyyMMdd"; private int orderMasterMaxLo = 100; private String orderDetailPrefix = "yyyyMMdd"; private int orderDetailMaxLo = 100; private String userPrefix = "yyyyMMdd"; private int userMaxLo = 100; private String grouponPrefix = "yyyyMMdd"; private int grouponMaxLo = 100; /** 货品编号生成器 */ private HiloOptimizer goodsHiloOptimizer = new HiloOptimizer(SnEnum.GOODS, goodsPrefix, goodsMaxLo); private HiloOptimizer productHiloOptimizer = new HiloOptimizer(SnEnum.PRODUCT, productPrefix, productMaxLo); private HiloOptimizer orderMasterHiloOptimizer = new HiloOptimizer(SnEnum.ORDER_MASTER, orderMasterPrefix, orderMasterMaxLo); private HiloOptimizer orderDetailHiloOptimizer = new HiloOptimizer(SnEnum.ORDER_DETAIL, orderDetailPrefix, orderDetailMaxLo); private HiloOptimizer userHiloOptimizer = new HiloOptimizer(SnEnum.USER, userPrefix, userMaxLo); private HiloOptimizer grouponHiloOptimizer = new HiloOptimizer(SnEnum.GROUPON, grouponPrefix, grouponMaxLo); /** * 生成序列号 * * @param type * 类型 * @return 序列号 */ public String generate(SnEnum type) { switch (type) { case GOODS: return goodsHiloOptimizer.generate(); case PRODUCT: return productHiloOptimizer.generate(); case ORDER_MASTER: return orderMasterHiloOptimizer.generate(); case ORDER_DETAIL: return orderDetailHiloOptimizer.generate(); case USER: return userHiloOptimizer.generate(); case GROUPON: return grouponHiloOptimizer.generate(); } return null; } /** * 获取末值 * * @param type * 类型 * @return 末值 */ @JFinalTx private long getLastValue(SnEnum type) { String sql = "SELECT * FROM sn WHERE type = ?"; Sn sn = modelManager.findFirst(sql, type.getCode()); long lastValue = sn.getLastValue(); String updateSql = "UPDATE sn SET last_value = ? WHERE type = ? AND last_value = ?"; int result = Db.update(updateSql, lastValue + 1, type.getCode(), lastValue); return 0 < result ? lastValue : getLastValue(type); } /** * 高低位算法生成器 */ private class HiloOptimizer { /** 类型 */ private SnEnum type; /** 前缀 */ private String prefix; /** 最大低位值 */ private int maxLo; /** 低位值 */ private int lo; /** 高位值 */ private long hi; /** 末值 */ private long lastValue; /** * 构造方法 * * @param type * 类型 * @param prefix * 前缀 * @param maxLo * 最大低位值 */ public HiloOptimizer(SnEnum type, String prefix, int maxLo) { this.type = type; this.prefix = prefix != null ? prefix : ""; this.maxLo = maxLo; this.lo = maxLo + 1; } public String getDate(String pattern) { return DateFormatUtils.format(new Date(), pattern); } /** * 生成序列号 * * @return 序列号 */ public synchronized String generate() { if (lo > maxLo) { lastValue = getLastValue(type); lo = lastValue == 0 ? 1 : 0; hi = lastValue * (maxLo + 1); } return this.getDate(prefix) + type.getCode() + (hi + lo++); } } } ================================================ FILE: src/main/java/io/sdb/dao/SpecificationDao.java ================================================ package io.sdb.dao; import io.sdb.model.ProductCategory; import io.sdb.model.Specification; import org.springframework.stereotype.Component; @Component public class SpecificationDao extends BaseDao { public SpecificationDao() { super(Specification.class); } } ================================================ FILE: src/main/java/io/sdb/dao/SysCaptchaDao.java ================================================ package io.sdb.dao; import io.sdb.model.SysCaptcha; import org.springframework.stereotype.Component; @Component public class SysCaptchaDao extends BaseDao { public SysCaptchaDao() { super(SysCaptcha.class); } } ================================================ FILE: src/main/java/io/sdb/dao/SysConfigDao.java ================================================ package io.sdb.dao; import io.sdb.model.SysConfig; import org.springframework.stereotype.Component; @Component public class SysConfigDao extends BaseDao { public SysConfigDao() { super(SysConfig.class); } } ================================================ FILE: src/main/java/io/sdb/dao/SysLogDao.java ================================================ package io.sdb.dao; import io.sdb.model.SysLog; import org.springframework.stereotype.Component; @Component public class SysLogDao extends BaseDao { public SysLogDao() { super(SysLog.class); } } ================================================ FILE: src/main/java/io/sdb/dao/SysMenuDao.java ================================================ package io.sdb.dao; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.SqlPara; import io.sdb.model.SysMenu; import org.springframework.stereotype.Component; import java.util.List; @Component public class SysMenuDao extends BaseDao { public SysMenuDao() { super(SysMenu.class); } public List queryNotButtonList() { SqlPara sqlPara = Db.getSqlPara("sysMenu.queryNotButtonList"); return this.find(sqlPara); } } ================================================ FILE: src/main/java/io/sdb/dao/SysOssDao.java ================================================ package io.sdb.dao; import io.sdb.model.SysOss; import org.springframework.stereotype.Component; @Component public class SysOssDao extends BaseDao { public SysOssDao() { super(SysOss.class); } } ================================================ FILE: src/main/java/io/sdb/dao/SysRoleDao.java ================================================ package io.sdb.dao; import io.sdb.model.SysRole; import org.springframework.stereotype.Component; @Component public class SysRoleDao extends BaseDao { public SysRoleDao() { super(SysRole.class); } } ================================================ FILE: src/main/java/io/sdb/dao/SysRoleMenuDao.java ================================================ package io.sdb.dao; import io.sdb.model.SysRoleMenu; import org.springframework.stereotype.Component; @Component public class SysRoleMenuDao extends BaseDao { public SysRoleMenuDao() { super(SysRoleMenu.class); } } ================================================ FILE: src/main/java/io/sdb/dao/SysUserDao.java ================================================ package io.sdb.dao; import com.jfinal.kit.Kv; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.SqlPara; import io.sdb.model.SysUser; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @Component public class SysUserDao extends BaseDao { public SysUserDao() { super(SysUser.class); } public List queryAllPerms(Long userId) { SqlPara sqlPara = Db.getSqlPara("sysUser.queryAllPerms", Kv.by("userId", userId)); List sysUserList = Db.find(sqlPara); List perms = new ArrayList<>(); for (Record r:sysUserList ) { if(r == null || r.get("perms") == null) { continue; } perms.add(r.get("perms")); } return perms; } public List queryAllMenuId(Long userId) { SqlPara sqlPara = Db.getSqlPara("sysUser.queryAllMenuId", Kv.by("userId", userId)); List sysMenuList = Db.find(sqlPara); List menuIds = new ArrayList<>(); for (Record r:sysMenuList ) { if(r == null || r.get("menu_id") == null) { continue; } menuIds.add(r.get("menu_id")); } return menuIds; } public SysUser queryByUserName(String name) { SqlPara sqlPara = Db.getSqlPara("sysUser.queryByUserName", Kv.by("username", name)); SysUser sysUserList = this.findFirst(sqlPara); return sysUserList; } } ================================================ FILE: src/main/java/io/sdb/dao/SysUserRoleDao.java ================================================ package io.sdb.dao; import io.sdb.model.SysUserRole; import org.springframework.stereotype.Component; @Component public class SysUserRoleDao extends BaseDao { public SysUserRoleDao() { super(SysUserRole.class); } } ================================================ FILE: src/main/java/io/sdb/dao/SysUserTokenDao.java ================================================ package io.sdb.dao; import io.sdb.model.SysUserToken; import org.springframework.stereotype.Component; @Component public class SysUserTokenDao extends BaseDao { public SysUserTokenDao() { super(SysUserToken.class); } } ================================================ FILE: src/main/java/io/sdb/dao/UserDao.java ================================================ package io.sdb.dao; import io.sdb.model.User; import org.springframework.stereotype.Component; @Component public class UserDao extends BaseDao { public UserDao() { super(User.class); } } ================================================ FILE: src/main/java/io/sdb/datasources/DataSourceNames.java ================================================ package io.sdb.datasources; /** * 增加多数据源,在此配置 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017/8/18 23:46 */ public interface DataSourceNames { String FIRST = "first"; String SECOND = "second"; } ================================================ FILE: src/main/java/io/sdb/datasources/DynamicDataSource.java ================================================ package io.sdb.datasources; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; import javax.sql.DataSource; import java.util.Map; /** * 动态数据源 * @author chenshun * @email sunlightcs@gmail.com * @date 2017/8/19 1:03 */ public class DynamicDataSource extends AbstractRoutingDataSource { private static final ThreadLocal contextHolder = new ThreadLocal<>(); public DynamicDataSource(DataSource defaultTargetDataSource, Map targetDataSources) { super.setDefaultTargetDataSource(defaultTargetDataSource); super.setTargetDataSources(targetDataSources); super.afterPropertiesSet(); } @Override protected Object determineCurrentLookupKey() { return getDataSource(); } public static void setDataSource(String dataSource) { contextHolder.set(dataSource); } public static String getDataSource() { return contextHolder.get(); } public static void clearDataSource() { contextHolder.remove(); } } ================================================ FILE: src/main/java/io/sdb/datasources/DynamicDataSourceConfig.java ================================================ package io.sdb.datasources; import com.alibaba.druid.filter.Filter; import com.alibaba.druid.filter.stat.StatFilter; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import com.alibaba.druid.wall.WallConfig; import com.alibaba.druid.wall.WallFilter; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import javax.sql.DataSource; import java.util.HashMap; import java.util.Map; /** * 配置多数据源 * @author chenshun * @email sunlightcs@gmail.com * @date 2017/8/19 0:41 */ @Configuration @Slf4j public class DynamicDataSourceConfig { @Bean @ConfigurationProperties("spring.datasource.druid.first") public DruidDataSource firstDataSource(){ DruidDataSource druidDataSource = DruidDataSourceBuilder.create().build(); return druidDataSource; } public DruidDataSource profileDataSource(){ DruidDataSource druidDataSource = DruidDataSourceBuilder.create().build(); druidDataSource.setProxyFilters(Lists.newArrayList(statFilter())); return druidDataSource; } public Filter statFilter() { StatFilter filter = new StatFilter(); filter.setSlowSqlMillis(2000); filter.setLogSlowSql(true); filter.setMergeSql(true); WallFilter filter1 = new WallFilter(); WallConfig wallConfig = new WallConfig(); wallConfig.setMultiStatementAllow(true); filter1.setConfig(wallConfig); return filter; } @Bean @ConfigurationProperties("spring.datasource.druid.second") public DruidDataSource secondDataSource(){ return DruidDataSourceBuilder.create().build(); } @Bean @Primary public DynamicDataSource dataSource(DataSource firstDataSource, DataSource secondDataSource) { Map targetDataSources = new HashMap<>(); targetDataSources.put(DataSourceNames.FIRST, firstDataSource); targetDataSources.put(DataSourceNames.SECOND, secondDataSource); return new DynamicDataSource(firstDataSource, targetDataSources); } } ================================================ FILE: src/main/java/io/sdb/datasources/annotation/DataSource.java ================================================ package io.sdb.datasources.annotation; import java.lang.annotation.*; /** * 多数据源注解 * @author chenshun * @email sunlightcs@gmail.com * @date 2017/9/16 22:16 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface DataSource { String name() default ""; } ================================================ FILE: src/main/java/io/sdb/datasources/aspect/DataSourceAspect.java ================================================ package io.sdb.datasources.aspect; import io.sdb.datasources.DataSourceNames; import io.sdb.datasources.DynamicDataSource; import io.sdb.datasources.annotation.DataSource; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.Ordered; import org.springframework.stereotype.Component; import java.lang.reflect.Method; /** * 多数据源,切面处理类 * @author chenshun * @email sunlightcs@gmail.com * @date 2017/9/16 22:20 */ @Aspect @Component public class DataSourceAspect implements Ordered { protected Logger logger = LoggerFactory.getLogger(getClass()); @Pointcut("@annotation(io.sdb.datasources.annotation.DataSource)") public void dataSourcePointCut() { } @Around("dataSourcePointCut()") public Object around(ProceedingJoinPoint point) throws Throwable { MethodSignature signature = (MethodSignature) point.getSignature(); Method method = signature.getMethod(); DataSource ds = method.getAnnotation(DataSource.class); if(ds == null){ DynamicDataSource.setDataSource(DataSourceNames.FIRST); logger.debug("set datasource is " + DataSourceNames.FIRST); }else { DynamicDataSource.setDataSource(ds.name()); logger.debug("set datasource is " + ds.name()); } try { return point.proceed(); } finally { DynamicDataSource.clearDataSource(); logger.debug("clean datasource"); } } @Override public int getOrder() { return 1; } } ================================================ FILE: src/main/java/io/sdb/dto/CartDTO.java ================================================ package io.sdb.dto; import lombok.Data; import java.math.BigDecimal; /** * 购物车 * Created by yjjdick * 2017-06-11 19:37 */ @Data public class CartDTO { Integer id; /** 商品Id. */ String productId; /** 数量. */ Integer quantity; BigDecimal price; String name; String caption; String specificationValues; String image; String goodsId; public CartDTO() { } public CartDTO(String productId, Integer productQuantity) { this.productId = productId; this.quantity = productQuantity; } } ================================================ FILE: src/main/java/io/sdb/dto/FavoriteGoodsDTO.java ================================================ package io.sdb.dto; import lombok.Data; import java.math.BigDecimal; @Data public class FavoriteGoodsDTO { /** 商品Id. */ String goodsId; BigDecimal price; String name; String caption; String specificationValues; String image; } ================================================ FILE: src/main/java/io/sdb/dto/GoodsDTO.java ================================================ package io.sdb.dto; import io.sdb.model.Goods; public class GoodsDTO extends Goods { } ================================================ FILE: src/main/java/io/sdb/dto/OrderDTO.java ================================================ package io.sdb.dto; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.sdb.common.utils.EnumUtil; import io.sdb.enums.OrderStatusEnum; import io.sdb.enums.PayStatusEnum; import io.sdb.model.OrderDetail; import io.sdb.serializer.Date2LongSerializer; import lombok.Data; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * Created by yjjdick * 2017-06-11 18:30 */ @Data //@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) //@JsonInclude(JsonInclude.Include.NON_NULL) public class OrderDTO { /** 订单id. */ private String orderId; /** 买家名字. */ private String buyerName; /** 买家手机号. */ private String buyerPhone; /** 买家地址. */ private String buyerAddress; /** 买家微信Openid. */ private String buyerOpenid; /** 买家微信Openid. */ private String buyerId; /** 订单总金额. */ private BigDecimal orderAmount; /** 订单状态, 默认为0新下单. */ private Integer orderStatus; /** 支付状态, 默认为0未支付. */ private Integer payStatus; /** 买家备注 */ private String remark; /** 是否需要开发 */ private Integer needInvoice; private Integer invoiceType; private String title; private String taxNumber; private String companyAddress; private String telephone; private String bankName; private String bankAccount; private String payTradeNo; private String refundTradeNo; private String trackingNumber; private String deliveryCode; private Integer groupon; private String grouponId; private Integer grouponCount; /** 创建时间. */ @JsonSerialize(using = Date2LongSerializer.class) private Date createTime; /** 更新时间. */ @JsonSerialize(using = Date2LongSerializer.class) private Date updateTime; List orderDetailList; @JsonIgnore public OrderStatusEnum getOrderStatusEnum() { return EnumUtil.getByCode(orderStatus, OrderStatusEnum.class); } } ================================================ FILE: src/main/java/io/sdb/dto/ProductDTO.java ================================================ package io.sdb.dto; import com.jfinal.plugin.activerecord.Model; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * 购物车 * Created by yjjdick * 2017-06-11 19:37 */ @Data public class ProductDTO { String name; String model; String goodsSn; String caption; String image; String specificationValues; Integer stock; String sn; BigDecimal price; BigDecimal groupPrice; Integer enable; Integer quantity; Date createDate; } ================================================ FILE: src/main/java/io/sdb/enums/CampaignEnum.java ================================================ package io.sdb.enums; import lombok.Getter; /** * Created by yjjdick * 2017-06-11 17:12 */ @Getter public enum CampaignEnum implements IEnum { GROUPON(1, "团购"), ; private Integer code; private String message; CampaignEnum(Integer code, String message) { this.code = code; this.message = message; } } ================================================ FILE: src/main/java/io/sdb/enums/GeneralEnum.java ================================================ package io.sdb.enums; import lombok.Getter; @Getter public enum GeneralEnum { TRUE(1,"true"), FALSE(0,"false"), ; private Integer code; private String message; GeneralEnum(Integer code, String message){ this.code = code; this.message = message; } } ================================================ FILE: src/main/java/io/sdb/enums/GrouponStatusEnum.java ================================================ package io.sdb.enums; import lombok.Getter; /** * Created by yjjdick * 2017-06-11 17:12 */ @Getter public enum GrouponStatusEnum implements IEnum { PENDING(0, "等待开团"), OPEN(1, "已开团"), CANCEL(2, "取消"), ; private Integer code; private String message; GrouponStatusEnum(Integer code, String message) { this.code = code; this.message = message; } } ================================================ FILE: src/main/java/io/sdb/enums/IEnum.java ================================================ package io.sdb.enums; public interface IEnum { Integer getCode(); String getMessage(); } ================================================ FILE: src/main/java/io/sdb/enums/Language.java ================================================ package io.sdb.enums; import org.apache.commons.lang.StringUtils; public enum Language { zh_CN((byte) 1, "简体中文"), zh_TW((byte) 2, "繁体中文TW"), zh_HK((byte) 3, "繁体中文HK"), en((byte) 4, "英文"), id((byte) 5, "印尼"), ms((byte) 6, "马来"), es((byte) 7, "西班牙"), ko((byte) 8, "韩国"), it((byte) 9, "意大利"), ja((byte) 10, "日本"), pl((byte) 11, "波兰"), pt((byte) 12, "葡萄牙"), ru((byte) 13, "俄国"), th((byte) 14, "泰文"), vi((byte) 15, "越南"), ar((byte) 16, "阿拉伯语"), hi((byte) 17, "北印度"), he((byte) 18, "希伯来"), tr((byte) 19, "土耳其"), de((byte) 20, "德语"), FR((byte) 21, "法语"), ; private byte value; private String cnname; /** * @param value * @param cnname */ private Language(byte value, String cnname) { this.value = value; this.cnname = cnname; } public byte getValue() { return value; } public String getCnName() { return cnname; } public void setValue(byte value) { this.value = value; } public void setCnName(String cnname) { this.cnname = cnname; } public static Language getValueByCnName(String cnname) { if (StringUtils.isBlank(cnname)) { return null; } for (Language language : Language.values()) { if (language.getCnName().equalsIgnoreCase(cnname)) { return language; } } return null; } public static Language getByValue(Byte value) { if (value == null) { return null; } for (Language language : Language.values()) { if (language.getValue() == value) { return language; } } return null; } public static Language getByEnumName(String enumName) { if (enumName == null) { return null; } for (Language language : Language.values()) { if (language.name().equals(enumName)) { return language; } } return null; } } ================================================ FILE: src/main/java/io/sdb/enums/OrderStatusEnum.java ================================================ package io.sdb.enums; import lombok.Getter; /** * Created by yjjdick * 2017-06-11 17:12 */ @Getter public enum OrderStatusEnum implements IEnum { NEW(0, "待发货"), SHIPPING(1, "已发货"), FINISHED(2, "已完成"), CANCEL(3, "已取消"), GROUPON_PENDING(4, "等待拼团"), GROUPON_SUCC(5, "拼团成功"), ; private Integer code; private String message; OrderStatusEnum(Integer code, String message) { this.code = code; this.message = message; } } ================================================ FILE: src/main/java/io/sdb/enums/PayStatusEnum.java ================================================ package io.sdb.enums; import lombok.Getter; /** * Created by yjjdick * 2017-06-11 17:16 */ @Getter public enum PayStatusEnum implements IEnum { WAIT(0, "等待支付"), SUCCESS(1, "支付成功"), REFUND(2, "退款"), ; private Integer code; private String message; PayStatusEnum(Integer code, String message) { this.code = code; this.message = message; } } ================================================ FILE: src/main/java/io/sdb/enums/ProductStatusEnum.java ================================================ package io.sdb.enums; import lombok.Getter; /** * 商品状态 * Created by yjjdick * 2017-05-09 17:33 */ @Getter public enum ProductStatusEnum implements IEnum { UP(0, "在架"), DOWN(1, "下架") ; private Integer code; private String message; ProductStatusEnum(Integer code, String message) { this.code = code; this.message = message; } } ================================================ FILE: src/main/java/io/sdb/enums/ResultEnum.java ================================================ package io.sdb.enums; import lombok.Getter; @Getter public enum ResultEnum { SYSTEM_SUCCESS(0,"成功"),//成功 SYSTM_ERROR(500, "系统错误"),//系统错误 PARAM_ERROR(1, "参数不正确"),//参数不正确 APPID_NULL(2, "APPID缺失"),//APPID缺失 MA_LOGIN_ERROR(1001, "小程序登录失败"),//小程序登录失败 VOLUNTEER_NOT_FOUND(1002, "未找到志愿者"),//未找到志愿者 VOLUNTEER_UPLOAD_FILE_BIG(1003, "上传文件太大"),//上传文件太大 RECVER_CANNOT_NULL(1004, "收件人不能为空"),//收件人不能为空 CART_CANNOT_NULL(1005, "购物车不能为空"),//购物车不能为空 PRODUCT_NOT_EXIST(2010, "商品不存在"), PRODUCT_STOCK_ERROR(2011, "商品库存不正确"), ORDER_NOT_EXIST(2012, "订单不存在"), ORDERDETAIL_NOT_EXIST(2013, "订单详情不存在"), ORDER_STATUS_ERROR(2014, "订单状态不正确"), ORDER_UPDATE_FAIL(2015, "订单更新失败"), ORDER_DETAIL_EMPTY(2016, "订单详情为空"), ORDER_PAY_STATUS_ERROR(2017, "订单支付状态不正确"), CART_EMPTY(2018, "购物车为空"), ORDER_OWNER_ERROR(2019, "该订单不属于当前用户"), WECHAT_MP_ERROR(2020, "微信公众账号方面错误"), WXPAY_NOTIFY_MONEY_VERIFY_ERROR(2021, "微信支付异步通知金额校验不通过"), ORDER_CANCEL_SUCCESS(2022, "订单取消成功"), ORDER_FINISH_SUCCESS(2023, "订单完结成功"), PRODUCT_STATUS_ERROR(2024, "商品状态不正确"), GROUPON_USER_EXSITS(2025, "不能重复参团"), GROUPON_NOT_ENOUGH(2026, "拼团人数已满"), ; private Integer code; private String message; ResultEnum(Integer code, String message){ this.code = code; this.message = message; } } ================================================ FILE: src/main/java/io/sdb/enums/SnEnum.java ================================================ package io.sdb.enums; import lombok.Getter; @Getter public enum SnEnum { GOODS(1,"goods"),//货品sn PRODUCT(2,"product"),//商品sn ORDER_MASTER(3,"order_master"),//订单 ORDER_DETAIL(4,"order_detail"),//订单详情 USER(5,"user"),//微信用户 GROUPON(6,"groupon"),//拼团 ; private Integer code; private String message; SnEnum(Integer code, String message){ this.code = code; this.message = message; } } ================================================ FILE: src/main/java/io/sdb/enums/VolunteerStateEnum.java ================================================ package io.sdb.enums; import lombok.Getter; @Getter public enum VolunteerStateEnum implements IEnum { PENDING(0,"VOLUNTEER_STATE_PENDING"),//待审核 PASS(1,"VOLUNTEER_STATE_PASS"),//通过 REJUECT(2,"VOLUNTEER_STATE_REJUECT"),//拒绝 ; private Integer code; private String message; VolunteerStateEnum(Integer code, String message){ this.code = code; this.message = message; } } ================================================ FILE: src/main/java/io/sdb/form/CartForm.java ================================================ package io.sdb.form; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import java.util.List; /** * Created by IntelliJ IDEA. * User: quendi * Date: 2018/6/4 */ @Data public class CartForm { String productId; Integer quantity; List cartItemIds; } ================================================ FILE: src/main/java/io/sdb/form/CheckOutForm.java ================================================ package io.sdb.form; import lombok.Data; import java.util.List; /** * Created by IntelliJ IDEA. * User: quendi * Date: 2018/6/4 */ @Data public class CheckOutForm { private List cartItemIds; private List productInfos; private InvoiceInfo invoiceInfo; private ReceiveInfo receiveInfo; private boolean needInvoice; private boolean groupon; private String grouponId; private String remark; } ================================================ FILE: src/main/java/io/sdb/form/GoodsData.java ================================================ package io.sdb.form; import lombok.Data; import java.math.BigDecimal; import java.util.List; @Data public class GoodsData { private String sn; private String name; private String model; private String caption; private String unit; private boolean hasSpec; private boolean groupon; private Integer grouponCount; private boolean delivery; private boolean marketable; private Integer productDefault; private List categoryId; private float weight; private Integer stock; private BigDecimal price; private BigDecimal cost; private List introImageUrlArr; private List productImageUrlArr; private List specificationGroup; } ================================================ FILE: src/main/java/io/sdb/form/GoodsForm.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.form; import lombok.Data; import java.util.List; /** * 登录表单 * * @author Mark sunlightcs@gmail.com * @since 2.0.0 2018-01-25 */ @Data public class GoodsForm { private GoodsData goods; private List paraList; private List specList; } ================================================ FILE: src/main/java/io/sdb/form/GoodsListForm.java ================================================ package io.sdb.form; import io.swagger.models.auth.In; import lombok.Data; import java.util.List; /** * Created by IntelliJ IDEA. * User: quendi * Date: 2018/6/4 */ @Data public class GoodsListForm { Integer pageNum; Integer pageSize; Integer categoryId; } ================================================ FILE: src/main/java/io/sdb/form/GoodsParaData.java ================================================ package io.sdb.form; import lombok.Data; import java.util.List; @Data public class GoodsParaData { private String name; private List entries; } ================================================ FILE: src/main/java/io/sdb/form/GoodsParaEntryData.java ================================================ package io.sdb.form; import lombok.Data; @Data public class GoodsParaEntryData { private String name; private String value; } ================================================ FILE: src/main/java/io/sdb/form/GoodsSpecData.java ================================================ package io.sdb.form; import lombok.Data; import java.math.BigDecimal; import java.util.List; @Data public class GoodsSpecData { private String sn; private BigDecimal cost; private BigDecimal price; private BigDecimal groupPrice; private Integer stock; private Boolean enable; private String specIds; } ================================================ FILE: src/main/java/io/sdb/form/GoodsSpecGroupData.java ================================================ package io.sdb.form; import lombok.Data; import java.math.BigDecimal; import java.util.List; @Data public class GoodsSpecGroupData { private Long specificationName; private List specificationEntries; } ================================================ FILE: src/main/java/io/sdb/form/InvoiceInfo.java ================================================ package io.sdb.form; import lombok.Data; import java.util.List; /** * Created by IntelliJ IDEA. * User: quendi * Date: 2018/6/4 */ @Data public class InvoiceInfo { private Integer type; private String title; private String taxNumber; private String companyAddress; private String telephone; private String bankName; private String bankAccount; } ================================================ FILE: src/main/java/io/sdb/form/LoginForm.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.form; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import org.hibernate.validator.constraints.NotBlank; /** * 登录表单 * * @author Mark sunlightcs@gmail.com * @since 3.1.0 2018-01-25 */ @ApiModel(value = "登录表单") public class LoginForm { @ApiModelProperty(value = "手机号") @NotBlank(message="手机号不能为空") private String mobile; @ApiModelProperty(value = "密码") @NotBlank(message="密码不能为空") private String password; public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ================================================ FILE: src/main/java/io/sdb/form/MaLoginForm.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.form; import io.swagger.annotations.ApiModel; import lombok.Data; /** * 登录表单 * * @author Mark sunlightcs@gmail.com * @since 3.1.0 2018-01-25 */ @ApiModel(value = "小程序登录表单") @Data public class MaLoginForm { private String code; private String encryptedData; private String iv; private String signature; private String rawData; } ================================================ FILE: src/main/java/io/sdb/form/NewsAddForm.java ================================================ package io.sdb.form; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import javax.validation.constraints.NotBlank; /** * Created by IntelliJ IDEA. * User: quendi * Date: 2018/6/4 */ @ApiModel(value = "新闻表单") public class NewsAddForm { @ApiModelProperty(value = "标题") @NotBlank(message = "标题不能为空") private String title; @ApiModelProperty(value = "是否头条") @NotBlank(message = "是否头条") private Integer head; @ApiModelProperty(value = "新闻图片") private String img; @ApiModelProperty(value = "新闻内容") @NotBlank(message = "新闻内容不能为空") private String content; } ================================================ FILE: src/main/java/io/sdb/form/OrderDetailForm.java ================================================ package io.sdb.form; import lombok.Data; import java.util.List; /** * Created by IntelliJ IDEA. * User: quendi * Date: 2018/6/4 */ @Data public class OrderDetailForm { Integer pageNum; Integer pageSize; Integer payStatus; Integer orderStatus; } ================================================ FILE: src/main/java/io/sdb/form/OrderForm.java ================================================ package io.sdb.form; import lombok.Data; /** * Created by IntelliJ IDEA. * User: quendi * Date: 2018/6/4 */ @Data public class OrderForm { String orderId; } ================================================ FILE: src/main/java/io/sdb/form/PasswordForm.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.form; /** * 密码表单 * * @author Mark sunlightcs@gmail.com * @since 1.4.0 2018-01-25 */ public class PasswordForm { /** * 原密码 */ private String password; /** * 新密码 */ private String newPassword; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getNewPassword() { return newPassword; } public void setNewPassword(String newPassword) { this.newPassword = newPassword; } } ================================================ FILE: src/main/java/io/sdb/form/ProductInfo.java ================================================ package io.sdb.form; import lombok.Data; /** * Created by IntelliJ IDEA. * User: quendi * Date: 2018/6/4 */ @Data public class ProductInfo { private String id; private Integer quantity; } ================================================ FILE: src/main/java/io/sdb/form/ReceiveInfo.java ================================================ package io.sdb.form; import lombok.Data; import java.util.List; /** * Created by IntelliJ IDEA. * User: quendi * Date: 2018/6/4 */ @Data public class ReceiveInfo { private String fullAddr; private String name; private String phone; } ================================================ FILE: src/main/java/io/sdb/form/RefundForm.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.form; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.hibernate.validator.constraints.NotBlank; /** * 登录表单 * * @author Mark sunlightcs@gmail.com * @since 3.1.0 2018-01-25 */ @Data public class RefundForm { String orderId; } ================================================ FILE: src/main/java/io/sdb/form/RegisterForm.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.form; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import org.hibernate.validator.constraints.NotBlank; /** * 注册表单 * * @author Mark sunlightcs@gmail.com * @since 3.1.0 2018-01-25 */ @ApiModel(value = "注册表单") public class RegisterForm { @ApiModelProperty(value = "手机号") @NotBlank(message="手机号不能为空") private String mobile; @ApiModelProperty(value = "密码") @NotBlank(message="密码不能为空") private String password; public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ================================================ FILE: src/main/java/io/sdb/form/SysLoginForm.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.form; /** * 登录表单 * * @author Mark sunlightcs@gmail.com * @since 2.0.0 2018-01-25 */ public class SysLoginForm { private String username; private String password; private String captcha; private String uuid; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getCaptcha() { return captcha; } public void setCaptcha(String captcha) { this.captcha = captcha; } public String getUuid() { return uuid; } public void setUuid(String uuid) { this.uuid = uuid; } } ================================================ FILE: src/main/java/io/sdb/form/SysNewsForm.java ================================================ package io.sdb.form; import io.sdb.common.validator.group.AddGroup; import io.sdb.common.validator.group.UpdateGroup; import lombok.Data; import javax.validation.constraints.NotBlank; /** * Created by IntelliJ IDEA. * User: quendi * Date: 2018/6/10 */ @Data public class SysNewsForm { private Long id; @NotBlank(message = "新闻标题不能为空",groups = {AddGroup.class,UpdateGroup.class}) private String title; private String img; @NotBlank(message = "新闻内容不能为空",groups = {AddGroup.class,UpdateGroup.class}) private String content; private Integer head; } ================================================ FILE: src/main/java/io/sdb/form/SysOrderForm.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.form; import lombok.Data; import java.math.BigDecimal; /** * 登录表单 * * @author Mark sunlightcs@gmail.com * @since 2.0.0 2018-01-25 */ @Data public class SysOrderForm { String orderId; String buyerName; String buyerPhone; String buyerAddress; BigDecimal orderAmount; String trackingNumber; String deliveryCode; } ================================================ FILE: src/main/java/io/sdb/handler/AbstractHandler.java ================================================ package io.sdb.handler; import me.chanjar.weixin.mp.api.WxMpMessageHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author Binary Wang(https://github.com/binarywang) */ public abstract class AbstractHandler implements WxMpMessageHandler { protected Logger logger = LoggerFactory.getLogger(getClass()); } ================================================ FILE: src/main/java/io/sdb/handler/KfSessionHandler.java ================================================ package io.sdb.handler; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import org.springframework.stereotype.Component; import java.util.Map; /** * @author Binary Wang(https://github.com/binarywang) */ @Component public class KfSessionHandler extends AbstractHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) { //TODO 对会话做处理 return null; } } ================================================ FILE: src/main/java/io/sdb/handler/LocationHandler.java ================================================ package io.sdb.handler; import io.sdb.builder.TextBuilder; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import org.springframework.stereotype.Component; import java.util.Map; import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType; /** * @author Binary Wang(https://github.com/binarywang) */ @Component public class LocationHandler extends AbstractHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) { if (wxMessage.getMsgType().equals(XmlMsgType.LOCATION)) { //TODO 接收处理用户发送的地理位置消息 try { String content = "感谢反馈,您的的地理位置已收到!"; return new TextBuilder().build(content, wxMessage, null); } catch (Exception e) { this.logger.error("位置消息接收处理失败", e); return null; } } //上报地理位置事件 this.logger.info("上报地理位置,纬度 : {},经度 : {},精度 : {}", wxMessage.getLatitude(), wxMessage.getLongitude(), String.valueOf(wxMessage.getPrecision())); //TODO 可以将用户地理位置信息保存到本地数据库,以便以后使用 return null; } } ================================================ FILE: src/main/java/io/sdb/handler/LogHandler.java ================================================ package io.sdb.handler; import io.sdb.common.utils.JsonUtils; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import org.springframework.stereotype.Component; import java.util.Map; /** * @author Binary Wang(https://github.com/binarywang) */ @Component public class LogHandler extends AbstractHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) { this.logger.info("\n接收到请求消息,内容:{}", JsonUtils.toJson(wxMessage)); return null; } } ================================================ FILE: src/main/java/io/sdb/handler/MenuHandler.java ================================================ package io.sdb.handler; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import org.springframework.stereotype.Component; import java.util.Map; import static me.chanjar.weixin.common.api.WxConsts.MenuButtonType; /** * @author Binary Wang(https://github.com/binarywang) */ @Component public class MenuHandler extends AbstractHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService weixinService, WxSessionManager sessionManager) { String msg = String.format("type:%s, event:%s, key:%s", wxMessage.getMsgType(), wxMessage.getEvent(), wxMessage.getEventKey()); if (MenuButtonType.VIEW.equals(wxMessage.getEvent())) { return null; } return WxMpXmlOutMessage.TEXT().content(msg) .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser()) .build(); } } ================================================ FILE: src/main/java/io/sdb/handler/MsgHandler.java ================================================ package io.sdb.handler; import io.sdb.builder.TextBuilder; import io.sdb.common.utils.JsonUtils; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import java.util.Map; import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType; /** * @author Binary Wang(https://github.com/binarywang) */ @Component public class MsgHandler extends AbstractHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService weixinService, WxSessionManager sessionManager) { if (!wxMessage.getMsgType().equals(XmlMsgType.EVENT)) { //TODO 可以选择将消息保存到本地 } //当用户输入关键词如“你好”,“客服”等,并且有客服在线时,把消息转发给在线客服 try { if (StringUtils.startsWithAny(wxMessage.getContent(), "你好", "客服") && weixinService.getKefuService().kfOnlineList() .getKfOnlineList().size() > 0) { return WxMpXmlOutMessage.TRANSFER_CUSTOMER_SERVICE() .fromUser(wxMessage.getToUser()) .toUser(wxMessage.getFromUser()).build(); } } catch (WxErrorException e) { e.printStackTrace(); } //TODO 组装回复消息 String content = "收到信息内容:" + JsonUtils.toJson(wxMessage); return new TextBuilder().build(content, wxMessage, weixinService); } } ================================================ FILE: src/main/java/io/sdb/handler/NullHandler.java ================================================ package io.sdb.handler; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import org.springframework.stereotype.Component; import java.util.Map; /** * @author Binary Wang(https://github.com/binarywang) */ @Component public class NullHandler extends AbstractHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) { return null; } } ================================================ FILE: src/main/java/io/sdb/handler/ScanHandler.java ================================================ package io.sdb.handler; /** * @author Binary Wang(https://github.com/binarywang) */ public abstract class ScanHandler extends AbstractHandler { } ================================================ FILE: src/main/java/io/sdb/handler/StoreCheckNotifyHandler.java ================================================ package io.sdb.handler; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import org.springframework.stereotype.Component; import java.util.Map; /** * 门店审核事件处理 * * @author Binary Wang(https://github.com/binarywang) */ @Component public class StoreCheckNotifyHandler extends AbstractHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) { // TODO 处理门店审核事件 return null; } } ================================================ FILE: src/main/java/io/sdb/handler/SubscribeHandler.java ================================================ package io.sdb.handler; import io.sdb.builder.TextBuilder; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import me.chanjar.weixin.mp.bean.result.WxMpUser; import org.springframework.stereotype.Component; import java.util.Map; /** * @author Binary Wang(https://github.com/binarywang) */ @Component public class SubscribeHandler extends AbstractHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService weixinService, WxSessionManager sessionManager) throws WxErrorException { this.logger.info("新关注用户 OPENID: " + wxMessage.getFromUser()); // 获取微信用户基本信息 WxMpUser userWxInfo = weixinService.getUserService() .userInfo(wxMessage.getFromUser(), null); if (userWxInfo != null) { // TODO 可以添加关注用户到本地 } WxMpXmlOutMessage responseResult = null; try { responseResult = handleSpecial(wxMessage); } catch (Exception e) { this.logger.error(e.getMessage(), e); } if (responseResult != null) { return responseResult; } try { return new TextBuilder().build("感谢关注", wxMessage, weixinService); } catch (Exception e) { this.logger.error(e.getMessage(), e); } return null; } /** * 处理特殊请求,比如如果是扫码进来的,可以做相应处理 */ private WxMpXmlOutMessage handleSpecial(WxMpXmlMessage wxMessage) throws Exception { //TODO return null; } } ================================================ FILE: src/main/java/io/sdb/handler/UnsubscribeHandler.java ================================================ package io.sdb.handler; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import org.springframework.stereotype.Component; import java.util.Map; /** * @author Binary Wang(https://github.com/binarywang) */ @Component public class UnsubscribeHandler extends AbstractHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) { String openId = wxMessage.getFromUser(); this.logger.info("取消关注用户 OPENID: " + openId); // TODO 可以更新本地数据库为取消关注状态 return null; } } ================================================ FILE: src/main/java/io/sdb/interceptor/AuthorizationInterceptor.java ================================================ package io.sdb.interceptor; import io.jsonwebtoken.Claims; import io.sdb.common.exception.RRException; import io.sdb.common.utils.JwtUtils; import io.sdb.common.annotation.Login; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 权限(Token)验证 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-23 15:38 */ @Component public class AuthorizationInterceptor extends HandlerInterceptorAdapter { @Autowired private JwtUtils jwtUtils; public static final String USER_KEY = "userId"; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Login annotation; if(handler instanceof HandlerMethod) { annotation = ((HandlerMethod) handler).getMethodAnnotation(Login.class); }else{ return true; } if(annotation == null){ return true; } //获取用户凭证 String token = request.getHeader(jwtUtils.getHeader()); if(StringUtils.isBlank(token)){ token = request.getParameter(jwtUtils.getHeader()); } //凭证为空 if(StringUtils.isBlank(token)){ throw new RRException(jwtUtils.getHeader() + "不能为空", HttpStatus.UNAUTHORIZED.value()); } Claims claims = jwtUtils.getClaimByToken(token); if(claims == null || jwtUtils.isTokenExpired(claims.getExpiration())){ throw new RRException(jwtUtils.getHeader() + "失效,请重新登录", HttpStatus.UNAUTHORIZED.value()); } //设置userId到request里,后续根据userId,获取用户信息 request.setAttribute(USER_KEY, Long.parseLong(claims.getSubject())); return true; } } ================================================ FILE: src/main/java/io/sdb/job/config/ScheduleConfig.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.job.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.quartz.SchedulerFactoryBean; import javax.sql.DataSource; import java.util.Properties; /** * 定时任务配置 * * @author Mark sunlightcs@gmail.com * @since 2.0.0 2017-04-20 */ @Configuration public class ScheduleConfig { @Value("${schedule.open}") Boolean scheduleOpen; @Bean public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) { SchedulerFactoryBean factory = new SchedulerFactoryBean(); factory.setDataSource(dataSource); //quartz参数 Properties prop = new Properties(); prop.put("org.quartz.scheduler.instanceName", "SdbScheduler"); prop.put("org.quartz.scheduler.instanceId", "AUTO"); //线程池配置 prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool"); prop.put("org.quartz.threadPool.threadCount", "20"); prop.put("org.quartz.threadPool.threadPriority", "5"); //JobStore配置 prop.put("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX"); //集群配置 prop.put("org.quartz.jobStore.isClustered", "true"); prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000"); prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1"); prop.put("org.quartz.jobStore.misfireThreshold", "12000"); prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_"); prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?"); //PostgreSQL数据库,需要打开此注释 //prop.put("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate"); factory.setQuartzProperties(prop); factory.setSchedulerName("SdbScheduler"); //延时启动 factory.setStartupDelay(30); factory.setApplicationContextSchedulerContextKey("applicationContextKey"); //可选,QuartzScheduler 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了 factory.setOverwriteExistingJobs(true); //设置自动启动,默认为true factory.setAutoStartup(scheduleOpen); return factory; } } ================================================ FILE: src/main/java/io/sdb/job/task/TestTask.java ================================================ package io.sdb.job.task; /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ import io.sdb.model.SysUser; import io.sdb.service.SysUserService; import org.apache.commons.lang.builder.ToStringBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * 测试定时任务(演示Demo,可删除) * * testTask为spring bean的名称 * * @author Mark sunlightcs@gmail.com * @since 1.2.0 2016-11-28 */ @Component("testTask") public class TestTask { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private SysUserService sysUserService; public void test(String params){ logger.info("我是带参数的test方法,正在被执行,参数为:" + params); try { Thread.sleep(1000L); } catch (InterruptedException e) { e.printStackTrace(); } SysUser user = sysUserService.findById(1L); System.out.println(ToStringBuilder.reflectionToString(user)); } public void test2(){ logger.info("我是不带参数的test2方法,正在被执行"); } } ================================================ FILE: src/main/java/io/sdb/job/utils/ScheduleJob.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.job.utils; import io.sdb.common.utils.SpringContextUtils; import io.sdb.model.ScheduleJobLog; import io.sdb.service.ScheduleJobLogService; import org.apache.commons.lang.StringUtils; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.quartz.QuartzJobBean; import java.util.Date; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; /** * 定时任务 * * @author Mark sunlightcs@gmail.com * @since 1.2.0 2016-11-28 */ public class ScheduleJob extends QuartzJobBean { private Logger logger = LoggerFactory.getLogger(getClass()); private ExecutorService service = Executors.newSingleThreadExecutor(); @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { io.sdb.model.ScheduleJob scheduleJob = (io.sdb.model.ScheduleJob) context.getMergedJobDataMap() .get(io.sdb.model.ScheduleJob.JOB_PARAM_KEY); //获取spring bean ScheduleJobLogService scheduleJobLogService = (ScheduleJobLogService) SpringContextUtils.getBean("scheduleJobLogService"); //数据库保存执行记录 ScheduleJobLog log = new ScheduleJobLog(); log.setJobId(scheduleJob.getJobId()); log.setBeanName(scheduleJob.getBeanName()); log.setMethodName(scheduleJob.getMethodName()); log.setParams(scheduleJob.getParams()); log.setCreateTime(new Date()); //任务开始时间 long startTime = System.currentTimeMillis(); try { //执行任务 logger.info("任务准备执行,任务ID:" + scheduleJob.getJobId()); ScheduleRunnable task = new ScheduleRunnable(scheduleJob.getBeanName(), scheduleJob.getMethodName(), scheduleJob.getParams()); Future future = service.submit(task); future.get(); //任务执行总时长 long times = System.currentTimeMillis() - startTime; log.setTimes((int)times); //任务状态 0:成功 1:失败 log.setStatus(0); logger.info("任务执行完毕,任务ID:" + scheduleJob.getJobId() + " 总共耗时:" + times + "毫秒"); } catch (Exception e) { logger.error("任务执行失败,任务ID:" + scheduleJob.getJobId(), e); //任务执行总时长 long times = System.currentTimeMillis() - startTime; log.setTimes((int)times); //任务状态 0:成功 1:失败 log.setStatus(1); log.setError(StringUtils.substring(e.toString(), 0, 2000)); }finally { log.save(); } } } ================================================ FILE: src/main/java/io/sdb/job/utils/ScheduleRunnable.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.job.utils; import io.sdb.common.exception.RRException; import io.sdb.common.utils.SpringContextUtils; import org.apache.commons.lang.StringUtils; import org.springframework.util.ReflectionUtils; import java.lang.reflect.Method; /** * 执行定时任务 * * @author Mark sunlightcs@gmail.com * @since 1.2.0 2016-11-28 */ public class ScheduleRunnable implements Runnable { private Object target; private Method method; private String params; public ScheduleRunnable(String beanName, String methodName, String params) throws NoSuchMethodException, SecurityException { this.target = SpringContextUtils.getBean(beanName); this.params = params; if(StringUtils.isNotBlank(params)){ this.method = target.getClass().getDeclaredMethod(methodName, String.class); }else{ this.method = target.getClass().getDeclaredMethod(methodName); } } @Override public void run() { try { ReflectionUtils.makeAccessible(method); if(StringUtils.isNotBlank(params)){ method.invoke(target, params); }else{ method.invoke(target); } }catch (Exception e) { throw new RRException("执行定时任务失败", e); } } } ================================================ FILE: src/main/java/io/sdb/job/utils/ScheduleUtils.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.job.utils; import io.sdb.common.exception.RRException; import io.sdb.common.utils.Constant; import org.quartz.*; /** * 定时任务工具类 * * @author Mark sunlightcs@gmail.com * @since 1.2.0 2016-11-28 */ public class ScheduleUtils { private final static String JOB_NAME = "TASK_"; /** * 获取触发器key */ public static TriggerKey getTriggerKey(Long jobId) { return TriggerKey.triggerKey(JOB_NAME + jobId); } /** * 获取jobKey */ public static JobKey getJobKey(Long jobId) { return JobKey.jobKey(JOB_NAME + jobId); } /** * 获取表达式触发器 */ public static CronTrigger getCronTrigger(Scheduler scheduler, Long jobId) { try { return (CronTrigger) scheduler.getTrigger(getTriggerKey(jobId)); } catch (SchedulerException e) { throw new RRException("获取定时任务CronTrigger出现异常", e); } } /** * 创建定时任务 */ public static void createScheduleJob(Scheduler scheduler, io.sdb.model.ScheduleJob scheduleJob) { try { //构建job信息 JobDetail jobDetail = JobBuilder.newJob(ScheduleJob.class).withIdentity(getJobKey(scheduleJob.getJobId())).build(); //表达式调度构建器 CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression()) .withMisfireHandlingInstructionDoNothing(); //按新的cronExpression表达式构建一个新的trigger CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(scheduleJob.getJobId())).withSchedule(scheduleBuilder).build(); //放入参数,运行时的方法可以获取 jobDetail.getJobDataMap().put(io.sdb.model.ScheduleJob.JOB_PARAM_KEY, scheduleJob); scheduler.scheduleJob(jobDetail, trigger); //暂停任务 if(scheduleJob.getStatus() == Constant.ScheduleStatus.PAUSE.getValue()){ pauseJob(scheduler, scheduleJob.getJobId()); } } catch (SchedulerException e) { throw new RRException("创建定时任务失败", e); } } /** * 更新定时任务 */ public static void updateScheduleJob(Scheduler scheduler, io.sdb.model.ScheduleJob scheduleJob) { try { TriggerKey triggerKey = getTriggerKey(scheduleJob.getJobId()); //表达式调度构建器 CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression()) .withMisfireHandlingInstructionDoNothing(); CronTrigger trigger = getCronTrigger(scheduler, scheduleJob.getJobId()); //按新的cronExpression表达式重新构建trigger trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build(); //参数 trigger.getJobDataMap().put(io.sdb.model.ScheduleJob.JOB_PARAM_KEY, scheduleJob); scheduler.rescheduleJob(triggerKey, trigger); //暂停任务 if(scheduleJob.getStatus() == Constant.ScheduleStatus.PAUSE.getValue()){ pauseJob(scheduler, scheduleJob.getJobId()); } } catch (SchedulerException e) { throw new RRException("更新定时任务失败", e); } } /** * 立即执行任务 */ public static void run(Scheduler scheduler, io.sdb.model.ScheduleJob scheduleJob) { try { //参数 JobDataMap dataMap = new JobDataMap(); dataMap.put(io.sdb.model.ScheduleJob.JOB_PARAM_KEY, scheduleJob); scheduler.triggerJob(getJobKey(scheduleJob.getJobId()), dataMap); } catch (SchedulerException e) { throw new RRException("立即执行定时任务失败", e); } } /** * 暂停任务 */ public static void pauseJob(Scheduler scheduler, Long jobId) { try { scheduler.pauseJob(getJobKey(jobId)); } catch (SchedulerException e) { throw new RRException("暂停定时任务失败", e); } } /** * 恢复任务 */ public static void resumeJob(Scheduler scheduler, Long jobId) { try { scheduler.resumeJob(getJobKey(jobId)); } catch (SchedulerException e) { throw new RRException("暂停定时任务失败", e); } } /** * 删除定时任务 */ public static void deleteScheduleJob(Scheduler scheduler, Long jobId) { try { scheduler.deleteJob(getJobKey(jobId)); } catch (SchedulerException e) { throw new RRException("删除定时任务失败", e); } } } ================================================ FILE: src/main/java/io/sdb/model/Area.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseArea; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class Area extends BaseArea { public static final Area dao = new Area().dao(); } ================================================ FILE: src/main/java/io/sdb/model/Campaign.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseCampaign; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class Campaign extends BaseCampaign { public static final Campaign dao = new Campaign().dao(); } ================================================ FILE: src/main/java/io/sdb/model/Cart.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseCart; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class Cart extends BaseCart { public static final Cart dao = new Cart().dao(); } ================================================ FILE: src/main/java/io/sdb/model/DeliveryCorp.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseDeliveryCorp; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class DeliveryCorp extends BaseDeliveryCorp { public static final DeliveryCorp dao = new DeliveryCorp().dao(); } ================================================ FILE: src/main/java/io/sdb/model/FavoriteGoods.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseFavoriteGoods; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class FavoriteGoods extends BaseFavoriteGoods { public static final FavoriteGoods dao = new FavoriteGoods().dao(); } ================================================ FILE: src/main/java/io/sdb/model/Goods.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseArea; import io.sdb.model.base.BaseGoods; import lombok.Data; import java.util.List; /** * Generated by JFinal. */ @SuppressWarnings("serial") @Data public class Goods extends BaseGoods { public static final Goods dao = new Goods().dao(); private List productList; } ================================================ FILE: src/main/java/io/sdb/model/Groupon.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseGroupon; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class Groupon extends BaseGroupon { public static final Groupon dao = new Groupon().dao(); } ================================================ FILE: src/main/java/io/sdb/model/GrouponTeam.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseGrouponTeam; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class GrouponTeam extends BaseGrouponTeam { public static final GrouponTeam dao = new GrouponTeam().dao(); } ================================================ FILE: src/main/java/io/sdb/model/Logistics.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseLogistics; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class Logistics extends BaseLogistics { public static final Logistics dao = new Logistics().dao(); } ================================================ FILE: src/main/java/io/sdb/model/OrderDetail.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseOrderDetail; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class OrderDetail extends BaseOrderDetail { public static final OrderDetail dao = new OrderDetail().dao(); } ================================================ FILE: src/main/java/io/sdb/model/OrderMaster.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseOrderMaster; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class OrderMaster extends BaseOrderMaster { public static final OrderMaster dao = new OrderMaster().dao(); } ================================================ FILE: src/main/java/io/sdb/model/Product.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseProduct; import lombok.Data; /** * Generated by JFinal. */ @SuppressWarnings("serial") @Data public class Product extends BaseProduct { public static final Product dao = new Product().dao(); Integer quantity; } ================================================ FILE: src/main/java/io/sdb/model/ProductCategory.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseProductCategory; import lombok.Data; /** * Generated by JFinal. */ @SuppressWarnings("serial") @Data public class ProductCategory extends BaseProductCategory { public static final ProductCategory dao = new ProductCategory().dao(); String parentName; boolean open; } ================================================ FILE: src/main/java/io/sdb/model/Receiver.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseReceiver; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class Receiver extends BaseReceiver { public static final Receiver dao = new Receiver().dao(); } ================================================ FILE: src/main/java/io/sdb/model/ScheduleJob.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseScheduleJob; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class ScheduleJob extends BaseScheduleJob { public static final ScheduleJob dao = new ScheduleJob().dao(); /** * 任务调度参数key */ public static final String JOB_PARAM_KEY = "JOB_PARAM_KEY"; } ================================================ FILE: src/main/java/io/sdb/model/ScheduleJobLog.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseScheduleJobLog; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class ScheduleJobLog extends BaseScheduleJobLog { public static final ScheduleJobLog dao = new ScheduleJobLog().dao(); } ================================================ FILE: src/main/java/io/sdb/model/Sn.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSn; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class Sn extends BaseSn { public static final Sn dao = new Sn().dao(); } ================================================ FILE: src/main/java/io/sdb/model/Specification.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSpecification; import lombok.Data; /** * Generated by JFinal. */ @SuppressWarnings("serial") @Data public class Specification extends BaseSpecification { public static final Specification dao = new Specification().dao(); String parentName; boolean open; } ================================================ FILE: src/main/java/io/sdb/model/SysCaptcha.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSysCaptcha; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class SysCaptcha extends BaseSysCaptcha { public static final SysCaptcha dao = new SysCaptcha().dao(); } ================================================ FILE: src/main/java/io/sdb/model/SysConfig.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSysConfig; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class SysConfig extends BaseSysConfig { public static final SysConfig dao = new SysConfig().dao(); } ================================================ FILE: src/main/java/io/sdb/model/SysLog.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSysLog; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class SysLog extends BaseSysLog { public static final SysLog dao = new SysLog().dao(); } ================================================ FILE: src/main/java/io/sdb/model/SysMenu.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSysMenu; import lombok.Data; import java.util.List; /** * Generated by JFinal. */ @SuppressWarnings("serial") @Data public class SysMenu extends BaseSysMenu { public static final SysMenu dao = new SysMenu().dao(); String parentName; List list; boolean open; } ================================================ FILE: src/main/java/io/sdb/model/SysOss.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSysOss; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class SysOss extends BaseSysOss { public static final SysOss dao = new SysOss().dao(); } ================================================ FILE: src/main/java/io/sdb/model/SysRole.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSysRole; import lombok.Data; import java.util.List; /** * Generated by JFinal. */ @SuppressWarnings("serial") @Data public class SysRole extends BaseSysRole { public static final SysRole dao = new SysRole().dao(); private List menuIdList; } ================================================ FILE: src/main/java/io/sdb/model/SysRoleMenu.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSysRoleMenu; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class SysRoleMenu extends BaseSysRoleMenu { public static final SysRoleMenu dao = new SysRoleMenu().dao(); } ================================================ FILE: src/main/java/io/sdb/model/SysUser.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSysUser; import java.util.List; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class SysUser extends BaseSysUser { public static final SysUser dao = new SysUser().dao(); private List roleIdList; public List getRoleIdList() { return roleIdList; } public void setRoleIdList(List roleIdList) { this.roleIdList = roleIdList; } } ================================================ FILE: src/main/java/io/sdb/model/SysUserRole.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSysUserRole; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class SysUserRole extends BaseSysUserRole { public static final SysUserRole dao = new SysUserRole().dao(); } ================================================ FILE: src/main/java/io/sdb/model/SysUserToken.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseSysUserToken; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class SysUserToken extends BaseSysUserToken { public static final SysUserToken dao = new SysUserToken().dao(); } ================================================ FILE: src/main/java/io/sdb/model/TbUser.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseTbUser; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class TbUser extends BaseTbUser { public static final TbUser dao = new TbUser().dao(); } ================================================ FILE: src/main/java/io/sdb/model/User.java ================================================ package io.sdb.model; import io.sdb.model.base.BaseUser; /** * Generated by JFinal. */ @SuppressWarnings("serial") public class User extends BaseUser { public static final User dao = new User().dao(); } ================================================ FILE: src/main/java/io/sdb/model/_MappingKit.java ================================================ package io.sdb.model; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; /** * Generated by JFinal, do not modify this file. *

 * Example:
 * public void configPlugin(Plugins me) {
 *     ActiveRecordPlugin arp = new ActiveRecordPlugin(...);
 *     _MappingKit.mapping(arp);
 *     me.add(arp);
 * }
 * 
*/ public class _MappingKit { public static void mapping(ActiveRecordPlugin arp) { arp.addMapping("area", "id", Area.class); arp.addMapping("campaign", "id", Campaign.class); arp.addMapping("cart", "id", Cart.class); arp.addMapping("delivery_corp", "code", DeliveryCorp.class); // Composite Primary Key order: favorite_goods,favorite_user arp.addMapping("favorite_goods", "favorite_goods,favorite_user", FavoriteGoods.class); arp.addMapping("goods", "sn", Goods.class); arp.addMapping("groupon", "id", Groupon.class); // Composite Primary Key order: groupon_id,user_id arp.addMapping("groupon_team", "groupon_id,user_id", GrouponTeam.class); arp.addMapping("logistics", "tracking_no", Logistics.class); arp.addMapping("order_detail", "detail_id", OrderDetail.class); arp.addMapping("order_master", "order_id", OrderMaster.class); arp.addMapping("product", "sn", Product.class); arp.addMapping("product_category", "id", ProductCategory.class); arp.addMapping("receiver", "id", Receiver.class); arp.addMapping("schedule_job", "job_id", ScheduleJob.class); arp.addMapping("schedule_job_log", "log_id", ScheduleJobLog.class); arp.addMapping("sn", "type", Sn.class); arp.addMapping("specification", "id", Specification.class); arp.addMapping("sys_captcha", "uuid", SysCaptcha.class); arp.addMapping("sys_config", "id", SysConfig.class); arp.addMapping("sys_log", "id", SysLog.class); arp.addMapping("sys_menu", "menu_id", SysMenu.class); arp.addMapping("sys_oss", "id", SysOss.class); arp.addMapping("sys_role", "role_id", SysRole.class); arp.addMapping("sys_role_menu", "id", SysRoleMenu.class); arp.addMapping("sys_user", "user_id", SysUser.class); arp.addMapping("sys_user_role", "id", SysUserRole.class); arp.addMapping("sys_user_token", "user_id", SysUserToken.class); arp.addMapping("user", "user_id", User.class); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseArea.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseArea> extends Model implements IBean { public void setId(java.lang.Long id) { set("id", id); } public java.lang.Long getId() { return getLong("id"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setModifyDate(java.util.Date modifyDate) { set("modify_date", modifyDate); } public java.util.Date getModifyDate() { return get("modify_date"); } public void setVersion(java.lang.Long version) { set("version", version); } public java.lang.Long getVersion() { return getLong("version"); } public void setOrders(java.lang.Integer orders) { set("orders", orders); } public java.lang.Integer getOrders() { return getInt("orders"); } public void setFullName(java.lang.String fullName) { set("full_name", fullName); } public java.lang.String getFullName() { return getStr("full_name"); } public void setGrade(java.lang.Integer grade) { set("grade", grade); } public java.lang.Integer getGrade() { return getInt("grade"); } public void setName(java.lang.String name) { set("name", name); } public java.lang.String getName() { return getStr("name"); } public void setTreePath(java.lang.String treePath) { set("tree_path", treePath); } public java.lang.String getTreePath() { return getStr("tree_path"); } public void setParentId(java.lang.Long parentId) { set("parent_id", parentId); } public java.lang.Long getParentId() { return getLong("parent_id"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseCampaign.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseCampaign> extends Model implements IBean { public void setId(java.lang.Long id) { set("id", id); } public java.lang.Long getId() { return getLong("id"); } public void setType(java.lang.Integer type) { set("type", type); } public java.lang.Integer getType() { return getInt("type"); } public void setParamName1(java.lang.String paramName1) { set("param_name1", paramName1); } public java.lang.String getParamName1() { return getStr("param_name1"); } public void setParamValue1(java.lang.String paramValue1) { set("param_value1", paramValue1); } public java.lang.String getParamValue1() { return getStr("param_value1"); } public void setParamName2(java.lang.String paramName2) { set("param_name2", paramName2); } public java.lang.String getParamName2() { return getStr("param_name2"); } public void setParamValue2(java.lang.String paramValue2) { set("param_value2", paramValue2); } public java.lang.String getParamValue2() { return getStr("param_value2"); } public void setParamName3(java.lang.String paramName3) { set("param_name3", paramName3); } public java.lang.String getParamName3() { return getStr("param_name3"); } public void setParamValue3(java.lang.String paramValue3) { set("param_value3", paramValue3); } public java.lang.String getParamValue3() { return getStr("param_value3"); } public void setStartTime(java.util.Date startTime) { set("start_time", startTime); } public java.util.Date getStartTime() { return get("start_time"); } public void setEndTime(java.util.Date endTime) { set("end_time", endTime); } public java.util.Date getEndTime() { return get("end_time"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseCart.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseCart> extends Model implements IBean { public void setId(java.lang.Long id) { set("id", id); } public java.lang.Long getId() { return getLong("id"); } public void setUserId(java.lang.String userId) { set("user_id", userId); } public java.lang.String getUserId() { return getStr("user_id"); } public void setProductId(java.lang.String productId) { set("product_id", productId); } public java.lang.String getProductId() { return getStr("product_id"); } public void setQuantity(java.lang.Integer quantity) { set("quantity", quantity); } public java.lang.Integer getQuantity() { return getInt("quantity"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseDeliveryCorp.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseDeliveryCorp> extends Model implements IBean { public void setCode(java.lang.String code) { set("code", code); } public java.lang.String getCode() { return getStr("code"); } public void setName(java.lang.String name) { set("name", name); } public java.lang.String getName() { return getStr("name"); } public void setUrl(java.lang.String url) { set("url", url); } public java.lang.String getUrl() { return getStr("url"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseFavoriteGoods.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseFavoriteGoods> extends Model implements IBean { public void setFavoriteUser(java.lang.String favoriteUser) { set("favorite_user", favoriteUser); } public java.lang.String getFavoriteUser() { return getStr("favorite_user"); } public void setFavoriteGoods(java.lang.String favoriteGoods) { set("favorite_goods", favoriteGoods); } public java.lang.String getFavoriteGoods() { return getStr("favorite_goods"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseGoods.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseGoods> extends Model implements IBean { public void setSn(java.lang.String sn) { set("sn", sn); } public java.lang.String getSn() { return getStr("sn"); } public void setName(java.lang.String name) { set("name", name); } public java.lang.String getName() { return getStr("name"); } public void setModel(java.lang.String model) { set("model", model); } public java.lang.String getModel() { return getStr("model"); } public void setCaption(java.lang.String caption) { set("caption", caption); } public java.lang.String getCaption() { return getStr("caption"); } public void setImage(java.lang.String image) { set("image", image); } public java.lang.String getImage() { return getStr("image"); } public void setPrice(java.math.BigDecimal price) { set("price", price); } public java.math.BigDecimal getPrice() { return get("price"); } public void setIsDelivery(java.lang.Boolean isDelivery) { set("is_delivery", isDelivery); } public java.lang.Boolean getIsDelivery() { return get("is_delivery"); } public void setIsMarketable(java.lang.Boolean isMarketable) { set("is_marketable", isMarketable); } public java.lang.Boolean getIsMarketable() { return get("is_marketable"); } public void setParameterValues(java.lang.String parameterValues) { set("parameter_values", parameterValues); } public java.lang.String getParameterValues() { return getStr("parameter_values"); } public void setSpecificationItems(java.lang.String specificationItems) { set("specification_items", specificationItems); } public java.lang.String getSpecificationItems() { return getStr("specification_items"); } public void setIntroduction(java.lang.String introduction) { set("introduction", introduction); } public java.lang.String getIntroduction() { return getStr("introduction"); } public void setProductImages(java.lang.String productImages) { set("product_images", productImages); } public java.lang.String getProductImages() { return getStr("product_images"); } public void setCampaign(java.lang.Integer campaign) { set("campaign", campaign); } public java.lang.Integer getCampaign() { return getInt("campaign"); } public void setGrouponCount(java.lang.Integer grouponCount) { set("groupon_count", grouponCount); } public java.lang.Integer getGrouponCount() { return getInt("groupon_count"); } public void setWeight(java.lang.Float weight) { set("weight", weight); } public java.lang.Float getWeight() { return getFloat("weight"); } public void setUnit(java.lang.String unit) { set("unit", unit); } public java.lang.String getUnit() { return getStr("unit"); } public void setProductCategoryId(java.lang.Long productCategoryId) { set("product_category_id", productCategoryId); } public java.lang.Long getProductCategoryId() { return getLong("product_category_id"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseGroupon.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseGroupon> extends Model implements IBean { public void setId(java.lang.String id) { set("id", id); } public java.lang.String getId() { return getStr("id"); } public void setGoodsId(java.lang.String goodsId) { set("goods_id", goodsId); } public java.lang.String getGoodsId() { return getStr("goods_id"); } public void setCount(java.lang.Integer count) { set("count", count); } public java.lang.Integer getCount() { return getInt("count"); } public void setStatus(java.lang.Integer status) { set("status", status); } public java.lang.Integer getStatus() { return getInt("status"); } public void setExpireDate(java.util.Date expireDate) { set("expire_date", expireDate); } public java.util.Date getExpireDate() { return get("expire_date"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseGrouponTeam.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseGrouponTeam> extends Model implements IBean { public void setGrouponId(java.lang.String grouponId) { set("groupon_id", grouponId); } public java.lang.String getGrouponId() { return getStr("groupon_id"); } public void setUserId(java.lang.String userId) { set("user_id", userId); } public java.lang.String getUserId() { return getStr("user_id"); } public void setCaptain(java.lang.Integer captain) { set("captain", captain); } public java.lang.Integer getCaptain() { return getInt("captain"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseLogistics.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseLogistics> extends Model implements IBean { public void setTrackingNo(java.lang.String trackingNo) { set("tracking_no", trackingNo); } public java.lang.String getTrackingNo() { return getStr("tracking_no"); } public void setCheckState(java.lang.Integer checkState) { set("check_state", checkState); } public java.lang.Integer getCheckState() { return getInt("check_state"); } public void setOrderState(java.lang.Integer orderState) { set("order_state", orderState); } public java.lang.Integer getOrderState() { return getInt("order_state"); } public void setData(java.lang.String data) { set("data", data); } public java.lang.String getData() { return getStr("data"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseOrderDetail.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseOrderDetail> extends Model implements IBean { public void setDetailId(java.lang.String detailId) { set("detail_id", detailId); } public java.lang.String getDetailId() { return getStr("detail_id"); } public void setOrderId(java.lang.String orderId) { set("order_id", orderId); } public java.lang.String getOrderId() { return getStr("order_id"); } public void setProductId(java.lang.String productId) { set("product_id", productId); } public java.lang.String getProductId() { return getStr("product_id"); } public void setProductName(java.lang.String productName) { set("product_name", productName); } public java.lang.String getProductName() { return getStr("product_name"); } public void setProductModel(java.lang.String productModel) { set("product_model", productModel); } public java.lang.String getProductModel() { return getStr("product_model"); } public void setProductSpec(java.lang.String productSpec) { set("product_spec", productSpec); } public java.lang.String getProductSpec() { return getStr("product_spec"); } public void setGroupPrice(java.math.BigDecimal groupPrice) { set("group_price", groupPrice); } public java.math.BigDecimal getGroupPrice() { return get("group_price"); } public void setProductPrice(java.math.BigDecimal productPrice) { set("product_price", productPrice); } public java.math.BigDecimal getProductPrice() { return get("product_price"); } public void setProductQuantity(java.lang.Integer productQuantity) { set("product_quantity", productQuantity); } public java.lang.Integer getProductQuantity() { return getInt("product_quantity"); } public void setProductIcon(java.lang.String productIcon) { set("product_icon", productIcon); } public java.lang.String getProductIcon() { return getStr("product_icon"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseOrderMaster.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseOrderMaster> extends Model implements IBean { public void setOrderId(java.lang.String orderId) { set("order_id", orderId); } public java.lang.String getOrderId() { return getStr("order_id"); } public void setBuyerName(java.lang.String buyerName) { set("buyer_name", buyerName); } public java.lang.String getBuyerName() { return getStr("buyer_name"); } public void setBuyerPhone(java.lang.String buyerPhone) { set("buyer_phone", buyerPhone); } public java.lang.String getBuyerPhone() { return getStr("buyer_phone"); } public void setBuyerAddress(java.lang.String buyerAddress) { set("buyer_address", buyerAddress); } public java.lang.String getBuyerAddress() { return getStr("buyer_address"); } public void setBuyerId(java.lang.String buyerId) { set("buyer_id", buyerId); } public java.lang.String getBuyerId() { return getStr("buyer_id"); } public void setNeedInvoice(java.lang.Integer needInvoice) { set("need_invoice", needInvoice); } public java.lang.Integer getNeedInvoice() { return getInt("need_invoice"); } public void setInvoiceType(java.lang.Integer invoiceType) { set("invoice_type", invoiceType); } public java.lang.Integer getInvoiceType() { return getInt("invoice_type"); } public void setGroupon(java.lang.Integer groupon) { set("groupon", groupon); } public java.lang.Integer getGroupon() { return getInt("groupon"); } public void setGrouponId(java.lang.String grouponId) { set("groupon_id", grouponId); } public java.lang.String getGrouponId() { return getStr("groupon_id"); } public void setGrouponCount(java.lang.Integer grouponCount) { set("groupon_count", grouponCount); } public java.lang.Integer getGrouponCount() { return getInt("groupon_count"); } public void setTitle(java.lang.String title) { set("title", title); } public java.lang.String getTitle() { return getStr("title"); } public void setTaxNumber(java.lang.String taxNumber) { set("tax_number", taxNumber); } public java.lang.String getTaxNumber() { return getStr("tax_number"); } public void setCompanyAddress(java.lang.String companyAddress) { set("company_address", companyAddress); } public java.lang.String getCompanyAddress() { return getStr("company_address"); } public void setTelephone(java.lang.String telephone) { set("telephone", telephone); } public java.lang.String getTelephone() { return getStr("telephone"); } public void setBankName(java.lang.String bankName) { set("bank_name", bankName); } public java.lang.String getBankName() { return getStr("bank_name"); } public void setBankAccount(java.lang.String bankAccount) { set("bank_account", bankAccount); } public java.lang.String getBankAccount() { return getStr("bank_account"); } public void setOrderAmount(java.math.BigDecimal orderAmount) { set("order_amount", orderAmount); } public java.math.BigDecimal getOrderAmount() { return get("order_amount"); } public void setOrderStatus(java.lang.Integer orderStatus) { set("order_status", orderStatus); } public java.lang.Integer getOrderStatus() { return getInt("order_status"); } public void setTrackingNumber(java.lang.String trackingNumber) { set("tracking_number", trackingNumber); } public java.lang.String getTrackingNumber() { return getStr("tracking_number"); } public void setDeliveryCode(java.lang.String deliveryCode) { set("delivery_code", deliveryCode); } public java.lang.String getDeliveryCode() { return getStr("delivery_code"); } public void setRefundTradeNo(java.lang.String refundTradeNo) { set("refund_trade_no", refundTradeNo); } public java.lang.String getRefundTradeNo() { return getStr("refund_trade_no"); } public void setPayTradeNo(java.lang.String payTradeNo) { set("pay_trade_no", payTradeNo); } public java.lang.String getPayTradeNo() { return getStr("pay_trade_no"); } public void setPayStatus(java.lang.Integer payStatus) { set("pay_status", payStatus); } public java.lang.Integer getPayStatus() { return getInt("pay_status"); } public void setRemark(java.lang.String remark) { set("remark", remark); } public java.lang.String getRemark() { return getStr("remark"); } public void setContract(java.lang.String contract) { set("contract", contract); } public java.lang.String getContract() { return getStr("contract"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseProduct.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseProduct> extends Model implements IBean { public void setSn(java.lang.String sn) { set("sn", sn); } public java.lang.String getSn() { return getStr("sn"); } public void setPrice(java.math.BigDecimal price) { set("price", price); } public java.math.BigDecimal getPrice() { return get("price"); } public void setGroupPrice(java.math.BigDecimal groupPrice) { set("group_price", groupPrice); } public java.math.BigDecimal getGroupPrice() { return get("group_price"); } public void setCost(java.math.BigDecimal cost) { set("cost", cost); } public java.math.BigDecimal getCost() { return get("cost"); } public void setIsDefault(java.lang.Boolean isDefault) { set("is_default", isDefault); } public java.lang.Boolean getIsDefault() { return get("is_default"); } public void setSpecificationValues(java.lang.String specificationValues) { set("specification_values", specificationValues); } public java.lang.String getSpecificationValues() { return getStr("specification_values"); } public void setStock(java.lang.Integer stock) { set("stock", stock); } public java.lang.Integer getStock() { return getInt("stock"); } public void setGoodsSn(java.lang.String goodsSn) { set("goods_sn", goodsSn); } public java.lang.String getGoodsSn() { return getStr("goods_sn"); } public void setEnable(java.lang.Boolean enable) { set("enable", enable); } public java.lang.Boolean getEnable() { return get("enable"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseProductCategory.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseProductCategory> extends Model implements IBean { public void setId(java.lang.Long id) { set("id", id); } public java.lang.Long getId() { return getLong("id"); } public void setName(java.lang.String name) { set("name", name); } public java.lang.String getName() { return getStr("name"); } public void setParentId(java.lang.Long parentId) { set("parent_id", parentId); } public java.lang.Long getParentId() { return getLong("parent_id"); } public void setTreePath(java.lang.String treePath) { set("tree_path", treePath); } public java.lang.String getTreePath() { return getStr("tree_path"); } public void setOrder(java.lang.Integer order) { set("order", order); } public java.lang.Integer getOrder() { return getInt("order"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseReceiver.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseReceiver> extends Model implements IBean { public void setId(java.lang.Long id) { set("id", id); } public java.lang.Long getId() { return getLong("id"); } public void setAddress(java.lang.String address) { set("address", address); } public java.lang.String getAddress() { return getStr("address"); } public void setAreaName(java.lang.String areaName) { set("area_name", areaName); } public java.lang.String getAreaName() { return getStr("area_name"); } public void setConsignee(java.lang.String consignee) { set("consignee", consignee); } public java.lang.String getConsignee() { return getStr("consignee"); } public void setIsDefault(java.lang.Boolean isDefault) { set("is_default", isDefault); } public java.lang.Boolean getIsDefault() { return get("is_default"); } public void setPhone(java.lang.String phone) { set("phone", phone); } public java.lang.String getPhone() { return getStr("phone"); } public void setZipCode(java.lang.String zipCode) { set("zip_code", zipCode); } public java.lang.String getZipCode() { return getStr("zip_code"); } public void setAreaId(java.lang.Long areaId) { set("area_id", areaId); } public java.lang.Long getAreaId() { return getLong("area_id"); } public void setMemberId(java.lang.String memberId) { set("member_id", memberId); } public java.lang.String getMemberId() { return getStr("member_id"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseScheduleJob.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseScheduleJob> extends Model implements IBean { public void setJobId(java.lang.Long jobId) { set("job_id", jobId); } public java.lang.Long getJobId() { return getLong("job_id"); } public void setBeanName(java.lang.String beanName) { set("bean_name", beanName); } public java.lang.String getBeanName() { return getStr("bean_name"); } public void setMethodName(java.lang.String methodName) { set("method_name", methodName); } public java.lang.String getMethodName() { return getStr("method_name"); } public void setParams(java.lang.String params) { set("params", params); } public java.lang.String getParams() { return getStr("params"); } public void setCronExpression(java.lang.String cronExpression) { set("cron_expression", cronExpression); } public java.lang.String getCronExpression() { return getStr("cron_expression"); } public void setStatus(java.lang.Integer status) { set("status", status); } public java.lang.Integer getStatus() { return getInt("status"); } public void setRemark(java.lang.String remark) { set("remark", remark); } public java.lang.String getRemark() { return getStr("remark"); } public void setCreateTime(java.util.Date createTime) { set("create_time", createTime); } public java.util.Date getCreateTime() { return get("create_time"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseScheduleJobLog.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseScheduleJobLog> extends Model implements IBean { public void setLogId(java.lang.Long logId) { set("log_id", logId); } public java.lang.Long getLogId() { return getLong("log_id"); } public void setJobId(java.lang.Long jobId) { set("job_id", jobId); } public java.lang.Long getJobId() { return getLong("job_id"); } public void setBeanName(java.lang.String beanName) { set("bean_name", beanName); } public java.lang.String getBeanName() { return getStr("bean_name"); } public void setMethodName(java.lang.String methodName) { set("method_name", methodName); } public java.lang.String getMethodName() { return getStr("method_name"); } public void setParams(java.lang.String params) { set("params", params); } public java.lang.String getParams() { return getStr("params"); } public void setStatus(java.lang.Integer status) { set("status", status); } public java.lang.Integer getStatus() { return getInt("status"); } public void setError(java.lang.String error) { set("error", error); } public java.lang.String getError() { return getStr("error"); } public void setTimes(java.lang.Integer times) { set("times", times); } public java.lang.Integer getTimes() { return getInt("times"); } public void setCreateTime(java.util.Date createTime) { set("create_time", createTime); } public java.util.Date getCreateTime() { return get("create_time"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSn.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSn> extends Model implements IBean { public void setType(java.lang.Integer type) { set("type", type); } public java.lang.Integer getType() { return getInt("type"); } public void setLastValue(java.lang.Long lastValue) { set("last_value", lastValue); } public java.lang.Long getLastValue() { return getLong("last_value"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setModifyDate(java.util.Date modifyDate) { set("modify_date", modifyDate); } public java.util.Date getModifyDate() { return get("modify_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSpecification.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSpecification> extends Model implements IBean { public void setId(java.lang.Long id) { set("id", id); } public java.lang.Long getId() { return getLong("id"); } public void setParentId(java.lang.Long parentId) { set("parent_id", parentId); } public java.lang.Long getParentId() { return getLong("parent_id"); } public void setType(java.lang.Integer type) { set("type", type); } public java.lang.Integer getType() { return getInt("type"); } public void setOrder(java.lang.Integer order) { set("order", order); } public java.lang.Integer getOrder() { return getInt("order"); } public void setName(java.lang.String name) { set("name", name); } public java.lang.String getName() { return getStr("name"); } public void setCategoryId(java.lang.Long categoryId) { set("category_id", categoryId); } public java.lang.Long getCategoryId() { return getLong("category_id"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSysCaptcha.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSysCaptcha> extends Model implements IBean { public void setUuid(java.lang.String uuid) { set("uuid", uuid); } public java.lang.String getUuid() { return getStr("uuid"); } public void setCode(java.lang.String code) { set("code", code); } public java.lang.String getCode() { return getStr("code"); } public void setExpireTime(java.util.Date expireTime) { set("expire_time", expireTime); } public java.util.Date getExpireTime() { return get("expire_time"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSysConfig.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSysConfig> extends Model implements IBean { public void setId(java.lang.Long id) { set("id", id); } public java.lang.Long getId() { return getLong("id"); } public void setParamKey(java.lang.String paramKey) { set("param_key", paramKey); } public java.lang.String getParamKey() { return getStr("param_key"); } public void setParamValue(java.lang.String paramValue) { set("param_value", paramValue); } public java.lang.String getParamValue() { return getStr("param_value"); } public void setStatus(java.lang.Integer status) { set("status", status); } public java.lang.Integer getStatus() { return getInt("status"); } public void setRemark(java.lang.String remark) { set("remark", remark); } public java.lang.String getRemark() { return getStr("remark"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSysLog.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSysLog> extends Model implements IBean { public void setId(java.lang.Long id) { set("id", id); } public java.lang.Long getId() { return getLong("id"); } public void setUsername(java.lang.String username) { set("username", username); } public java.lang.String getUsername() { return getStr("username"); } public void setOperation(java.lang.String operation) { set("operation", operation); } public java.lang.String getOperation() { return getStr("operation"); } public void setMethod(java.lang.String method) { set("method", method); } public java.lang.String getMethod() { return getStr("method"); } public void setParams(java.lang.String params) { set("params", params); } public java.lang.String getParams() { return getStr("params"); } public void setTime(java.lang.Long time) { set("time", time); } public java.lang.Long getTime() { return getLong("time"); } public void setIp(java.lang.String ip) { set("ip", ip); } public java.lang.String getIp() { return getStr("ip"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSysMenu.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSysMenu> extends Model implements IBean { public void setMenuId(java.lang.Long menuId) { set("menu_id", menuId); } public java.lang.Long getMenuId() { return getLong("menu_id"); } public void setParentId(java.lang.Long parentId) { set("parent_id", parentId); } public java.lang.Long getParentId() { return getLong("parent_id"); } public void setName(java.lang.String name) { set("name", name); } public java.lang.String getName() { return getStr("name"); } public void setUrl(java.lang.String url) { set("url", url); } public java.lang.String getUrl() { return getStr("url"); } public void setPerms(java.lang.String perms) { set("perms", perms); } public java.lang.String getPerms() { return getStr("perms"); } public void setType(java.lang.Integer type) { set("type", type); } public java.lang.Integer getType() { return getInt("type"); } public void setIcon(java.lang.String icon) { set("icon", icon); } public java.lang.String getIcon() { return getStr("icon"); } public void setOrderNum(java.lang.Integer orderNum) { set("order_num", orderNum); } public java.lang.Integer getOrderNum() { return getInt("order_num"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSysOss.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSysOss> extends Model implements IBean { public void setId(java.lang.Long id) { set("id", id); } public java.lang.Long getId() { return getLong("id"); } public void setUrl(java.lang.String url) { set("url", url); } public java.lang.String getUrl() { return getStr("url"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSysRole.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSysRole> extends Model implements IBean { public void setRoleId(java.lang.Long roleId) { set("role_id", roleId); } public java.lang.Long getRoleId() { return getLong("role_id"); } public void setRoleName(java.lang.String roleName) { set("role_name", roleName); } public java.lang.String getRoleName() { return getStr("role_name"); } public void setRemark(java.lang.String remark) { set("remark", remark); } public java.lang.String getRemark() { return getStr("remark"); } public void setCreateUserId(java.lang.Long createUserId) { set("create_user_id", createUserId); } public java.lang.Long getCreateUserId() { return getLong("create_user_id"); } public void setCreateTime(java.util.Date createTime) { set("create_time", createTime); } public java.util.Date getCreateTime() { return get("create_time"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSysRoleMenu.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSysRoleMenu> extends Model implements IBean { public void setId(java.lang.Long id) { set("id", id); } public java.lang.Long getId() { return getLong("id"); } public void setRoleId(java.lang.Long roleId) { set("role_id", roleId); } public java.lang.Long getRoleId() { return getLong("role_id"); } public void setMenuId(java.lang.Long menuId) { set("menu_id", menuId); } public java.lang.Long getMenuId() { return getLong("menu_id"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSysUser.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSysUser> extends Model implements IBean { public void setUserId(java.lang.Long userId) { set("user_id", userId); } public java.lang.Long getUserId() { return getLong("user_id"); } public void setUsername(java.lang.String username) { set("username", username); } public java.lang.String getUsername() { return getStr("username"); } public void setPassword(java.lang.String password) { set("password", password); } public java.lang.String getPassword() { return getStr("password"); } public void setSalt(java.lang.String salt) { set("salt", salt); } public java.lang.String getSalt() { return getStr("salt"); } public void setEmail(java.lang.String email) { set("email", email); } public java.lang.String getEmail() { return getStr("email"); } public void setMobile(java.lang.String mobile) { set("mobile", mobile); } public java.lang.String getMobile() { return getStr("mobile"); } public void setStatus(java.lang.Integer status) { set("status", status); } public java.lang.Integer getStatus() { return getInt("status"); } public void setCreateUserId(java.lang.Long createUserId) { set("create_user_id", createUserId); } public java.lang.Long getCreateUserId() { return getLong("create_user_id"); } public void setCreateTime(java.util.Date createTime) { set("create_time", createTime); } public java.util.Date getCreateTime() { return get("create_time"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSysUserRole.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSysUserRole> extends Model implements IBean { public void setId(java.lang.Long id) { set("id", id); } public java.lang.Long getId() { return getLong("id"); } public void setUserId(java.lang.Long userId) { set("user_id", userId); } public java.lang.Long getUserId() { return getLong("user_id"); } public void setRoleId(java.lang.Long roleId) { set("role_id", roleId); } public java.lang.Long getRoleId() { return getLong("role_id"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseSysUserToken.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseSysUserToken> extends Model implements IBean { public void setUserId(java.lang.Long userId) { set("user_id", userId); } public java.lang.Long getUserId() { return getLong("user_id"); } public void setToken(java.lang.String token) { set("token", token); } public java.lang.String getToken() { return getStr("token"); } public void setExpireTime(java.util.Date expireTime) { set("expire_time", expireTime); } public java.util.Date getExpireTime() { return get("expire_time"); } public void setUpdateTime(java.util.Date updateTime) { set("update_time", updateTime); } public java.util.Date getUpdateTime() { return get("update_time"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseTbUser.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseTbUser> extends Model implements IBean { public void setUserId(java.lang.Long userId) { set("user_id", userId); } public java.lang.Long getUserId() { return getLong("user_id"); } public void setUsername(java.lang.String username) { set("username", username); } public java.lang.String getUsername() { return getStr("username"); } public void setMobile(java.lang.String mobile) { set("mobile", mobile); } public java.lang.String getMobile() { return getStr("mobile"); } public void setPassword(java.lang.String password) { set("password", password); } public java.lang.String getPassword() { return getStr("password"); } public void setCreateTime(java.util.Date createTime) { set("create_time", createTime); } public java.util.Date getCreateTime() { return get("create_time"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseTestTable.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseTestTable> extends Model implements IBean { public void setId(java.lang.Integer id) { set("id", id); } public java.lang.Integer getId() { return getInt("id"); } public void setName(java.lang.String name) { set("name", name); } public java.lang.String getName() { return getStr("name"); } public void setSex(java.lang.Integer sex) { set("sex", sex); } public java.lang.Integer getSex() { return getInt("sex"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseUser.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseUser> extends Model implements IBean { public void setUserId(java.lang.String userId) { set("user_id", userId); } public java.lang.String getUserId() { return getStr("user_id"); } public void setUsername(java.lang.String username) { set("username", username); } public java.lang.String getUsername() { return getStr("username"); } public void setMaOpenId(java.lang.String maOpenId) { set("ma_open_id", maOpenId); } public java.lang.String getMaOpenId() { return getStr("ma_open_id"); } public void setUnionId(java.lang.String unionId) { set("union_id", unionId); } public java.lang.String getUnionId() { return getStr("union_id"); } public void setNickname(java.lang.String nickname) { set("nickname", nickname); } public java.lang.String getNickname() { return getStr("nickname"); } public void setName(java.lang.String name) { set("name", name); } public java.lang.String getName() { return getStr("name"); } public void setEmail(java.lang.String email) { set("email", email); } public java.lang.String getEmail() { return getStr("email"); } public void setGender(java.lang.Integer gender) { set("gender", gender); } public java.lang.Integer getGender() { return getInt("gender"); } public void setAreaId(java.lang.Integer areaId) { set("area_id", areaId); } public java.lang.Integer getAreaId() { return getInt("area_id"); } public void setLanguage(java.lang.Integer language) { set("language", language); } public java.lang.Integer getLanguage() { return getInt("language"); } public void setVolunteer(java.lang.Integer volunteer) { set("volunteer", volunteer); } public java.lang.Integer getVolunteer() { return getInt("volunteer"); } public void setAvatar(java.lang.String avatar) { set("avatar", avatar); } public java.lang.String getAvatar() { return getStr("avatar"); } public void setMobile(java.lang.String mobile) { set("mobile", mobile); } public java.lang.String getMobile() { return getStr("mobile"); } public void setPassword(java.lang.String password) { set("password", password); } public java.lang.String getPassword() { return getStr("password"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } } ================================================ FILE: src/main/java/io/sdb/model/base/BaseVolunteerInfo.java ================================================ package io.sdb.model.base; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.IBean; /** * Generated by JFinal, do not modify this file. */ @SuppressWarnings("serial") public abstract class BaseVolunteerInfo> extends Model implements IBean { public void setId(java.lang.String id) { set("id", id); } public java.lang.String getId() { return getStr("id"); } public void setIdType(java.lang.Integer idType) { set("id_type", idType); } public java.lang.Integer getIdType() { return getInt("id_type"); } public void setIdCard(java.lang.String idCard) { set("id_card", idCard); } public java.lang.String getIdCard() { return getStr("id_card"); } public void setName(java.lang.String name) { set("name", name); } public java.lang.String getName() { return getStr("name"); } public void setGender(java.lang.Integer gender) { set("gender", gender); } public java.lang.Integer getGender() { return getInt("gender"); } public void setAge(java.lang.Integer age) { set("age", age); } public java.lang.Integer getAge() { return getInt("age"); } public void setWork(java.lang.String work) { set("work", work); } public java.lang.String getWork() { return getStr("work"); } public void setMobile(java.lang.String mobile) { set("mobile", mobile); } public java.lang.String getMobile() { return getStr("mobile"); } public void setAreaId(java.lang.Integer areaId) { set("area_id", areaId); } public java.lang.Integer getAreaId() { return getInt("area_id"); } public void setEmail(java.lang.String email) { set("email", email); } public java.lang.String getEmail() { return getStr("email"); } public void setAddress(java.lang.String address) { set("address", address); } public java.lang.String getAddress() { return getStr("address"); } public void setComment(java.lang.String comment) { set("comment", comment); } public java.lang.String getComment() { return getStr("comment"); } public void setStatus(java.lang.Integer status) { set("status", status); } public java.lang.Integer getStatus() { return getInt("status"); } public void setCardFront(java.lang.String cardFront) { set("card_front", cardFront); } public java.lang.String getCardFront() { return getStr("card_front"); } public void setCardBack(java.lang.String cardBack) { set("card_back", cardBack); } public java.lang.String getCardBack() { return getStr("card_back"); } public void setUserId(java.lang.Long userId) { set("user_id", userId); } public java.lang.Long getUserId() { return getLong("user_id"); } public void setCreateDate(java.util.Date createDate) { set("create_date", createDate); } public java.util.Date getCreateDate() { return get("create_date"); } public void setUpdateDate(java.util.Date updateDate) { set("update_date", updateDate); } public java.util.Date getUpdateDate() { return get("update_date"); } } ================================================ FILE: src/main/java/io/sdb/oss/cloud/AliyunCloudStorageService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.oss.cloud; import com.aliyun.oss.OSSClient; import io.sdb.common.exception.RRException; import java.io.ByteArrayInputStream; import java.io.InputStream; /** * 阿里云存储 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-26 16:22 */ public class AliyunCloudStorageService extends CloudStorageService { private OSSClient client; public AliyunCloudStorageService(CloudStorageConfig config){ this.config = config; //初始化 init(); } private void init(){ client = new OSSClient(config.getAliyunEndPoint(), config.getAliyunAccessKeyId(), config.getAliyunAccessKeySecret()); } @Override public String upload(byte[] data, String path) { return upload(new ByteArrayInputStream(data), path); } @Override public String upload(InputStream inputStream, String path) { try { client.putObject(config.getAliyunBucketName(), path, inputStream); } catch (Exception e){ throw new RRException("上传文件失败,请检查配置信息", e); } return config.getAliyunDomain() + "/" + path; } @Override public String uploadSuffix(byte[] data, String suffix) { return upload(data, getPath(config.getAliyunPrefix(), suffix)); } @Override public String uploadSuffix(InputStream inputStream, String suffix) { return upload(inputStream, getPath(config.getAliyunPrefix(), suffix)); } } ================================================ FILE: src/main/java/io/sdb/oss/cloud/CloudStorageConfig.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.oss.cloud; import io.sdb.common.validator.group.AliyunGroup; import io.sdb.common.validator.group.QcloudGroup; import io.sdb.common.validator.group.QiniuGroup; import org.hibernate.validator.constraints.NotBlank; import org.hibernate.validator.constraints.Range; import org.hibernate.validator.constraints.URL; import javax.validation.constraints.NotNull; import java.io.Serializable; /** * 云存储配置信息 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-25 16:12 */ public class CloudStorageConfig implements Serializable { private static final long serialVersionUID = 1L; //类型 1:七牛 2:阿里云 3:腾讯云 @Range(min=1, max=3, message = "类型错误") private Integer type; //七牛绑定的域名 @NotBlank(message="七牛绑定的域名不能为空", groups = QiniuGroup.class) @URL(message = "七牛绑定的域名格式不正确", groups = QiniuGroup.class) private String qiniuDomain; //七牛路径前缀 private String qiniuPrefix; //七牛ACCESS_KEY @NotBlank(message="七牛AccessKey不能为空", groups = QiniuGroup.class) private String qiniuAccessKey; //七牛SECRET_KEY @NotBlank(message="七牛SecretKey不能为空", groups = QiniuGroup.class) private String qiniuSecretKey; //七牛存储空间名 @NotBlank(message="七牛空间名不能为空", groups = QiniuGroup.class) private String qiniuBucketName; //阿里云绑定的域名 @NotBlank(message="阿里云绑定的域名不能为空", groups = AliyunGroup.class) @URL(message = "阿里云绑定的域名格式不正确", groups = AliyunGroup.class) private String aliyunDomain; //阿里云路径前缀 private String aliyunPrefix; //阿里云EndPoint @NotBlank(message="阿里云EndPoint不能为空", groups = AliyunGroup.class) private String aliyunEndPoint; //阿里云AccessKeyId @NotBlank(message="阿里云AccessKeyId不能为空", groups = AliyunGroup.class) private String aliyunAccessKeyId; //阿里云AccessKeySecret @NotBlank(message="阿里云AccessKeySecret不能为空", groups = AliyunGroup.class) private String aliyunAccessKeySecret; //阿里云BucketName @NotBlank(message="阿里云BucketName不能为空", groups = AliyunGroup.class) private String aliyunBucketName; //腾讯云绑定的域名 @NotBlank(message="腾讯云绑定的域名不能为空", groups = QcloudGroup.class) @URL(message = "腾讯云绑定的域名格式不正确", groups = QcloudGroup.class) private String qcloudDomain; //腾讯云路径前缀 private String qcloudPrefix; //腾讯云AppId @NotNull(message="腾讯云AppId不能为空", groups = QcloudGroup.class) private Integer qcloudAppId; //腾讯云SecretId @NotBlank(message="腾讯云SecretId不能为空", groups = QcloudGroup.class) private String qcloudSecretId; //腾讯云SecretKey @NotBlank(message="腾讯云SecretKey不能为空", groups = QcloudGroup.class) private String qcloudSecretKey; //腾讯云BucketName @NotBlank(message="腾讯云BucketName不能为空", groups = QcloudGroup.class) private String qcloudBucketName; //腾讯云COS所属地区 @NotBlank(message="所属地区不能为空", groups = QcloudGroup.class) private String qcloudRegion; public Integer getType() { return type; } public void setType(Integer type) { this.type = type; } public String getQiniuDomain() { return qiniuDomain; } public void setQiniuDomain(String qiniuDomain) { this.qiniuDomain = qiniuDomain; } public String getQiniuAccessKey() { return qiniuAccessKey; } public void setQiniuAccessKey(String qiniuAccessKey) { this.qiniuAccessKey = qiniuAccessKey; } public String getQiniuSecretKey() { return qiniuSecretKey; } public void setQiniuSecretKey(String qiniuSecretKey) { this.qiniuSecretKey = qiniuSecretKey; } public String getQiniuBucketName() { return qiniuBucketName; } public void setQiniuBucketName(String qiniuBucketName) { this.qiniuBucketName = qiniuBucketName; } public String getQiniuPrefix() { return qiniuPrefix; } public void setQiniuPrefix(String qiniuPrefix) { this.qiniuPrefix = qiniuPrefix; } public String getAliyunDomain() { return aliyunDomain; } public void setAliyunDomain(String aliyunDomain) { this.aliyunDomain = aliyunDomain; } public String getAliyunPrefix() { return aliyunPrefix; } public void setAliyunPrefix(String aliyunPrefix) { this.aliyunPrefix = aliyunPrefix; } public String getAliyunEndPoint() { return aliyunEndPoint; } public void setAliyunEndPoint(String aliyunEndPoint) { this.aliyunEndPoint = aliyunEndPoint; } public String getAliyunAccessKeyId() { return aliyunAccessKeyId; } public void setAliyunAccessKeyId(String aliyunAccessKeyId) { this.aliyunAccessKeyId = aliyunAccessKeyId; } public String getAliyunAccessKeySecret() { return aliyunAccessKeySecret; } public void setAliyunAccessKeySecret(String aliyunAccessKeySecret) { this.aliyunAccessKeySecret = aliyunAccessKeySecret; } public String getAliyunBucketName() { return aliyunBucketName; } public void setAliyunBucketName(String aliyunBucketName) { this.aliyunBucketName = aliyunBucketName; } public String getQcloudDomain() { return qcloudDomain; } public void setQcloudDomain(String qcloudDomain) { this.qcloudDomain = qcloudDomain; } public String getQcloudPrefix() { return qcloudPrefix; } public void setQcloudPrefix(String qcloudPrefix) { this.qcloudPrefix = qcloudPrefix; } public Integer getQcloudAppId() { return qcloudAppId; } public void setQcloudAppId(Integer qcloudAppId) { this.qcloudAppId = qcloudAppId; } public String getQcloudSecretId() { return qcloudSecretId; } public void setQcloudSecretId(String qcloudSecretId) { this.qcloudSecretId = qcloudSecretId; } public String getQcloudSecretKey() { return qcloudSecretKey; } public void setQcloudSecretKey(String qcloudSecretKey) { this.qcloudSecretKey = qcloudSecretKey; } public String getQcloudBucketName() { return qcloudBucketName; } public void setQcloudBucketName(String qcloudBucketName) { this.qcloudBucketName = qcloudBucketName; } public String getQcloudRegion() { return qcloudRegion; } public void setQcloudRegion(String qcloudRegion) { this.qcloudRegion = qcloudRegion; } } ================================================ FILE: src/main/java/io/sdb/oss/cloud/CloudStorageService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.oss.cloud; import io.sdb.common.utils.DateUtils; import org.apache.commons.lang.StringUtils; import java.io.InputStream; import java.util.Date; import java.util.UUID; /** * 云存储(支持七牛、阿里云、腾讯云、又拍云) * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-25 14:58 */ public abstract class CloudStorageService { /** 云存储配置信息 */ CloudStorageConfig config; /** * 文件路径 * @param prefix 前缀 * @param suffix 后缀 * @return 返回上传路径 */ public String getPath(String prefix, String suffix) { //生成uuid String uuid = UUID.randomUUID().toString().replaceAll("-", ""); //文件路径 String path = DateUtils.format(new Date(), "yyyyMMdd") + "/" + uuid; if(StringUtils.isNotBlank(prefix)){ path = prefix + "/" + path; } return path + suffix; } /** * 文件上传 * @param data 文件字节数组 * @param path 文件路径,包含文件名 * @return 返回http地址 */ public abstract String upload(byte[] data, String path); /** * 文件上传 * @param data 文件字节数组 * @param suffix 后缀 * @return 返回http地址 */ public abstract String uploadSuffix(byte[] data, String suffix); /** * 文件上传 * @param inputStream 字节流 * @param path 文件路径,包含文件名 * @return 返回http地址 */ public abstract String upload(InputStream inputStream, String path); /** * 文件上传 * @param inputStream 字节流 * @param suffix 后缀 * @return 返回http地址 */ public abstract String uploadSuffix(InputStream inputStream, String suffix); } ================================================ FILE: src/main/java/io/sdb/oss/cloud/OSSFactory.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.oss.cloud; import io.sdb.common.utils.ConfigConstant; import io.sdb.common.utils.Constant; import io.sdb.common.utils.SpringContextUtils; import io.sdb.service.SysConfigService; /** * 文件上传Factory * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-26 10:18 */ public final class OSSFactory { private static SysConfigService sysConfigService; static { OSSFactory.sysConfigService = (SysConfigService) SpringContextUtils.getBean("sysConfigService"); } public static CloudStorageService build(){ //获取云存储配置信息 CloudStorageConfig config = sysConfigService.getConfigObject(ConfigConstant.CLOUD_STORAGE_CONFIG_KEY, CloudStorageConfig.class); if(config.getType() == Constant.CloudService.QINIU.getValue()){ return new QiniuCloudStorageService(config); }else if(config.getType() == Constant.CloudService.ALIYUN.getValue()){ return new AliyunCloudStorageService(config); }else if(config.getType() == Constant.CloudService.QCLOUD.getValue()){ return new QcloudCloudStorageService(config); } return null; } } ================================================ FILE: src/main/java/io/sdb/oss/cloud/QcloudCloudStorageService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.oss.cloud; import com.alibaba.fastjson.JSONObject; import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qcloud.cos.request.UploadFileRequest; import com.qcloud.cos.sign.Credentials; import io.sdb.common.exception.RRException; import org.apache.commons.io.IOUtils; import java.io.IOException; import java.io.InputStream; /** * 腾讯云存储 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-26 20:51 */ public class QcloudCloudStorageService extends CloudStorageService { private COSClient client; public QcloudCloudStorageService(CloudStorageConfig config){ this.config = config; //初始化 init(); } private void init(){ Credentials credentials = new Credentials(config.getQcloudAppId(), config.getQcloudSecretId(), config.getQcloudSecretKey()); //初始化客户端配置 ClientConfig clientConfig = new ClientConfig(); //设置bucket所在的区域,华南:gz 华北:tj 华东:sh clientConfig.setRegion(config.getQcloudRegion()); client = new COSClient(clientConfig, credentials); } @Override public String upload(byte[] data, String path) { //腾讯云必需要以"/"开头 if(!path.startsWith("/")) { path = "/" + path; } //上传到腾讯云 UploadFileRequest request = new UploadFileRequest(config.getQcloudBucketName(), path, data); String response = client.uploadFile(request); JSONObject jsonObject = JSONObject.parseObject(response); if(jsonObject.getInteger("code") != 0) { throw new RRException("文件上传失败," + jsonObject.getString("message")); } return config.getQcloudDomain() + path; } @Override public String upload(InputStream inputStream, String path) { try { byte[] data = IOUtils.toByteArray(inputStream); return this.upload(data, path); } catch (IOException e) { throw new RRException("上传文件失败", e); } } @Override public String uploadSuffix(byte[] data, String suffix) { return upload(data, getPath(config.getQcloudPrefix(), suffix)); } @Override public String uploadSuffix(InputStream inputStream, String suffix) { return upload(inputStream, getPath(config.getQcloudPrefix(), suffix)); } } ================================================ FILE: src/main/java/io/sdb/oss/cloud/QiniuCloudStorageService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.oss.cloud; import com.qiniu.common.Zone; import com.qiniu.http.Response; import com.qiniu.storage.Configuration; import com.qiniu.storage.UploadManager; import com.qiniu.util.Auth; import io.sdb.common.exception.RRException; import org.apache.commons.io.IOUtils; import java.io.IOException; import java.io.InputStream; /** * 七牛云存储 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-25 15:41 */ public class QiniuCloudStorageService extends CloudStorageService { private UploadManager uploadManager; private String token; public QiniuCloudStorageService(CloudStorageConfig config){ this.config = config; //初始化 init(); } private void init(){ uploadManager = new UploadManager(new Configuration(Zone.autoZone())); token = Auth.create(config.getQiniuAccessKey(), config.getQiniuSecretKey()). uploadToken(config.getQiniuBucketName()); } @Override public String upload(byte[] data, String path) { try { Response res = uploadManager.put(data, path, token); if (!res.isOK()) { throw new RuntimeException("上传七牛出错:" + res.toString()); } } catch (Exception e) { throw new RRException("上传文件失败,请核对七牛配置信息", e); } return config.getQiniuDomain() + "/" + path; } @Override public String upload(InputStream inputStream, String path) { try { byte[] data = IOUtils.toByteArray(inputStream); return this.upload(data, path); } catch (IOException e) { throw new RRException("上传文件失败", e); } } @Override public String uploadSuffix(byte[] data, String suffix) { return upload(data, getPath(config.getQiniuPrefix(), suffix)); } @Override public String uploadSuffix(InputStream inputStream, String suffix) { return upload(inputStream, getPath(config.getQiniuPrefix(), suffix)); } } ================================================ FILE: src/main/java/io/sdb/resolver/LoginUserHandlerMethodArgumentResolver.java ================================================ package io.sdb.resolver; import io.sdb.common.exception.RRException; import io.sdb.model.User; import io.sdb.common.annotation.LoginUser; import io.sdb.interceptor.AuthorizationInterceptor; import io.sdb.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.MethodParameter; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; import org.springframework.web.bind.support.WebDataBinderFactory; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; /** * 有@LoginUser注解的方法参数,注入当前登录用户 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-23 22:02 */ @Component public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { @Autowired private UserService userService; @Override public boolean supportsParameter(MethodParameter parameter) { return parameter.getParameterType().isAssignableFrom(User.class) && parameter.hasParameterAnnotation(LoginUser.class); } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container, NativeWebRequest request, WebDataBinderFactory factory) throws Exception { //获取用户ID Object object = request.getAttribute(AuthorizationInterceptor.USER_KEY, RequestAttributes.SCOPE_REQUEST); if(object == null){ throw new RRException("token失效,请重新登录", HttpStatus.UNAUTHORIZED.value()); } //获取用户信息 User user = userService.findById((Long)object); if (user == null) { throw new RRException("token失效,请重新登录", HttpStatus.UNAUTHORIZED.value()); } return user; } } ================================================ FILE: src/main/java/io/sdb/serializer/Date2LongSerializer.java ================================================ package io.sdb.serializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; import java.util.Date; public class Date2LongSerializer extends JsonSerializer { @Override public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeNumber(date.getTime()); } } ================================================ FILE: src/main/java/io/sdb/serializer/Int2BoolSerializer.java ================================================ package io.sdb.serializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import io.sdb.enums.GeneralEnum; import java.io.IOException; public class Int2BoolSerializer extends JsonSerializer { @Override public void serialize(Integer integer, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeBoolean(integer == GeneralEnum.TRUE.getCode()?true:false); } } ================================================ FILE: src/main/java/io/sdb/service/AreaService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.model.Area; /** * 地区 * * @author dick */ public interface AreaService extends BaseService { } ================================================ FILE: src/main/java/io/sdb/service/BaseService.java ================================================ package io.sdb.service; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.SqlPara; import io.sdb.common.entity.Filter; import io.sdb.common.entity.Order; import io.sdb.common.utils.PageUtils; import java.util.List; import java.util.Map; public interface BaseService> { List findAll(); M findById(Object ...id); List findByModel(M model); M findFirstByModel(M model); List find(SqlPara sqlPara); M findFirst(SqlPara sqlPara); boolean deleteBatch(Object[]... ids); boolean deleteBatch(String[] columns, Object[]... ids); boolean deleteByModel(M model); Page paginate(Integer pageNum, Integer pageSize, List filters, Order order); Page paginate(Integer pageNum, Integer pageSize, List filters); Page paginate(Integer pageNum, Integer pageSize); Page paginate(Integer pageNum, Integer pageSize, List filters, List orders); Page paginate(Integer pageNum, Integer pageSize, Filter filter, List orders); Page paginate(Integer pageNum, Integer pageSize, Filter filter, Order order); PageUtils queryPage(Map params); M insert(M model); List findByFilter(Filter filter); List findByFilters(List filter); boolean update(M model); boolean delete(M model); } ================================================ FILE: src/main/java/io/sdb/service/CampaignService.java ================================================ package io.sdb.service; import io.sdb.model.Campaign; public interface CampaignService extends BaseService { } ================================================ FILE: src/main/java/io/sdb/service/CartService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.dto.CartDTO; import io.sdb.model.Cart; import io.sdb.model.Product; import java.util.List; /** * 系统日志 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-08 10:40:56 */ public interface CartService extends BaseService { Boolean saveOrUpdate(String userId, String productId, Integer quantity); Boolean remove(String userId, String cartIds); List getCartProduct(List cartItemIds); List listDetail(String userId); } ================================================ FILE: src/main/java/io/sdb/service/DeliveryCorpService.java ================================================ package io.sdb.service; import io.sdb.model.DeliveryCorp; public interface DeliveryCorpService extends BaseService { } ================================================ FILE: src/main/java/io/sdb/service/FavoriteGoodsService.java ================================================ package io.sdb.service; import io.sdb.dto.FavoriteGoodsDTO; import io.sdb.model.FavoriteGoods; import java.util.List; /** * 收藏商品 */ public interface FavoriteGoodsService extends BaseService { List list(String userId); } ================================================ FILE: src/main/java/io/sdb/service/GoodsService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.common.utils.R; import io.sdb.form.GoodsData; import io.sdb.form.GoodsParaData; import io.sdb.form.GoodsSpecData; import io.sdb.common.utils.PageUtils; import io.sdb.model.Goods; import java.util.List; import java.util.Map; /** * 系统日志 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-08 10:40:56 */ public interface GoodsService extends BaseService { PageUtils queryPage(Map params); Goods saveUpdateGoods(GoodsData goods, List paraList, List specList); R batchShelf(String[] ids); R batchObtained(String[] ids); } ================================================ FILE: src/main/java/io/sdb/service/GrouponService.java ================================================ package io.sdb.service; import io.sdb.model.Groupon; public interface GrouponService extends BaseService { } ================================================ FILE: src/main/java/io/sdb/service/GrouponTeamService.java ================================================ package io.sdb.service; import io.sdb.model.GrouponTeam; public interface GrouponTeamService extends BaseService { } ================================================ FILE: src/main/java/io/sdb/service/LogisticsService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.common.utils.PageUtils; import io.sdb.model.Logistics; import io.sdb.model.SysLog; import io.sdb.service.BaseService; import java.util.Map; /** * 系统日志 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-08 10:40:56 */ public interface LogisticsService extends BaseService { Boolean subscribe(String tradeNo, String code); } ================================================ FILE: src/main/java/io/sdb/service/OrderDetailService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.model.OrderDetail; import io.sdb.model.OrderMaster; /** * 系统日志 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-08 10:40:56 */ public interface OrderDetailService extends BaseService { } ================================================ FILE: src/main/java/io/sdb/service/OrderMasterService.java ================================================ package io.sdb.service; import io.sdb.common.utils.PageUtils; import io.sdb.dto.OrderDTO; import io.sdb.model.OrderMaster; import java.math.BigDecimal; import java.util.List; import java.util.Map; public interface OrderMasterService extends BaseService { PageUtils queryPage(Map params); OrderDTO create(OrderDTO orderDTO); OrderMaster cancel(String orderId); Boolean updateByGrouponId(String grouponId,Integer status); /** 支付订单. */ OrderMaster paid(OrderMaster orderMaster); Boolean shipping(OrderDTO orderDTO, String deliveryCode); Boolean delete(String orderId); BigDecimal getTodayTotalSale(); List getTodayTotalOrders(); List getTodayOrders(); } ================================================ FILE: src/main/java/io/sdb/service/PayService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import com.lly835.bestpay.model.PayResponse; import io.sdb.dto.OrderDTO; import io.sdb.model.OrderMaster; /** * 系统日志 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-08 10:40:56 */ public interface PayService { PayResponse create(OrderDTO orderDTO); OrderMaster refund(String orderId); PayResponse notify(String notifyData); } ================================================ FILE: src/main/java/io/sdb/service/ProductCategoryService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.common.utils.R; import io.sdb.model.ProductCategory; import java.util.List; /** * 系统日志 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-08 10:40:56 */ public interface ProductCategoryService extends BaseService { /** * 查询商品分类 * @return */ List queryListOrder(); /** * 根据parentId查询列表 * @return */ List queryListByParentId(Long parentId); /** * 删除商品类目 * @param productCategoryId * @return */ R delete(Long productCategoryId); /** * 保存商品类目 * @param productCategory * @return */ R save(ProductCategory productCategory); } ================================================ FILE: src/main/java/io/sdb/service/ProductService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.dto.CartDTO; import io.sdb.dto.ProductDTO; import io.sdb.model.Goods; import io.sdb.model.Product; import java.util.List; /** * 系统日志 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-08 10:40:56 */ public interface ProductService extends BaseService { void decreaseStock(List cartDTOList); void creaseStock(List cartDTOList); Goods getGoods(String productId); List listDetailByProductIds(String productIds); } ================================================ FILE: src/main/java/io/sdb/service/ReceiverService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.model.Cart; import io.sdb.model.Receiver; /** * 系统日志 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-08 10:40:56 */ public interface ReceiverService extends BaseService { Receiver findDefault(String userId); } ================================================ FILE: src/main/java/io/sdb/service/ScheduleJobLogService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.common.utils.PageUtils; import io.sdb.model.ScheduleJobLog; import io.sdb.service.BaseService; import java.util.Map; /** * 定时任务日志 * * @author Mark sunlightcs@gmail.com * @since 1.2.0 2016-11-28 */ public interface ScheduleJobLogService extends BaseService { PageUtils queryPage(Map params); } ================================================ FILE: src/main/java/io/sdb/service/ScheduleJobService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.common.utils.PageUtils; import io.sdb.model.ScheduleJob; import io.sdb.service.BaseService; import java.util.Map; /** * 定时任务 * * @author Mark sunlightcs@gmail.com * @since 1.2.0 2016-11-28 */ public interface ScheduleJobService extends BaseService { PageUtils queryPage(Map params); /** * 保存定时任务 */ void save(ScheduleJob scheduleJob); /** * 更新定时任务 */ boolean update(ScheduleJob scheduleJob); /** * 批量删除定时任务 */ void deleteBatch(Long[] jobIds); /** * 批量更新定时任务状态 */ int updateBatch(Long[] jobIds, int status); /** * 立即执行 */ void run(Long[] jobIds); /** * 暂停运行 */ void pause(Long[] jobIds); /** * 恢复运行 */ void resume(Long[] jobIds); } ================================================ FILE: src/main/java/io/sdb/service/ShiroService.java ================================================ package io.sdb.service; import io.sdb.model.SysUser; import io.sdb.model.SysUserToken; import java.util.Set; /** * shiro相关接口 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-06-06 8:49 */ public interface ShiroService { /** * 获取用户权限列表 */ Set getUserPermissions(long userId); SysUserToken queryByToken(String token); /** * 根据用户ID,查询用户 * @param userId */ SysUser queryUser(Long userId); } ================================================ FILE: src/main/java/io/sdb/service/SnService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.enums.SnEnum; import io.sdb.model.Sn; /** * sn生成 * * @author dick */ public interface SnService extends BaseService { String generate(SnEnum type); } ================================================ FILE: src/main/java/io/sdb/service/SpecificationService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.common.utils.R; import io.sdb.model.Specification; import java.util.List; /** * 规格 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-08 10:40:56 */ public interface SpecificationService extends BaseService { /** * 根据商品类目查询规格 * @param categoryId * @return */ List queryListByCategoryId(Long categoryId); /** * 查询规格信息 * @return */ List queryListByOrder(); /** * 删除规格信息 * @param id * @return */ R delete(Long id); /** * 保存规格信息 * @param specification * @return */ R save(Specification specification); } ================================================ FILE: src/main/java/io/sdb/service/SysCaptchaService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.model.SysCaptcha; import io.sdb.service.BaseService; import java.awt.image.BufferedImage; /** * 验证码 * * @author Mark sunlightcs@gmail.com * @since 2.0.0 2018-02-10 */ public interface SysCaptchaService extends BaseService { /** * 获取图片验证码 */ BufferedImage getCaptcha(String uuid); /** * 验证码效验 * @param uuid uuid * @param code 验证码 * @return true:成功 false:失败 */ boolean validate(String uuid, String code); } ================================================ FILE: src/main/java/io/sdb/service/SysConfigService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.common.utils.PageUtils; import io.sdb.model.SysConfig; import io.sdb.service.BaseService; import java.util.Map; /** * 系统配置信息 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年12月4日 下午6:49:01 */ public interface SysConfigService extends BaseService { PageUtils queryPage(Map params); /** * 保存配置信息 */ void save(SysConfig config); /** * 更新配置信息 */ boolean update(SysConfig config); /** * 根据key,更新value */ void updateValueByKey(String key, String value); /** * 删除配置信息 */ void deleteBatch(Long[] ids); /** * 根据key,获取配置的value值 * * @param key key */ String getValue(String key); /** * 根据key,获取value的Object对象 * @param key key * @param clazz Object对象 */ T getConfigObject(String key, Class clazz); } ================================================ FILE: src/main/java/io/sdb/service/SysLogService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.common.utils.PageUtils; import io.sdb.model.SysLog; import io.sdb.service.BaseService; import java.util.Map; /** * 系统日志 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-08 10:40:56 */ public interface SysLogService extends BaseService { PageUtils queryPage(Map params); } ================================================ FILE: src/main/java/io/sdb/service/SysMenuService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.model.SysMenu; import io.sdb.service.BaseService; import java.util.List; /** * 菜单管理 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年9月18日 上午9:42:16 */ public interface SysMenuService extends BaseService { /** * 根据父菜单,查询子菜单 * @param parentId 父菜单ID * @param menuIdList 用户菜单ID */ List queryListParentId(Long parentId, List menuIdList); /** * 根据父菜单,查询子菜单 * @param parentId 父菜单ID */ List queryListParentId(Long parentId); /** * 获取不包含按钮的菜单列表 */ List queryNotButtonList(); /** * 获取用户菜单列表 */ List getUserMenuList(Long userId); /** * 删除 */ void delete(Long menuId); } ================================================ FILE: src/main/java/io/sdb/service/SysOssService.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service; import io.sdb.common.utils.PageUtils; import io.sdb.model.SysOss; import io.sdb.service.BaseService; import java.util.Map; /** * 文件上传 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-25 12:13:26 */ public interface SysOssService extends BaseService { PageUtils queryPage(Map params); } ================================================ FILE: src/main/java/io/sdb/service/SysRoleMenuService.java ================================================ package io.sdb.service; import io.sdb.model.SysRoleMenu; import io.sdb.service.BaseService; import java.util.List; /** * 角色与菜单对应关系 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年9月18日 上午9:42:30 */ public interface SysRoleMenuService extends BaseService { void saveOrUpdate(Long roleId, List menuIdList); /** * 根据角色ID,获取菜单ID列表 */ List queryMenuIdList(Long roleId); /** * 根据角色ID数组,批量删除 */ boolean deleteBatch(Long[] roleIds); } ================================================ FILE: src/main/java/io/sdb/service/SysRoleService.java ================================================ package io.sdb.service; import io.sdb.common.utils.PageUtils; import io.sdb.model.SysRole; import io.sdb.service.BaseService; import java.util.List; import java.util.Map; /** * 角色 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年9月18日 上午9:42:52 */ public interface SysRoleService extends BaseService { PageUtils queryPage(Map params); void save(SysRole role); boolean update(SysRole role); void deleteBatch(Long[] roleIds); /** * 查询用户创建的角色ID列表 */ List queryRoleIdList(Long createUserId); } ================================================ FILE: src/main/java/io/sdb/service/SysUserRoleService.java ================================================ package io.sdb.service; import io.sdb.model.SysUserRole; import io.sdb.service.BaseService; import java.util.List; /** * 用户与角色对应关系 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年9月18日 上午9:43:24 */ public interface SysUserRoleService extends BaseService { void saveOrUpdate(Long userId, List roleIdList); /** * 根据用户ID,获取角色ID列表 */ List queryRoleIdList(Long userId); } ================================================ FILE: src/main/java/io/sdb/service/SysUserService.java ================================================ package io.sdb.service; import io.sdb.common.utils.PageUtils; import io.sdb.model.SysUser; import io.sdb.service.BaseService; import java.util.List; import java.util.Map; /** * 系统用户 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年9月18日 上午9:43:39 */ public interface SysUserService extends BaseService { PageUtils queryPage(Map params); /** * 查询用户的所有权限 * @param userId 用户ID */ List queryAllPerms(Long userId); /** * 查询用户的所有菜单ID */ List queryAllMenuId(Long userId); /** * 根据用户名,查询系统用户 */ SysUser queryByUserName(String username); /** * 保存用户 */ void save(SysUser user); /** * 修改用户 */ boolean update(SysUser user); /** * 修改密码 * @param userId 用户ID * @param password 原密码 * @param newPassword 新密码 */ boolean updatePassword(Long userId, String password, String newPassword); } ================================================ FILE: src/main/java/io/sdb/service/SysUserTokenService.java ================================================ package io.sdb.service; import io.sdb.common.utils.R; import io.sdb.model.SysUserToken; import io.sdb.service.BaseService; /** * 用户Token * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-23 15:22:07 */ public interface SysUserTokenService extends BaseService { /** * 生成token * @param userId 用户ID */ R createToken(long userId); /** * 退出,修改token值 * @param userId 用户ID */ void logout(long userId); } ================================================ FILE: src/main/java/io/sdb/service/UserService.java ================================================ package io.sdb.service; import cn.binarywang.wx.miniapp.bean.WxMaUserInfo; import io.sdb.model.User; import io.sdb.form.LoginForm; import io.sdb.service.BaseService; /** * 用户 * * @author dick */ public interface UserService extends BaseService { User queryByMobile(String mobile); /** * 用户登录 * @param form 登录表单 * @return 返回用户ID */ String login(LoginForm form); User addMaUser(WxMaUserInfo wxMaUserInfo); Integer getYestodayNewUsers(); Integer getTotalUsers(); } ================================================ FILE: src/main/java/io/sdb/service/impl/AreaServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.dao.AreaDao; import io.sdb.model.Area; import io.sdb.service.AreaService; import org.springframework.stereotype.Service; @Service public class AreaServiceImpl extends BaseServiceImpl implements AreaService { } ================================================ FILE: src/main/java/io/sdb/service/impl/BaseServiceImpl.java ================================================ package io.sdb.service.impl; import com.jfinal.plugin.activerecord.*; import io.sdb.common.entity.Filter; import io.sdb.common.entity.Order; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.Query; import io.sdb.dao.*; import io.sdb.model.Goods; import io.sdb.service.BaseService; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import java.util.ArrayList; import java.util.List; import java.util.Map; public class BaseServiceImpl, M extends Model> implements BaseService { @Autowired public T dao; @Override public List findAll() { return dao.findAll(); } @Override public M findById(Object... id) { return dao.findById(id); } @Override public List findByModel(M model) { return dao.findByModel(model); } @Override public M findFirstByModel(M model) { return dao.findFirstByModel(model); } @Override public List find(SqlPara sqlPara) { return dao.find(sqlPara); } @Override public M findFirst(SqlPara sqlPara) { return dao.findFirst(sqlPara); } @Override public boolean deleteBatch(Object[]... ids) { return dao.deleteBatch(ids); } @Override public boolean deleteBatch(String[] columns, Object[]... ids) { return dao.deleteBatch(columns, ids); } @Override public boolean deleteByModel(M model) { return dao.deleteByModel(model); } @Override public Page paginate(Integer pageNum, Integer pageSize, List filters, Order order) { return this.dao.paginate(pageNum, pageSize, filters, order); } @Override public Page paginate(Integer pageNum, Integer pageSize, List filters) { return this.dao.paginate(pageNum, pageSize, filters); } @Override public Page paginate(Integer pageNum, Integer pageSize) { return this.dao.paginate(pageNum, pageSize); } @Override public Page paginate(Integer pageNum, Integer pageSize, List filters, List orders) { return this.dao.paginate(pageNum, pageSize, filters, orders); } @Override public Page paginate(Integer pageNum, Integer pageSize, Filter filter, List orders) { return this.dao.paginate(pageNum, pageSize, filter, orders); } @Override public Page paginate(Integer pageNum, Integer pageSize, Filter filter, Order order) { List orderList = new ArrayList<>(); orderList.add(order); return this.dao.paginate(pageNum, pageSize, filter, orderList); } @Override public PageUtils queryPage(Map params) { Query query = new Query<>(params); Page pr = this.paginate(query.getCurrPage(), query.getLimit()); return new PageUtils(pr); } @Override public M insert(M model) { model.save(); return model; } @Override public List findByFilter(Filter filter) { return this.dao.findByFilter(filter); } @Override public List findByFilters(List filter) { return this.dao.findByFilters(filter); } @Override public boolean update(M model) { return model.update(); } @Override public boolean delete(M model) { return model.delete(); } } ================================================ FILE: src/main/java/io/sdb/service/impl/CampaignServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.dao.CampaignDao; import io.sdb.model.Campaign; import io.sdb.service.CampaignService; import org.springframework.stereotype.Service; @Service public class CampaignServiceImpl extends BaseServiceImpl implements CampaignService { } ================================================ FILE: src/main/java/io/sdb/service/impl/CartServiceImpl.java ================================================ package io.sdb.service.impl; import com.jfinal.kit.Kv; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.SqlPara; import io.sdb.common.entity.Filter; import io.sdb.dao.CartDao; import io.sdb.dto.CartDTO; import io.sdb.model.Cart; import io.sdb.model.Product; import io.sdb.common.utils.RecordUtils; import io.sdb.service.CartService; import io.sdb.service.ProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @Service public class CartServiceImpl extends BaseServiceImpl implements CartService { @Autowired ProductService productService; @Override public Boolean saveOrUpdate(String userId, String productId, Integer quantity) { Cart qcart = new Cart(); qcart.setProductId(productId); Cart cart = this.findFirstByModel(qcart); if (cart == null) { cart = new Cart(); cart.setQuantity(quantity); cart.setProductId(productId); cart.setUserId(userId); cart.save(); }else { cart.setQuantity(cart.getQuantity() + quantity); cart.setUpdateDate(new Date()); cart.update(); } return true; } @Override public Boolean remove(String userId, String cartIds) { String[] cartIdArr = cartIds.split(","); return this.deleteBatch(cartIdArr); } @Override public List getCartProduct(List cartItemIds) { Filter filter = new Filter(); filter.setProperty("product_id"); filter.setValue(cartItemIds); filter.setOperator(Filter.Operator.in); List cartList = this.findByFilter(filter); List productIds = cartList.stream().map(item -> { return item.getProductId(); }).collect(Collectors.toList()); filter = new Filter(); filter.setProperty("product_id"); filter.setValue(productIds); filter.setOperator(Filter.Operator.in); List productList = productService.findByFilter(filter); for (Cart cart : cartList) { for (Product product : productList) { if (cart.getProductId().equals(product.getSn())) { product.setQuantity(cart.getQuantity()); break; } } } return productList; } @Override public List listDetail(String userId) { SqlPara sqlPara = Db.getSqlPara("cart.listDetail", Kv.by("userId", userId)); List recordList = Db.find(sqlPara); List cartDTOList = RecordUtils.converModel(recordList, CartDTO.class); return cartDTOList; } } ================================================ FILE: src/main/java/io/sdb/service/impl/DeliveryCorpServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.dao.DeliveryCorpDao; import io.sdb.model.DeliveryCorp; import io.sdb.service.DeliveryCorpService; import org.springframework.stereotype.Service; @Service public class DeliveryCorpServiceImpl extends BaseServiceImpl implements DeliveryCorpService { } ================================================ FILE: src/main/java/io/sdb/service/impl/FavoriteGoodsServiceImpl.java ================================================ package io.sdb.service.impl; import com.jfinal.kit.Kv; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.SqlPara; import io.sdb.common.utils.RecordUtils; import io.sdb.dao.FavoriteGoodsDao; import io.sdb.dto.FavoriteGoodsDTO; import io.sdb.model.FavoriteGoods; import io.sdb.service.FavoriteGoodsService; import org.springframework.stereotype.Service; import java.util.List; @Service public class FavoriteGoodsServiceImpl extends BaseServiceImpl implements FavoriteGoodsService { @Override public List list(String userId) { SqlPara sqlPara = Db.getSqlPara("favoriteGoods.list", Kv.by("userId", userId)); List recordList = Db.find(sqlPara); List favoriteGoodsDTOList = RecordUtils.converModel(recordList, FavoriteGoodsDTO.class); return favoriteGoodsDTOList; } } ================================================ FILE: src/main/java/io/sdb/service/impl/GoodsServiceImpl.java ================================================ package io.sdb.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; import io.sdb.common.annotation.JFinalTx; import io.sdb.common.entity.Filter; import io.sdb.common.entity.Order; import io.sdb.common.utils.R; import io.sdb.form.GoodsData; import io.sdb.form.GoodsParaData; import io.sdb.form.GoodsSpecData; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.Query; import io.sdb.dao.GoodsDao; import io.sdb.enums.SnEnum; import io.sdb.model.Goods; import io.sdb.model.Product; import io.sdb.service.GoodsService; import io.sdb.service.SnService; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; @Service public class GoodsServiceImpl extends BaseServiceImpl implements GoodsService { @Autowired SnService snService; @Override public PageUtils queryPage(Map params) { String searchKey = (String)params.get("searchKey"); Query query = new Query(params); List filters = new ArrayList<>(); if (!StringUtils.isBlank(searchKey)) { Filter filter = new Filter(); filter.setProperty("name"); filter.setValue(searchKey); filter.setOperator(Filter.Operator.like); filters.add(filter); filter = new Filter(); filter.setProperty("caption"); filter.setValue(searchKey); filter.setOperator(Filter.Operator.like); filter.setWhereOpt(Filter.WhereOpt.or); filters.add(filter); filter = new Filter(); filter.setProperty("sn"); filter.setValue(searchKey); filter.setOperator(Filter.Operator.like); filter.setWhereOpt(Filter.WhereOpt.or); filters.add(filter); } Order order = new Order(); order.setProperty("create_date"); order.setDirection(Order.Direction.desc); Page pr = this.paginate(query.getCurrPage(), query.getLimit(), filters, order); return new PageUtils(pr); } @Override @JFinalTx public Goods saveUpdateGoods(GoodsData goods, List paraList, List specList) { Goods newGoods = new Goods(); newGoods.setName(goods.getName()); newGoods.setModel(goods.getModel()); newGoods.setCaption(goods.getCaption()); newGoods.setImage(goods.getProductImageUrlArr().get(0)); newGoods.setProductImages(StringUtils.join(goods.getProductImageUrlArr(), ',')); newGoods.setIntroduction(StringUtils.join(goods.getIntroImageUrlArr(), ',')); newGoods.setIsDelivery(goods.isDelivery()); newGoods.setIsMarketable(goods.isMarketable()); newGoods.setUnit(goods.getUnit()); newGoods.setWeight(goods.getWeight()); newGoods.setParameterValues(JSONArray.toJSONString(paraList)); newGoods.setProductCategoryId(goods.getCategoryId().get(goods.getCategoryId().size() - 1)); newGoods.setPrice(goods.getPrice()); if(goods.isGroupon()) { //TODO 之后活动变多后需要用位运算 newGoods.setCampaign(1); newGoods.setGrouponCount(goods.getGrouponCount()); } if(goods.isHasSpec()){ newGoods.setSpecificationItems(JSONObject.toJSONString(goods.getSpecificationGroup())); } String goodsSn = null; if (goods.getSn() == null) { goodsSn = snService.generate(SnEnum.GOODS); newGoods.setSn(goodsSn); newGoods.save(); } else { newGoods.setSn(goods.getSn()); newGoods.update(); } if (goods.isHasSpec()) { int defaultIdx = goods.getProductDefault(); int curidx = 0; List products = new ArrayList<>(); for (GoodsSpecData goodsSpecData : specList) { Product product = new Product(); boolean defaultFlag = false; if (curidx == defaultIdx) { defaultFlag = true; } product.setIsDefault(defaultFlag); product.setPrice(goodsSpecData.getPrice()); if(goods.isGroupon()) { product.setGroupPrice(goodsSpecData.getGroupPrice()); }else { product.setGroupPrice(BigDecimal.ZERO); } product.setCost(goodsSpecData.getCost()); product.setEnable(goodsSpecData.getEnable()); product.setSpecificationValues(goodsSpecData.getSpecIds()); if (goodsSn != null) { product.setGoodsSn(goodsSn); } if (goodsSpecData.getSn() == null) { String productSn = snService.generate(SnEnum.PRODUCT); product.setSn(productSn); }else { product.setSn(goodsSpecData.getSn()); } product.setStock(goodsSpecData.getStock()); products.add(product); curidx ++; } if (goods.getSn() != null) { Db.batchUpdate(products, products.size()); } else { Db.batchSave(products, products.size()); } newGoods.setProductList(products); }else { Product product = new Product(); product.setIsDefault(true); product.setPrice(goods.getPrice()); product.setCost(goods.getCost()); product.setStock(goods.getStock()); product.setEnable(true); if (goods.getSn() != null) { product.setGoodsSn(goods.getSn()); String productSn = snService.generate(SnEnum.PRODUCT); product.setSn(productSn); product.save(); } else { GoodsSpecData goodsSpecData = specList.get(0); String productSn = goodsSpecData.getSn(); product.setSn(productSn); product.update(); } newGoods.setProductList(new ArrayList(){ {add(product);} }); } return newGoods; } @Override @JFinalTx public R batchShelf(String[] ids) { if(ids == null){ return R.error("请选择商品"); } Filter filter = new Filter(); filter.setProperty("sn"); filter.setOperator(Filter.Operator.in); filter.setValue(ids); List goodsList = this.dao.findByFilter(filter); if(goodsList == null){ return R.error(); } for(Goods good : goodsList){ good.setIsMarketable(true); } Db.batchUpdate(goodsList,goodsList.size()); return R.ok(); } @Override @JFinalTx public R batchObtained(String[] ids) { if(ids == null){ return R.error("请选择商品"); } Filter filter = new Filter(); filter.setProperty("sn"); filter.setOperator(Filter.Operator.in); filter.setValue(ids); List goodsList = this.dao.findByFilter(filter); if(goodsList == null){ return R.error(); } for(Goods good : goodsList){ good.setIsMarketable(false); } Db.batchUpdate(goodsList,goodsList.size()); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/service/impl/GrouponServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.dao.GrouponDao; import io.sdb.model.Groupon; import io.sdb.service.GrouponService; import org.springframework.stereotype.Service; @Service public class GrouponServiceImpl extends BaseServiceImpl implements GrouponService { } ================================================ FILE: src/main/java/io/sdb/service/impl/GrouponTeamServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.dao.GrouponTeamDao; import io.sdb.model.GrouponTeam; import io.sdb.service.GrouponTeamService; import org.springframework.stereotype.Service; @Service public class GrouponTeamServiceImpl extends BaseServiceImpl implements GrouponTeamService { } ================================================ FILE: src/main/java/io/sdb/service/impl/LogisticsServiceImpl.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service.impl; import com.alibaba.fastjson.JSON; import io.sdb.common.entity.kuaidi100.TaskRequest; import io.sdb.common.entity.kuaidi100.TaskResponse; import io.sdb.common.utils.HttpRequest; import io.sdb.config.Kuaidi100Config; import io.sdb.dao.LogisticsDao; import io.sdb.model.Logistics; import io.sdb.service.LogisticsService; import io.sdb.service.impl.BaseServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashMap; @Service("sysLogisticsService") @Slf4j public class LogisticsServiceImpl extends BaseServiceImpl implements LogisticsService { @Autowired Kuaidi100Config kuaidi100Config; @Override public Boolean subscribe(String tradeNo, String code) { TaskRequest req = new TaskRequest(); req.setCompany(code); req.setNumber(tradeNo); req.getParameters().put("callbackurl", kuaidi100Config.getNotifyUrl()); req.setKey(kuaidi100Config.getKuaidi100Key()); String kuaidi100PollUrl = kuaidi100Config.getKuaidi100PollUrl(); HashMap p = new HashMap(); p.put("schema", "json"); p.put("param", JSON.toJSONString(req)); try { String ret = HttpRequest.postData(kuaidi100PollUrl, p); TaskResponse resp = JSON.parseObject(ret, TaskResponse.class); if(resp.getResult() == true){ log.info("订阅成功 订单号 = " + tradeNo); Logistics curLogistics = Logistics.dao.findById(tradeNo); if(curLogistics == null){ Logistics logistics = new Logistics(); logistics.setCheckState(1); logistics.setTrackingNo(tradeNo); logistics.save(); }else { curLogistics.setCheckState(1); curLogistics.update(); } return true; }else{ log.info("订阅失败 订单号 = " + tradeNo); Logistics curLogistics = Logistics.dao.findById(tradeNo); if(curLogistics == null){ Logistics logistics = new Logistics(); logistics.setCheckState(2); logistics.setTrackingNo(tradeNo); logistics.save(); }else { curLogistics.setCheckState(2); curLogistics.update(); } return false; } } catch (Exception e) { e.printStackTrace(); return false; } } } ================================================ FILE: src/main/java/io/sdb/service/impl/MailService.java ================================================ package io.sdb.service.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @Service public class MailService { @Autowired private JavaMailSender mailSender; @Value("${spring.mail.username}") private String from; @Async public void sendMail(String title, String content, String email) { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setSubject(title); message.setTo(email); message.setText(content); mailSender.send(message); } } ================================================ FILE: src/main/java/io/sdb/service/impl/OrderDetailServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.dao.OrderDetailDao;; import io.sdb.model.OrderDetail; import io.sdb.service.OrderDetailService; import org.springframework.stereotype.Service; @Service public class OrderDetailServiceImpl extends BaseServiceImpl implements OrderDetailService { } ================================================ FILE: src/main/java/io/sdb/service/impl/OrderMasterServiceImpl.java ================================================ package io.sdb.service.impl; import cn.hutool.core.date.DateUtil; import com.jfinal.kit.Kv; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.SqlPara; import io.sdb.common.annotation.JFinalTx; import io.sdb.common.entity.Filter; import io.sdb.common.entity.Order; import io.sdb.common.exception.RRException; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.Query; import io.sdb.config.OrderProperties; import io.sdb.dao.OrderMasterDao; import io.sdb.dao.SnDao; import io.sdb.dto.CartDTO; import io.sdb.dto.OrderDTO; import io.sdb.enums.*; import io.sdb.model.*; import io.sdb.service.LogisticsService; import io.sdb.service.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service @Slf4j public class OrderMasterServiceImpl extends BaseServiceImpl implements OrderMasterService { private final Integer GROUPON_EXPIRE_DAY = 2; @Autowired ProductService productService; @Autowired SnService snService; @Autowired PayService payService; @Autowired OrderDetailService orderDetailService; @Autowired OrderMasterService orderMasterService; @Autowired LogisticsService sysLogisticsService; @Autowired OrderProperties orderProperties; @Autowired GrouponService grouponService; @Autowired GrouponTeamService grouponTeamService; @Autowired GoodsService goodsService; @Autowired SnDao snDao; @Override public PageUtils queryPage(Map params) { String searchKey = (String)params.get("searchKey"); Query query = new Query(params); List filters = new ArrayList<>(); if (!StringUtils.isBlank(searchKey)) { Filter filter = new Filter(); filter.setProperty("order_id"); filter.setValue(searchKey); filter.setOperator(Filter.Operator.like); filters.add(filter); } Order order = new Order(); order.setProperty("create_date"); order.setDirection(Order.Direction.desc); Page pr = this.paginate(query.getCurrPage(), query.getLimit(), filters, order); return new PageUtils(pr); } @Override @JFinalTx public OrderDTO create(OrderDTO orderDTO) { String orderId = snService.generate(SnEnum.ORDER_MASTER); BigDecimal orderAmount = new BigDecimal(BigInteger.ZERO); //1. 查询商品(数量, 价格) for (OrderDetail orderDetail: orderDTO.getOrderDetailList()) { // Product ProductInfo = productService.findById(orderDetail.getProductId()); // if (ProductInfo == null) { // throw new RRException(ResultEnum.PRODUCT_NOT_EXIST); // } //2. 计算订单总价 if (orderDTO.getGroupon() == GeneralEnum.TRUE.getCode()) { orderAmount = orderDetail.getGroupPrice() .multiply(new BigDecimal(orderDetail.getProductQuantity())) .add(orderAmount); } else{ orderAmount = orderDetail.getProductPrice() .multiply(new BigDecimal(orderDetail.getProductQuantity())) .add(orderAmount); } //订单详情入库 String orderDetailId = snService.generate(SnEnum.ORDER_DETAIL); orderDetail.setDetailId(orderDetailId); orderDetail.setOrderId(orderId); orderDetail.save(); } //3. 写入订单数据库(orderMaster和orderDetail) OrderMaster orderMaster = new OrderMaster(); orderDTO.setOrderId(orderId); BeanUtils.copyProperties(orderDTO, orderMaster); orderMaster.setOrderAmount(orderAmount); orderMaster.setOrderStatus(OrderStatusEnum.NEW.getCode()); orderMaster.setPayStatus(PayStatusEnum.WAIT.getCode()); orderMaster.setRemark(orderDTO.getRemark()); orderMaster.save(); orderDTO.setOrderAmount(orderAmount); orderDTO.setCreateTime(new Date()); orderDTO.setUpdateTime(new Date()); //4. 扣库存 List cartDTOList = orderDTO.getOrderDetailList().stream().map(e -> new CartDTO(e.getProductId(), e.getProductQuantity()) ).collect(Collectors.toList()); productService.decreaseStock(cartDTOList); return orderDTO; } @Override @JFinalTx public OrderMaster cancel(String orderId) { OrderMaster orderMaster = orderMasterService.findById(orderId); if(orderMaster == null) { throw new RRException(ResultEnum.ORDER_NOT_EXIST); } orderMaster.setOrderStatus(OrderStatusEnum.CANCEL.getCode()); orderMaster.setPayStatus(PayStatusEnum.REFUND.getCode()); OrderDetail query = new OrderDetail(); query.setOrderId(orderMaster.getOrderId()); List orderDetails = orderDetailService.findByModel(query); List cartDTOList = orderDetails.stream().map(item -> { CartDTO cartDTO = new CartDTO(item.getProductId(), item.getProductQuantity()); return cartDTO; }).collect(Collectors.toList()); productService.creaseStock(cartDTOList); orderMaster.update(); if (orderProperties.getRefund()) { payService.refund(orderId); } return orderMaster; } @Override public Boolean updateByGrouponId(String grouponId,Integer status) { SqlPara sqlPara = Db.getSqlPara("order.updateByGrouponId", Kv.by("orderStatus", status).set("grouponId", grouponId)); return Db.update(sqlPara) > 0; } @Override @JFinalTx public OrderMaster paid(OrderMaster orderMaster) { //判断订单状态 if (!orderMaster.getOrderStatus().equals(OrderStatusEnum.NEW.getCode())) { log.error("【订单支付完成】订单状态不正确, orderId={}, orderStatus={}", orderMaster.getOrderId(), orderMaster.getOrderStatus()); throw new RRException(ResultEnum.ORDER_STATUS_ERROR); } //判断支付状态 if (!orderMaster.getPayStatus().equals(PayStatusEnum.WAIT.getCode())) { return orderMaster; } boolean grouponSucc = false; if (orderMaster.getGroupon() == GeneralEnum.TRUE.getCode()) { orderMaster.setOrderStatus(OrderStatusEnum.GROUPON_PENDING.getCode()); if (StringUtils.isBlank(orderMaster.getGrouponId())) { String sn = snDao.generate(SnEnum.GROUPON); Groupon groupon = new Groupon(); OrderDetail queryOrderDetail = new OrderDetail(); queryOrderDetail.setOrderId(orderMaster.getOrderId()); OrderDetail orderDetail = orderDetailService.findFirstByModel(queryOrderDetail); String productId = orderDetail.getProductId(); Product product = productService.findById(productId); groupon.setGoodsId(product.getGoodsSn()); groupon.setId(sn); groupon.setCreateDate(new Date()); groupon.setUpdateDate(new Date()); groupon.setCount(orderMaster.getGrouponCount()); groupon.setStatus(GrouponStatusEnum.PENDING.getCode()); Date expireTime = DateUtil.offsetDay(new Date(), GROUPON_EXPIRE_DAY); groupon.setExpireDate(expireTime); grouponService.insert(groupon); GrouponTeam grouponTeam = new GrouponTeam(); grouponTeam.setCaptain(GeneralEnum.TRUE.getCode()); grouponTeam.setGrouponId(sn); grouponTeam.setCreateDate(new Date()); grouponTeam.setUpdateDate(new Date()); grouponTeam.setUserId(orderMaster.getBuyerId()); grouponTeamService.insert(grouponTeam); orderMaster.setGrouponId(sn); }else { GrouponTeam grouponTeam = new GrouponTeam(); grouponTeam.setCaptain(GeneralEnum.FALSE.getCode()); grouponTeam.setGrouponId(orderMaster.getGrouponId()); grouponTeam.setUpdateDate(new Date()); grouponTeam.setUserId(orderMaster.getBuyerId()); grouponTeamService.insert(grouponTeam); Filter filter = new Filter(); filter.setProperty("groupon_id"); filter.setValue(orderMaster.getGrouponId()); filter.setOperator(Filter.Operator.eq); List grouponTeamList = grouponTeamService.findByFilter(filter); if (grouponTeamList.size() >= orderMaster.getGrouponCount()) { Groupon groupon = new Groupon(); groupon.setId(orderMaster.getGrouponId()); groupon.setStatus(GrouponStatusEnum.OPEN.getCode()); groupon.setUpdateDate(new Date()); groupon.update(); orderMaster.setOrderStatus(OrderStatusEnum.GROUPON_SUCC.getCode()); grouponSucc = true; } } } //修改支付状态 orderMaster.setPayStatus(PayStatusEnum.SUCCESS.getCode()); orderMaster.setUpdateDate(new Date()); if (!orderMaster.update()) { log.error("【订单支付完成】更新失败, orderMaster={}", orderMaster); throw new RRException(ResultEnum.ORDER_UPDATE_FAIL); } if (grouponSucc) { this.updateByGrouponId(orderMaster.getGrouponId(), OrderStatusEnum.GROUPON_SUCC.getCode()); } return orderMaster; } @Override @JFinalTx public Boolean shipping(OrderDTO orderDTO, String deliveryCode) { OrderMaster orderMaster = new OrderMaster(); orderMaster.setOrderId(orderDTO.getOrderId()); orderMaster.setTrackingNumber(orderDTO.getTrackingNumber()); orderMaster.setDeliveryCode(orderDTO.getDeliveryCode()); orderMaster.setOrderStatus(OrderStatusEnum.SHIPPING.getCode()); orderMaster.update(); if(deliveryCode != null) { sysLogisticsService.subscribe(orderMaster.getTrackingNumber(), deliveryCode); } return true; } @Override @JFinalTx public Boolean delete(String orderId) { OrderMaster mpara = new OrderMaster(); mpara.setOrderId(orderId); this.deleteByModel(mpara); OrderDetail para = new OrderDetail(); para.setOrderId(orderId); orderDetailService.deleteByModel(para); return true; } @Override public BigDecimal getTodayTotalSale() { List orderMasterList = this.getTodayTotalOrders(); BigDecimal totalSale = BigDecimal.ZERO; for (OrderMaster orderMaster:orderMasterList ) { totalSale.add(orderMaster.getOrderAmount()); } return totalSale; } @Override public List getTodayTotalOrders() { List filterList = new ArrayList<>(); Filter start = new Filter(); start.setOperator(Filter.Operator.ge); start.setProperty("create_date"); Date todayBegin = DateUtil.beginOfDay(new Date()); start.setValue(todayBegin); filterList.add(start); Filter end = new Filter(); end.setOperator(Filter.Operator.le); end.setProperty("create_date"); Date todayEnd = DateUtil.endOfDay(new Date()); end.setValue(todayEnd); filterList.add(end); Filter payFilter = new Filter(); payFilter.setOperator(Filter.Operator.eq); payFilter.setProperty("pay_status"); payFilter.setValue(PayStatusEnum.SUCCESS); filterList.add(payFilter); List orderMasterList = this.findByFilters(filterList); return orderMasterList; } @Override public List getTodayOrders() { List filterList = new ArrayList<>(); Filter start = new Filter(); start.setOperator(Filter.Operator.ge); start.setProperty("create_date"); Date todayBegin = DateUtil.beginOfDay(new Date()); start.setValue(todayBegin); filterList.add(start); Filter end = new Filter(); end.setOperator(Filter.Operator.le); end.setProperty("create_date"); Date todayEnd = DateUtil.endOfDay(new Date()); end.setValue(todayEnd); filterList.add(end); Filter orderFilter = new Filter(); orderFilter.setOperator(Filter.Operator.ne); orderFilter.setProperty("order_status"); orderFilter.setValue(OrderStatusEnum.CANCEL); filterList.add(orderFilter); List orderMasterList = this.findByFilters(filterList); return orderMasterList; } } ================================================ FILE: src/main/java/io/sdb/service/impl/PayServiceImpl.java ================================================ package io.sdb.service.impl; import com.lly835.bestpay.enums.BestPayTypeEnum; import com.lly835.bestpay.model.PayRequest; import com.lly835.bestpay.model.PayResponse; import com.lly835.bestpay.model.RefundRequest; import com.lly835.bestpay.model.RefundResponse; import com.lly835.bestpay.service.BestPayService; import com.lly835.bestpay.service.impl.BestPayServiceImpl; import com.lly835.bestpay.utils.JsonUtil; import io.sdb.common.exception.RRException; import io.sdb.config.WechatPayConfig; import io.sdb.dto.OrderDTO; import io.sdb.enums.ResultEnum; import io.sdb.model.OrderMaster; import io.sdb.service.OrderMasterService; import io.sdb.service.PayService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; @Service @Slf4j public class PayServiceImpl implements PayService { @Autowired OrderMasterService orderService; @Autowired BestPayService bestPayService; @Override public PayResponse create(OrderDTO orderDTO) { PayRequest payRequest = new PayRequest(); payRequest.setOpenid(orderDTO.getBuyerOpenid()); payRequest.setOrderAmount(orderDTO.getOrderAmount().doubleValue()); payRequest.setOrderId(orderDTO.getOrderId()); payRequest.setOrderName("sdb"); payRequest.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5); PayResponse payResponse = bestPayService.pay(payRequest); log.info("[微信支付] payResponse = {}", payResponse); return payResponse; } @Override public OrderMaster refund(String orderId) { OrderMaster orderMaster = orderService.findById(orderId); RefundRequest refundRequest = new RefundRequest(); refundRequest.setOrderAmount(orderMaster.getOrderAmount().doubleValue()); refundRequest.setOrderId(orderMaster.getOrderId()); refundRequest.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5); RefundResponse refundResponse = bestPayService.refund(refundRequest); orderMaster.setRefundTradeNo(refundResponse.getOutRefundNo()); orderMaster.setUpdateDate(new Date()); orderMaster.update(); return orderMaster; } @Override public PayResponse notify(String notifyData) { //1. 验证签名 //2. 支付的状态 //3. 支付金额 //4. 支付人(下单人 == 支付人) PayResponse payResponse = bestPayService.asyncNotify(notifyData); log.info("【微信支付】异步通知, payResponse={}", JsonUtil.toJson(payResponse)); //查询订单 OrderMaster orderMaster = orderService.findById(payResponse.getOrderId()); //判断订单是否存在 if (orderMaster == null) { log.error("【微信支付】异步通知, 订单不存在, orderId={}", payResponse.getOrderId()); throw new RRException(ResultEnum.ORDER_NOT_EXIST); } //判断金额是否一致(0.10 0.1) if (payResponse.getOrderAmount() != orderMaster.getOrderAmount().doubleValue()) { log.error("【微信支付】异步通知, 订单金额不一致, orderId={}, 微信通知金额={}, 系统金额={}", payResponse.getOrderId(), payResponse.getOrderAmount(), orderMaster.getOrderAmount()); throw new RRException(ResultEnum.WXPAY_NOTIFY_MONEY_VERIFY_ERROR); } orderMaster.setPayTradeNo(payResponse.getOutTradeNo()); //修改订单的支付状态 orderService.paid(orderMaster); return payResponse; } } ================================================ FILE: src/main/java/io/sdb/service/impl/ProductCategoryServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.common.utils.R; import io.sdb.dao.ProductCategoryDao; import io.sdb.model.Goods; import io.sdb.model.ProductCategory; import io.sdb.model.Specification; import io.sdb.service.GoodsService; import io.sdb.service.ProductCategoryService; import io.sdb.service.SpecificationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class ProductCategoryServiceImpl extends BaseServiceImpl implements ProductCategoryService { @Autowired private SpecificationService specificationService; @Autowired private GoodsService goodsService; @Override public List queryListOrder() { return this.dao.queryListOrder(); } @Override public List queryListByParentId(Long parentId) { ProductCategory productCategory = new ProductCategory(); productCategory.setParentId(parentId); return this.dao.findByModel(productCategory); } @Override public R delete(Long productCategoryId) { //判断是否有子类目 List productCategoryList = queryListByParentId(productCategoryId); if(productCategoryList!=null && productCategoryList.size() > 0) { return R.error("请先删除子类目"); } //判断是否有规格 List specificationList = specificationService.queryListByCategoryId(productCategoryId); if(specificationList!=null && specificationList.size()>0){ return R.error("请先删除规格"); } //判断是否有商品 Goods goods = new Goods(); goods.setProductCategoryId(productCategoryId); List goodsList = goodsService.findByModel(goods); if(goodsList!=null && goodsList.size()>0){ return R.error("请删除商品"); } boolean isOk = this.dao.deleteById(productCategoryId); if(isOk){ return R.ok(); }else { return R.error("删除类目失败"); } } @Override public R save(ProductCategory productCategory) { if (productCategory.getParentId() == null) { productCategory.setTreePath(","+productCategory.getId()+","); } else { ProductCategory parent = this.findById(productCategory.getParentId()); productCategory.setTreePath(parent.getTreePath() + productCategory.getId() + ","); } productCategory.save(); return R.ok(); } } ================================================ FILE: src/main/java/io/sdb/service/impl/ProductServiceImpl.java ================================================ package io.sdb.service.impl; import com.jfinal.kit.Kv; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.SqlPara; import io.sdb.common.annotation.JFinalTx; import io.sdb.common.exception.RRException; import io.sdb.dao.ProductDao; import io.sdb.dto.CartDTO; import io.sdb.dto.ProductDTO; import io.sdb.enums.ResultEnum; import io.sdb.model.Goods; import io.sdb.model.Product; import io.sdb.common.utils.RecordUtils; import io.sdb.service.GoodsService; import io.sdb.service.ProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class ProductServiceImpl extends BaseServiceImpl implements ProductService { @Autowired GoodsService goodsService; @Override @JFinalTx public void decreaseStock(List cartDTOList) { //TODO 后续需要优化,处理并发 for (CartDTO cartDTO: cartDTOList) { Product productInfo = this.findById(cartDTO.getProductId()); if (productInfo == null) { throw new RRException(ResultEnum.PRODUCT_NOT_EXIST); } Integer result = productInfo.getStock() - cartDTO.getQuantity(); if (result < 0) { throw new RRException(ResultEnum.PRODUCT_STOCK_ERROR); } productInfo.setStock(result); productInfo.update(); } } @Override public void creaseStock(List cartDTOList) { //TODO 后续需要优化,处理并发 for (CartDTO cartDTO: cartDTOList) { Product productInfo = this.findById(cartDTO.getProductId()); if (productInfo == null) { throw new RRException(ResultEnum.PRODUCT_NOT_EXIST); } Integer result = productInfo.getStock() + cartDTO.getQuantity(); productInfo.setStock(result); productInfo.update(); } } @Override public Goods getGoods(String productId) { Product product = this.findById(productId); Goods goods = goodsService.findById(product.getGoodsSn()); return goods; } @Override public List listDetailByProductIds(String productIds) { String[] productIdArr = productIds.split(","); SqlPara sqlPara = Db.getSqlPara("product.listDetailByProductIds", Kv.by("productIds", productIdArr)); List recordList = Db.find(sqlPara); List productDTOList = RecordUtils.converModel(recordList, ProductDTO.class); return productDTOList; } } ================================================ FILE: src/main/java/io/sdb/service/impl/ReceiverServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.dao.ReceiverDao; import io.sdb.model.Receiver; import io.sdb.service.ReceiverService; import org.springframework.stereotype.Service; import java.util.Date; @Service public class ReceiverServiceImpl extends BaseServiceImpl implements ReceiverService { @Override public Receiver findDefault(String userId) { Receiver qr = new Receiver(); qr.setMemberId(userId); qr.setIsDefault(true); Receiver receiver = this.findFirstByModel(qr); return receiver; } } ================================================ FILE: src/main/java/io/sdb/service/impl/ScheduleJobLogServiceImpl.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service.impl; import com.jfinal.plugin.activerecord.Page; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.Query; import io.sdb.common.entity.Filter; import io.sdb.dao.ScheduleJobLogDao; import io.sdb.model.ScheduleJobLog; import io.sdb.service.ScheduleJobLogService; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Map; @Service("scheduleJobLogService") public class ScheduleJobLogServiceImpl extends BaseServiceImpl implements ScheduleJobLogService { @Override public PageUtils queryPage(Map params) { String jobId = (String)params.get("jobId"); List filters = new ArrayList<>(); if (!StringUtils.isBlank(jobId)) { Filter filter = new Filter(); filter.setProperty("job_id"); filter.setValue(jobId); filter.setOperator(Filter.Operator.like); filters.add(filter); } Query query = new Query(params); Page pr = this.paginate(query.getCurrPage(), query.getLimit(), filters, query.getOrder()); return new PageUtils(pr); } } ================================================ FILE: src/main/java/io/sdb/service/impl/ScheduleJobServiceImpl.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service.impl; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; import io.sdb.common.annotation.JFinalTx; import io.sdb.common.utils.Constant; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.Query; import io.sdb.common.entity.Filter; import io.sdb.dao.ScheduleJobDao; import io.sdb.model.ScheduleJob; import io.sdb.service.ScheduleJobService; import io.sdb.job.utils.ScheduleUtils; import org.apache.commons.lang.StringUtils; import org.quartz.CronTrigger; import org.quartz.Scheduler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import java.util.*; @Service("scheduleJobService") public class ScheduleJobServiceImpl extends BaseServiceImpl implements ScheduleJobService { @Autowired private Scheduler scheduler; @Autowired ActiveRecordPlugin activeRecordPlugin; /** * 项目启动时,初始化定时器 */ @PostConstruct public void init(){ List scheduleJobList = this.findAll(); for(ScheduleJob scheduleJob : scheduleJobList){ CronTrigger cronTrigger = ScheduleUtils.getCronTrigger(scheduler, scheduleJob.getJobId()); //如果不存在,则创建 if(cronTrigger == null) { ScheduleUtils.createScheduleJob(scheduler, scheduleJob); }else { ScheduleUtils.updateScheduleJob(scheduler, scheduleJob); } } } @Override public PageUtils queryPage(Map params) { String beanName = (String)params.get("beanName"); List filters = new ArrayList<>(); if(!StringUtils.isBlank(beanName)) { Filter filter = new Filter(); filter.setProperty("bean_name"); filter.setOperator(Filter.Operator.like); filter.setValue(beanName); filters.add(filter); } Query query = new Query(params); Page pr = this.paginate(query.getCurrPage(), query.getLimit(), filters, query.getOrder()); return new PageUtils(pr); } @Override @JFinalTx public void save(ScheduleJob scheduleJob) { scheduleJob.setCreateTime(new Date()); scheduleJob.setStatus(Constant.ScheduleStatus.NORMAL.getValue()); scheduleJob.save(); ScheduleUtils.createScheduleJob(scheduler, scheduleJob); } @Override @JFinalTx public boolean update(ScheduleJob scheduleJob) { ScheduleUtils.updateScheduleJob(scheduler, scheduleJob); return scheduleJob.update(); } @Override @JFinalTx public void deleteBatch(Long[] jobIds) { for(Long jobId : jobIds){ ScheduleUtils.deleteScheduleJob(scheduler, jobId); } //删除数据 this.dao.deleteBatch(jobIds); } @Override public int updateBatch(Long[] jobIds, int status){ Map map = new HashMap<>(); map.put("list", jobIds); map.put("status", status); List scheduleJobList = new ArrayList<>(); for (Long jobId : jobIds) { ScheduleJob scheduleJob = new ScheduleJob(); scheduleJob.setJobId(jobId); scheduleJob.setStatus(status); scheduleJobList.add(scheduleJob); } Db.batchUpdate(scheduleJobList, scheduleJobList.size()); return 1; } @Override @JFinalTx public void run(Long[] jobIds) { for(Long jobId : jobIds){ ScheduleUtils.run(scheduler, this.findById(jobId)); } } @Override @JFinalTx public void pause(Long[] jobIds) { for(Long jobId : jobIds){ ScheduleUtils.pauseJob(scheduler, jobId); } updateBatch(jobIds, Constant.ScheduleStatus.PAUSE.getValue()); } @Override @JFinalTx public void resume(Long[] jobIds) { for(Long jobId : jobIds){ ScheduleUtils.resumeJob(scheduler, jobId); } updateBatch(jobIds, Constant.ScheduleStatus.NORMAL.getValue()); } } ================================================ FILE: src/main/java/io/sdb/service/impl/ShiroServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.common.utils.Constant; import io.sdb.model.SysMenu; import io.sdb.model.SysUser; import io.sdb.model.SysUserToken; import io.sdb.service.ShiroService; import io.sdb.service.SysMenuService; import io.sdb.service.SysUserService; import io.sdb.service.SysUserTokenService; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; @Service public class ShiroServiceImpl implements ShiroService { @Autowired private SysMenuService sysMenuService; @Autowired private SysUserService sysUserService; @Autowired private SysUserTokenService sysUserTokenService; @Override public Set getUserPermissions(long userId) { List permsList; //系统管理员,拥有最高权限 if(userId == Constant.SUPER_ADMIN){ List menuList = sysMenuService.findAll(); permsList = new ArrayList<>(menuList.size()); for(SysMenu menu : menuList){ permsList.add(menu.getPerms()); } }else{ permsList = sysUserService.queryAllPerms(userId); } //用户权限列表 Set permsSet = new HashSet<>(); for(String perms : permsList){ if(StringUtils.isBlank(perms)){ continue; } permsSet.addAll(Arrays.asList(perms.trim().split(","))); } return permsSet; } @Override public SysUserToken queryByToken(String token) { SysUserToken sysUserToken = new SysUserToken(); sysUserToken.setToken(token); return sysUserTokenService.findFirstByModel(sysUserToken); } @Override public SysUser queryUser(Long userId) { return sysUserService.findById(userId); } } ================================================ FILE: src/main/java/io/sdb/service/impl/SnServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.dao.SnDao; import io.sdb.enums.SnEnum; import io.sdb.model.Sn; import io.sdb.service.SnService; import org.springframework.stereotype.Service; @Service public class SnServiceImpl extends BaseServiceImpl implements SnService { @Override public String generate(SnEnum type) { return this.dao.generate(type); } } ================================================ FILE: src/main/java/io/sdb/service/impl/SpecificationServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.common.entity.Filter; import io.sdb.common.utils.R; import io.sdb.dao.SpecificationDao; import io.sdb.model.Specification; import io.sdb.service.SpecificationService; import org.springframework.stereotype.Service; import java.util.List; @Service public class SpecificationServiceImpl extends BaseServiceImpl implements SpecificationService { @Override public List queryListByCategoryId(Long categoryId) { Specification specification = new Specification(); specification.setCategoryId(categoryId); return this.dao.findByModel(specification); } @Override public List queryListByOrder() { return this.findByFilter(Filter.isNull("parent_id")); } @Override public R delete(Long id) { Filter filter = new Filter(); filter.setProperty("parent_id"); filter.setOperator(Filter.Operator.eq); filter.setValue(id); List specificationList = this.dao.findByFilter(filter); if(specificationList!=null && specificationList.size()>0){ return R.error("请先删除下级规格"); } boolean bool = this.dao.deleteById(id); if(bool){ return R.ok(); } return R.error(); } @Override public R save(Specification specification) { boolean bool = specification.save(); if(bool){ return R.ok(); } return R.error(); } } ================================================ FILE: src/main/java/io/sdb/service/impl/SysCaptchaServiceImpl.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service.impl; import com.google.code.kaptcha.Producer; import io.sdb.common.exception.RRException; import io.sdb.common.utils.DateUtils; import io.sdb.dao.SysCaptchaDao; import io.sdb.model.SysCaptcha; import io.sdb.service.SysCaptchaService; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.awt.image.BufferedImage; import java.util.Date; /** * 验证码 * * @author Mark sunlightcs@gmail.com * @since 2.0.0 2018-02-10 */ @Service("sysCaptchaService") public class SysCaptchaServiceImpl extends BaseServiceImpl implements SysCaptchaService { @Autowired private Producer producer; @Override public BufferedImage getCaptcha(String uuid) { if(StringUtils.isBlank(uuid)){ throw new RRException("uuid不能为空"); } //生成文字验证码 String code = producer.createText(); SysCaptcha captcha = new SysCaptcha(); captcha.setUuid(uuid); captcha.setCode(code); //5分钟后过期 captcha.setExpireTime(DateUtils.addDateMinutes(new Date(), 5)); captcha.save(); return producer.createImage(code); } @Override public boolean validate(String uuid, String code) { SysCaptcha qSysCaptcha = new SysCaptcha(); qSysCaptcha.setUuid(uuid); SysCaptcha captcha = this.dao.findFirstByModel(qSysCaptcha); if(captcha == null){ return false; } //删除验证码 captcha.delete(); if(captcha.getCode().equalsIgnoreCase(code) && captcha.getExpireTime().getTime() >= System.currentTimeMillis()){ return true; } return false; } } ================================================ FILE: src/main/java/io/sdb/service/impl/SysConfigServiceImpl.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service.impl; import com.google.gson.Gson; import com.jfinal.kit.Kv; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.SqlPara; import io.sdb.common.annotation.JFinalTx; import io.sdb.common.exception.RRException; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.Query; import io.sdb.common.entity.Filter; import io.sdb.dao.SysConfigDao; import io.sdb.model.SysConfig; import io.sdb.sys.redis.SysConfigRedis; import io.sdb.service.SysConfigService; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Map; @Service("sysConfigService") public class SysConfigServiceImpl extends BaseServiceImpl implements SysConfigService { @Autowired private SysConfigRedis sysConfigRedis; @Override public PageUtils queryPage(Map params) { String paramKey = (String)params.get("paramKey"); List filters = new ArrayList<>(); if(!StringUtils.isBlank(paramKey)) { Filter filter = new Filter(); filter.setProperty("param_key"); filter.setOperator(Filter.Operator.like); filter.setValue(paramKey); filters.add(filter); } Filter filter = new Filter(); filter.setProperty("status"); filter.setOperator(Filter.Operator.eq); filter.setValue(1); filters.add(filter); Query query = new Query(params); Page pr = this.paginate(query.getCurrPage(), query.getLimit(), filters, query.getOrder()); return new PageUtils(pr); } @Override @JFinalTx public void save(SysConfig config) { config.save(); sysConfigRedis.saveOrUpdate(config); } @Override @JFinalTx public boolean update(SysConfig config) { boolean updateSucc = config.update(); sysConfigRedis.saveOrUpdate(config); return updateSucc; } @Override @JFinalTx public void updateValueByKey(String key, String value) { SqlPara sqlPara = Db.getSqlPara("sysConfig.updateValueByKey", Kv.by("paramValue", value).set("paramKey", key)); Db.update(sqlPara); sysConfigRedis.delete(key); } @Override @JFinalTx public void deleteBatch(Long[] ids) { for(Long id : ids){ SysConfig config = this.findById(id); sysConfigRedis.delete(config.getParamKey()); } this.dao.deleteBatch(ids); } @Override public String getValue(String key) { SysConfig config = sysConfigRedis.get(key); if(config == null){ config = new SysConfig(); config.setParamKey(key); config = this.findFirstByModel(config); sysConfigRedis.saveOrUpdate(config); } return config == null ? null : config.getParamValue(); } @Override public T getConfigObject(String key, Class clazz) { String value = getValue(key); if(StringUtils.isNotBlank(value)){ return new Gson().fromJson(value, clazz); } try { return clazz.newInstance(); } catch (Exception e) { throw new RRException("获取参数失败"); } } } ================================================ FILE: src/main/java/io/sdb/service/impl/SysLogServiceImpl.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service.impl; import com.jfinal.plugin.activerecord.Page; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.Query; import io.sdb.common.entity.Filter; import io.sdb.common.entity.Order; import io.sdb.dao.SysLogDao; import io.sdb.model.SysLog; import io.sdb.service.SysLogService; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Map; @Service("sysLogService") public class SysLogServiceImpl extends BaseServiceImpl implements SysLogService { @Override public PageUtils queryPage(Map params) { String key = (String)params.get("key"); List filters = new ArrayList<>(); if (!StringUtils.isBlank(key)) { Filter filter = new Filter(); filter.setProperty("username"); filter.setValue(key); filter.setOperator(Filter.Operator.like); filters.add(filter); } Order order = new Order(); order.setProperty("create_date"); order.setDirection(Order.Direction.desc); Query query = new Query(params); Page pr = this.paginate(query.getCurrPage(), query.getLimit(), filters, order); return new PageUtils(pr); } } ================================================ FILE: src/main/java/io/sdb/service/impl/SysMenuServiceImpl.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service.impl; import io.sdb.common.annotation.JFinalTx; import io.sdb.common.utils.Constant; import io.sdb.dao.SysMenuDao; import io.sdb.model.SysMenu; import io.sdb.model.SysRoleMenu; import io.sdb.service.SysMenuService; import io.sdb.service.SysRoleMenuService; import io.sdb.service.SysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service("sysMenuService") public class SysMenuServiceImpl extends BaseServiceImpl implements SysMenuService { @Autowired private SysUserService sysUserService; @Autowired private SysRoleMenuService sysRoleMenuService; @Override public List queryListParentId(Long parentId, List menuIdList) { List menuList = queryListParentId(parentId); if(menuIdList == null){ return menuList; } List userMenuList = new ArrayList<>(); for(SysMenu menu : menuList){ if(menuIdList.contains(menu.getMenuId())){ userMenuList.add(menu); } } return userMenuList; } @Override public List queryListParentId(Long parentId) { SysMenu sysMenu = new SysMenu(); sysMenu.setParentId(parentId); return this.dao.findByModel(sysMenu); } @Override public List queryNotButtonList() { return this.dao.queryNotButtonList(); } @Override public List getUserMenuList(Long userId) { //系统管理员,拥有最高权限 if(userId == Constant.SUPER_ADMIN){ return getAllMenuList(null); } //用户菜单列表 List menuIdList = sysUserService.queryAllMenuId(userId); return getAllMenuList(menuIdList); } @Override @JFinalTx public void delete(Long menuId){ //删除菜单 this.dao.deleteById(menuId); //删除菜单与角色关联 SysRoleMenu sysRoleMenu = new SysRoleMenu(); sysRoleMenu.setMenuId(menuId); sysRoleMenuService.deleteByModel(sysRoleMenu); } /** * 获取所有菜单列表 */ private List getAllMenuList(List menuIdList){ //查询根菜单列表 List menuList = queryListParentId(0L, menuIdList); //递归获取子菜单 getMenuTreeList(menuList, menuIdList); return menuList; } /** * 递归 */ private List getMenuTreeList(List menuList, List menuIdList){ List subMenuList = new ArrayList(); for(SysMenu entity : menuList){ //目录 if(entity.getType() == Constant.MenuType.CATALOG.getValue()){ entity.setList(getMenuTreeList(queryListParentId(entity.getMenuId(), menuIdList), menuIdList)); } subMenuList.add(entity); } return subMenuList; } } ================================================ FILE: src/main/java/io/sdb/service/impl/SysOssServiceImpl.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.service.impl; import com.jfinal.plugin.activerecord.Page; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.Query; import io.sdb.dao.SysOssDao; import io.sdb.model.SysOss; import io.sdb.service.SysOssService; import org.springframework.stereotype.Service; import java.util.Map; @Service("sysOssService") public class SysOssServiceImpl extends BaseServiceImpl implements SysOssService { @Override public PageUtils queryPage(Map params) { Query query = new Query(params); Page pr = this.paginate(query.getCurrPage(), query.getLimit()); return new PageUtils(pr); } } ================================================ FILE: src/main/java/io/sdb/service/impl/SysRoleMenuServiceImpl.java ================================================ package io.sdb.service.impl; import com.jfinal.plugin.activerecord.Db; import io.sdb.common.annotation.JFinalTx; import io.sdb.dao.SysRoleMenuDao; import io.sdb.model.SysRoleMenu; import io.sdb.service.SysRoleMenuService; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 角色与菜单对应关系 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年9月18日 上午9:44:35 */ @Service("sysRoleMenuService") public class SysRoleMenuServiceImpl extends BaseServiceImpl implements SysRoleMenuService { @Override @JFinalTx public void saveOrUpdate(Long roleId, List menuIdList) { //先删除角色与菜单关系 deleteBatch(new Long[]{roleId}); if(menuIdList.size() == 0){ return ; } //保存角色与菜单关系 List list = new ArrayList<>(menuIdList.size()); for(Long menuId : menuIdList){ SysRoleMenu sysRoleMenu = new SysRoleMenu(); sysRoleMenu.setMenuId(menuId); sysRoleMenu.setRoleId(roleId); list.add(sysRoleMenu); } Db.batchSave(list, list.size()); } @Override public List queryMenuIdList(Long roleId) { SysRoleMenu sysRoleMenu = new SysRoleMenu(); sysRoleMenu.setRoleId(roleId); List sysRoleMenuList = this.dao.findByModel(sysRoleMenu); List menuIdList = sysRoleMenuList.stream().map(item -> { return item.getMenuId(); }).collect(Collectors.toList()); return menuIdList; } @Override public boolean deleteBatch(Long[] roleIds){ return this.dao.deleteBatch(new String[]{"role_id"}, roleIds); } } ================================================ FILE: src/main/java/io/sdb/service/impl/SysRoleServiceImpl.java ================================================ package io.sdb.service.impl; import com.jfinal.plugin.activerecord.Page; import io.sdb.common.annotation.JFinalTx; import io.sdb.common.exception.RRException; import io.sdb.common.utils.Constant; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.Query; import io.sdb.common.entity.Filter; import io.sdb.dao.SysRoleDao; import io.sdb.model.SysRole; import io.sdb.service.SysRoleMenuService; import io.sdb.service.SysRoleService; import io.sdb.service.SysUserRoleService; import io.sdb.service.SysUserService; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 角色 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年9月18日 上午9:45:12 */ @Service("sysRoleService") public class SysRoleServiceImpl extends BaseServiceImpl implements SysRoleService { @Autowired private SysRoleMenuService sysRoleMenuService; @Autowired private SysUserService sysUserService; @Autowired private SysUserRoleService sysUserRoleService; @Override public PageUtils queryPage(Map params) { String roleName = (String)params.get("roleName"); Long createUserId = (Long)params.get("createUserId"); List filters = new ArrayList<>(); if(createUserId != null) { Filter filter = new Filter(); filter.setProperty("create_user_id"); filter.setValue(createUserId); filter.setOperator(Filter.Operator.eq); filters.add(filter); } if (!StringUtils.isBlank(roleName)) { Filter filter = new Filter(); filter.setProperty("role_name"); filter.setValue(roleName); filter.setOperator(Filter.Operator.like); filters.add(filter); } Query query = new Query(params); Page pr = this.paginate(query.getCurrPage(), query.getLimit(), filters, query.getOrder()); return new PageUtils(pr); } @Override @JFinalTx public void save(SysRole role) { role.setCreateTime(new Date()); role.save(); //检查权限是否越权 checkPrems(role); //保存角色与菜单关系 sysRoleMenuService.saveOrUpdate(role.getRoleId(), role.getMenuIdList()); } @Override @JFinalTx public boolean update(SysRole role) { boolean updateSucc = role.update(); //检查权限是否越权 checkPrems(role); //更新角色与菜单关系 sysRoleMenuService.saveOrUpdate(role.getRoleId(), role.getMenuIdList()); return updateSucc; } @Override @JFinalTx public void deleteBatch(Long[] roleIds) { //删除角色 this.dao.deleteBatch(roleIds); //删除角色与菜单关联 sysRoleMenuService.deleteBatch(roleIds); //删除角色与用户关联 sysUserRoleService.deleteBatch(roleIds); } @Override public List queryRoleIdList(Long createUserId) { SysRole sysRole = new SysRole(); sysRole.setCreateUserId(createUserId); List sysRoleList = this.dao.findByModel(sysRole); List roleIdList = sysRoleList.stream().map(item->{ return item.getRoleId();}).collect(Collectors.toList()); return roleIdList; } /** * 检查权限是否越权 */ private void checkPrems(SysRole role){ //如果不是超级管理员,则需要判断角色的权限是否超过自己的权限 if(role.getCreateUserId() == Constant.SUPER_ADMIN){ return ; } //查询用户所拥有的菜单列表 List menuIdList = sysUserService.queryAllMenuId(role.getCreateUserId()); //判断是否越权 if(!menuIdList.containsAll(role.getMenuIdList())){ throw new RRException("新增角色的权限,已超出你的权限范围"); } } } ================================================ FILE: src/main/java/io/sdb/service/impl/SysUserRoleServiceImpl.java ================================================ package io.sdb.service.impl; import com.jfinal.plugin.activerecord.Db; import io.sdb.common.annotation.JFinalTx; import io.sdb.dao.SysUserRoleDao; import io.sdb.model.SysUserRole; import io.sdb.service.SysUserRoleService; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 用户与角色对应关系 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年9月18日 上午9:45:48 */ @Service("sysUserRoleService") public class SysUserRoleServiceImpl extends BaseServiceImpl implements SysUserRoleService { @Override @JFinalTx public void saveOrUpdate(Long userId, List roleIdList) { //先删除用户与角色关系 SysUserRole delSysUserRole = new SysUserRole(); delSysUserRole.setUserId(userId); this.deleteByModel(delSysUserRole); if(roleIdList == null || roleIdList.size() == 0){ return ; } //保存用户与角色关系 List list = new ArrayList<>(roleIdList.size()); for(Long roleId : roleIdList){ SysUserRole sysUserRole = new SysUserRole(); sysUserRole.setUserId(userId); sysUserRole.setRoleId(roleId); list.add(sysUserRole); } Db.batchSave(list, list.size()); } @Override public List queryRoleIdList(Long userId) { SysUserRole sysUserRole = new SysUserRole(); sysUserRole.setUserId(userId); List sysUserRoleList = this.findByModel(sysUserRole); List roleIdList = sysUserRoleList.stream().map(item->{ return item.getRoleId(); }).collect(Collectors.toList()); return roleIdList; } } ================================================ FILE: src/main/java/io/sdb/service/impl/SysUserServiceImpl.java ================================================ package io.sdb.service.impl; import com.jfinal.plugin.activerecord.Page; import io.sdb.common.annotation.JFinalTx; import io.sdb.common.exception.RRException; import io.sdb.common.utils.Constant; import io.sdb.common.utils.PageUtils; import io.sdb.common.utils.Query; import io.sdb.common.entity.Filter; import io.sdb.dao.SysUserDao; import io.sdb.model.SysUser; import io.sdb.service.SysRoleService; import io.sdb.service.SysUserRoleService; import io.sdb.service.SysUserService; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.StringUtils; import org.apache.shiro.crypto.hash.Sha256Hash; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; /** * 系统用户 * * @author chenshun * @email sunlightcs@gmail.com * @date 2016年9月18日 上午9:46:09 */ @Service("sysUserService") public class SysUserServiceImpl extends BaseServiceImpl implements SysUserService { @Autowired private SysUserRoleService sysUserRoleService; @Autowired private SysRoleService sysRoleService; @Override public PageUtils queryPage(Map params) { String username = (String)params.get("username"); Long createUserId = (Long)params.get("createUserId"); Query query = new Query(params); List filters = new ArrayList<>(); if(createUserId != null) { Filter filter = new Filter(); filter.setProperty("create_user_id"); filter.setValue(createUserId); filter.setOperator(Filter.Operator.eq); filters.add(filter); } if (!StringUtils.isBlank(username)) { Filter filter = new Filter(); filter.setProperty("username"); filter.setValue(username); filter.setOperator(Filter.Operator.like); filters.add(filter); } Page pr = this.paginate(query.getCurrPage(), query.getLimit(), filters, query.getOrder()); return new PageUtils(pr); } @Override public List queryAllPerms(Long userId) { return this.dao.queryAllPerms(userId); } @Override public List queryAllMenuId(Long userId) { return this.dao.queryAllMenuId(userId); } @Override public SysUser queryByUserName(String username) { return this.dao.queryByUserName(username); } @Override @JFinalTx public void save(SysUser user) { user.setCreateTime(new Date()); //sha256加密 String salt = RandomStringUtils.randomAlphanumeric(20); user.setPassword(new Sha256Hash(user.getPassword(), salt).toHex()); user.setSalt(salt); user.save(); //检查角色是否越权 checkRole(user); //保存用户与角色关系 sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleIdList()); } @Override @JFinalTx public boolean update(SysUser user) { if(StringUtils.isBlank(user.getPassword())){ user.remove("password"); }else{ user.setPassword(new Sha256Hash(user.getPassword(), user.getSalt()).toHex()); } boolean updateSucc = user.update(); //检查角色是否越权 checkRole(user); //保存用户与角色关系 sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleIdList()); return updateSucc; } @Override public boolean updatePassword(Long userId, String password, String newPassword) { SysUser sysUser = new SysUser(); sysUser.setPassword(newPassword); sysUser.setUserId(userId); sysUser.setPassword(password); boolean succ = sysUser.update(); return succ; } /** * 检查角色是否越权 */ private void checkRole(SysUser user){ if(user.getRoleIdList() == null || user.getRoleIdList().size() == 0){ return; } //如果不是超级管理员,则需要判断用户的角色是否自己创建 if(user.getCreateUserId() == Constant.SUPER_ADMIN){ return ; } //查询用户创建的角色列表 List roleIdList = sysRoleService.queryRoleIdList(user.getCreateUserId()); //判断是否越权 if(!roleIdList.containsAll(user.getRoleIdList())){ throw new RRException("新增用户所选角色,不是本人创建"); } } } ================================================ FILE: src/main/java/io/sdb/service/impl/SysUserTokenServiceImpl.java ================================================ package io.sdb.service.impl; import io.sdb.common.utils.R; import io.sdb.dao.SysUserTokenDao; import io.sdb.model.SysUserToken; import io.sdb.sys.oauth2.TokenGenerator; import io.sdb.service.SysUserTokenService; import org.springframework.stereotype.Service; import java.util.Date; @Service("sysUserTokenService") public class SysUserTokenServiceImpl extends BaseServiceImpl implements SysUserTokenService { //12小时后过期 private final static int EXPIRE = 3600 * 12; @Override public R createToken(long userId) { //生成一个token String token = TokenGenerator.generateValue(); //当前时间 Date now = new Date(); //过期时间 Date expireTime = new Date(now.getTime() + EXPIRE * 1000); //判断是否生成过token SysUserToken tokenEntity = this.dao.findById(userId); if(tokenEntity == null){ tokenEntity = new SysUserToken(); tokenEntity.setUserId(userId); tokenEntity.setToken(token); tokenEntity.setUpdateTime(now); tokenEntity.setExpireTime(expireTime); //保存token tokenEntity.save(); }else{ tokenEntity.setToken(token); tokenEntity.setUpdateTime(now); tokenEntity.setExpireTime(expireTime); //更新token tokenEntity.update(); } R r = R.ok().put("token", token).put("expire", EXPIRE); return r; } @Override public void logout(long userId) { //生成一个token String token = TokenGenerator.generateValue(); //修改token SysUserToken tokenEntity = new SysUserToken(); tokenEntity.setUserId(userId); tokenEntity.setToken(token); tokenEntity.update(); } } ================================================ FILE: src/main/java/io/sdb/service/impl/UserServiceImpl.java ================================================ package io.sdb.service.impl; import cn.binarywang.wx.miniapp.bean.WxMaUserInfo; import cn.hutool.core.date.DateUtil; import io.sdb.common.entity.Filter; import io.sdb.common.exception.RRException; import io.sdb.common.validator.Assert; import io.sdb.dao.UserDao; import io.sdb.enums.Language; import io.sdb.enums.SnEnum; import io.sdb.model.User; import io.sdb.form.LoginForm; import io.sdb.service.UserService; import io.sdb.service.AreaService; import io.sdb.service.SnService; import org.apache.commons.codec.digest.DigestUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; @Service("userService") public class UserServiceImpl extends BaseServiceImpl implements UserService { @Autowired AreaService areaService; @Autowired private SnService snService; @Override public User queryByMobile(String mobile) { User user = new User(); user.setMobile(mobile); return this.findFirstByModel(user); } @Override public String login(LoginForm form) { User user = queryByMobile(form.getMobile()); Assert.isNull(user, "手机号或密码错误"); //密码错误 if(!user.getPassword().equals(DigestUtils.sha256Hex(form.getPassword()))){ throw new RRException("手机号或密码错误"); } return user.getUserId(); } @Override public User addMaUser(WxMaUserInfo wxMaUserInfo) { User user = new User(); String userId = snService.generate(SnEnum.USER); user.setUserId(userId); user.setAvatar(wxMaUserInfo.getAvatarUrl()); user.setMaOpenId(wxMaUserInfo.getOpenId()); user.setNickname(wxMaUserInfo.getNickName()); user.setGender(Integer.parseInt(wxMaUserInfo.getGender())); user.setUnionId(wxMaUserInfo.getUnionId()); Language language = Language.getByEnumName(wxMaUserInfo.getLanguage()); user.setLanguage((int)language.getValue()); user.save(); return user; } @Override public Integer getYestodayNewUsers() { List filterList = new ArrayList<>(); Filter start = new Filter(); start.setOperator(Filter.Operator.ge); start.setProperty("create_date"); Date todayBegin = DateUtil.beginOfDay(new Date()); todayBegin = DateUtil.offsetDay(todayBegin, -1); start.setValue(todayBegin); filterList.add(start); Filter end = new Filter(); end.setOperator(Filter.Operator.le); end.setProperty("create_date"); Date todayEnd = DateUtil.endOfDay(new Date()); todayEnd = DateUtil.offsetDay(todayEnd, -1); end.setValue(todayEnd); filterList.add(end); List userList = this.findByFilters(filterList); return userList.size(); } @Override public Integer getTotalUsers() { List users = this.findAll(); return users.size(); } } ================================================ FILE: src/main/java/io/sdb/sys/oauth2/OAuth2Filter.java ================================================ package io.sdb.sys.oauth2; import com.google.gson.Gson; import io.sdb.common.utils.HttpContextUtils; import io.sdb.common.utils.R; import org.apache.commons.lang.StringUtils; import org.apache.http.HttpStatus; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.web.filter.authc.AuthenticatingFilter; import org.springframework.web.bind.annotation.RequestMethod; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * oauth2过滤器 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-05-20 13:00 */ public class OAuth2Filter extends AuthenticatingFilter { @Override protected AuthenticationToken createToken(ServletRequest request, ServletResponse response) throws Exception { //获取请求token String token = getRequestToken((HttpServletRequest) request); if(StringUtils.isBlank(token)){ return null; } return new OAuth2Token(token); } @Override protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { if(((HttpServletRequest) request).getMethod().equals(RequestMethod.OPTIONS.name())){ return true; } return false; } @Override protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { //获取请求token,如果token不存在,直接返回401 String token = getRequestToken((HttpServletRequest) request); if(StringUtils.isBlank(token)){ HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.setHeader("Access-Control-Allow-Credentials", "true"); httpResponse.setHeader("Access-Control-Allow-Origin", HttpContextUtils.getOrigin()); String json = new Gson().toJson(R.error(HttpStatus.SC_UNAUTHORIZED, "invalid token")); httpResponse.getWriter().print(json); return false; } return executeLogin(request, response); } @Override protected boolean onLoginFailure(AuthenticationToken token, AuthenticationException e, ServletRequest request, ServletResponse response) { HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.setContentType("application/json;charset=utf-8"); httpResponse.setHeader("Access-Control-Allow-Credentials", "true"); httpResponse.setHeader("Access-Control-Allow-Origin", HttpContextUtils.getOrigin()); try { //处理登录失败的异常 Throwable throwable = e.getCause() == null ? e : e.getCause(); R r = R.error(HttpStatus.SC_UNAUTHORIZED, throwable.getMessage()); String json = new Gson().toJson(r); httpResponse.getWriter().print(json); } catch (IOException e1) { } return false; } /** * 获取请求的token */ private String getRequestToken(HttpServletRequest httpRequest){ //从header中获取token String token = httpRequest.getHeader("token"); //如果header中不存在token,则从参数中获取token if(StringUtils.isBlank(token)){ token = httpRequest.getParameter("token"); } return token; } } ================================================ FILE: src/main/java/io/sdb/sys/oauth2/OAuth2Realm.java ================================================ package io.sdb.sys.oauth2; import io.sdb.model.SysUser; import io.sdb.model.SysUserToken; import io.sdb.service.ShiroService; import org.apache.shiro.authc.*; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.subject.PrincipalCollection; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Set; /** * 认证 * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-05-20 14:00 */ @Component public class OAuth2Realm extends AuthorizingRealm { @Autowired private ShiroService shiroService; @Override public boolean supports(AuthenticationToken token) { return token instanceof OAuth2Token; } /** * 授权(验证权限时调用) */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { SysUser user = (SysUser)principals.getPrimaryPrincipal(); Long userId = user.getUserId(); //用户权限列表 Set permsSet = shiroService.getUserPermissions(userId); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); info.setStringPermissions(permsSet); return info; } /** * 认证(登录时调用) */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { String accessToken = (String) token.getPrincipal(); //根据accessToken,查询用户信息 SysUserToken tokenEntity = shiroService.queryByToken(accessToken); //token失效 if(tokenEntity == null || tokenEntity.getExpireTime().getTime() < System.currentTimeMillis()){ throw new IncorrectCredentialsException("token失效,请重新登录"); } //查询用户信息 SysUser user = shiroService.queryUser(tokenEntity.getUserId()); //账号锁定 if(user.getStatus() == 0){ throw new LockedAccountException("账号已被锁定,请联系管理员"); } SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, accessToken, getName()); return info; } } ================================================ FILE: src/main/java/io/sdb/sys/oauth2/OAuth2Token.java ================================================ package io.sdb.sys.oauth2; import org.apache.shiro.authc.AuthenticationToken; /** * token * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-05-20 13:22 */ public class OAuth2Token implements AuthenticationToken { private String token; public OAuth2Token(String token){ this.token = token; } @Override public String getPrincipal() { return token; } @Override public Object getCredentials() { return token; } } ================================================ FILE: src/main/java/io/sdb/sys/oauth2/TokenGenerator.java ================================================ package io.sdb.sys.oauth2; import io.sdb.common.exception.RRException; import java.security.MessageDigest; import java.util.UUID; /** * 生成token * * @author chenshun * @email sunlightcs@gmail.com * @date 2017-05-20 14:41 */ public class TokenGenerator { public static String generateValue() { return generateValue(UUID.randomUUID().toString()); } private static final char[] hexCode = "0123456789abcdef".toCharArray(); public static String toHexString(byte[] data) { if(data == null) { return null; } StringBuilder r = new StringBuilder(data.length*2); for ( byte b : data) { r.append(hexCode[(b >> 4) & 0xF]); r.append(hexCode[(b & 0xF)]); } return r.toString(); } public static String generateValue(String param) { try { MessageDigest algorithm = MessageDigest.getInstance("MD5"); algorithm.reset(); algorithm.update(param.getBytes()); byte[] messageDigest = algorithm.digest(); return toHexString(messageDigest); } catch (Exception e) { throw new RRException("生成Token失败", e); } } } ================================================ FILE: src/main/java/io/sdb/sys/redis/SysConfigRedis.java ================================================ /** * Copyright 2018 *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.sdb.sys.redis; import io.sdb.common.utils.RedisKeys; import io.sdb.common.utils.RedisUtils; import io.sdb.model.SysConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * 系统配置Redis * * @author chenshun * @email sunlightcs@gmail.com * @date 2017/7/18 21:08 */ @Component public class SysConfigRedis { @Autowired private RedisUtils redisUtils; public void saveOrUpdate(SysConfig config) { if(config == null){ return ; } String key = RedisKeys.getSysConfigKey(config.getParamKey()); redisUtils.set(key, config); } public void delete(String configKey) { String key = RedisKeys.getSysConfigKey(configKey); redisUtils.delete(key); } public SysConfig get(String configKey){ String key = RedisKeys.getSysConfigKey(configKey); return redisUtils.get(key, SysConfig.class); } } ================================================ FILE: src/main/java/io/sdb/vo/DeliveryCorpVO.java ================================================ package io.sdb.vo; import io.sdb.common.entity.Node; import io.sdb.model.DeliveryCorp; import io.sdb.model.Specification; import lombok.Data; @Data public class DeliveryCorpVO{ String value; String label; } ================================================ FILE: src/main/java/io/sdb/vo/GoodsVO.java ================================================ package io.sdb.vo; import io.sdb.model.Goods; import io.sdb.model.base.BaseGoods; import lombok.Data; @Data public class GoodsVO extends Goods { Boolean favorite = false; } ================================================ FILE: src/main/java/io/sdb/vo/GrouponDetailVO.java ================================================ package io.sdb.vo; import lombok.Data; @Data public class GrouponDetailVO { String grouponId; Integer totalCount; Integer joinedCount; String headUrl; String name; public Integer getSurplus() { Integer surplus = totalCount - joinedCount; if (surplus < 0) { return 0; } return surplus; } } ================================================ FILE: src/main/java/io/sdb/vo/GrouponTeamVO.java ================================================ package io.sdb.vo; import io.sdb.model.Groupon; import io.sdb.model.GrouponTeam; import lombok.Data; @Data public class GrouponTeamVO extends GrouponTeam { String headUrl; } ================================================ FILE: src/main/java/io/sdb/vo/GrouponVO.java ================================================ package io.sdb.vo; import io.sdb.model.Groupon; import lombok.Data; @Data public class GrouponVO extends Groupon { } ================================================ FILE: src/main/java/io/sdb/vo/NewsVO.java ================================================ package io.sdb.vo; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.sdb.serializer.Date2LongSerializer; import lombok.Data; import java.util.Date; /** * Created by IntelliJ IDEA. * User: quendi * Date: 2018/6/14 */ @Data public class NewsVO { Long id; String title; Integer head; String img; String content; @JsonSerialize(using = Date2LongSerializer.class) Date createDate; @JsonSerialize(using = Date2LongSerializer.class) Date updateDate; Integer enable; } ================================================ FILE: src/main/java/io/sdb/vo/OrderDetailVO.java ================================================ package io.sdb.vo; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.sdb.common.utils.EnumUtil; import io.sdb.enums.OrderStatusEnum; import io.sdb.model.OrderDetail; import io.sdb.serializer.Date2LongSerializer; import lombok.Data; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * Created by yjjdick * 2017-06-11 18:30 */ @Data public class OrderDetailVO { String detailId; String orderId; String productId; String productName; String productModel; String productSpec; BigDecimal productPrice; BigDecimal groupPrice; Integer productQuantity; String productIcon; @JsonSerialize(using = Date2LongSerializer.class) Date createDate; @JsonSerialize(using = Date2LongSerializer.class) Date updateDate; } ================================================ FILE: src/main/java/io/sdb/vo/OrderVO.java ================================================ package io.sdb.vo; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.sdb.common.utils.EnumUtil; import io.sdb.enums.OrderStatusEnum; import io.sdb.model.OrderDetail; import io.sdb.serializer.Date2LongSerializer; import lombok.Data; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * Created by yjjdick * 2017-06-11 18:30 */ @Data //@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) //@JsonInclude(JsonInclude.Include.NON_NULL) public class OrderVO { /** 订单id. */ private String orderId; /** 买家名字. */ private String buyerName; /** 买家手机号. */ private String buyerPhone; /** 买家地址. */ private String buyerAddress; /** 买家微信Openid. */ private String buyerOpenid; /** 买家微信Openid. */ private String buyerId; /** 订单总金额. */ private BigDecimal orderAmount; /** 订单状态, 默认为0新下单. */ private Integer orderStatus; /** 支付状态, 默认为0未支付. */ private Integer payStatus; /** 买家备注 */ private String remark; /** 是否需要开发 */ private Integer needInvoice; private Integer invoiceType; private String title; private String taxNumber; private String companyAddress; private String telephone; private String bankName; private String bankAccount; private String payTradeNo; private String refundTradeNo; private String trackingNumber; private String deliveryCode; private Integer groupon; private String grouponId; private Integer grouponCount; /** 创建时间. */ @JsonSerialize(using = Date2LongSerializer.class) private Date createDate; /** 更新时间. */ @JsonSerialize(using = Date2LongSerializer.class) private Date updateDate; List orderDetailList; @JsonIgnore public OrderStatusEnum getOrderStatusEnum() { return EnumUtil.getByCode(orderStatus, OrderStatusEnum.class); } } ================================================ FILE: src/main/java/io/sdb/vo/ProductCategoryVO.java ================================================ package io.sdb.vo; import io.sdb.common.entity.Node; import io.sdb.model.Area; import io.sdb.model.ProductCategory; import lombok.Data; @Data public class ProductCategoryVO extends Node { Long value; String label; String treePath; public ProductCategoryVO(ProductCategory productCategory) { super(productCategory.getId(), productCategory.getParentId()); this.value = productCategory.getId(); this.label = productCategory.getName(); this.treePath = productCategory.getTreePath(); } } ================================================ FILE: src/main/java/io/sdb/vo/ProductVO.java ================================================ package io.sdb.vo; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.jfinal.plugin.activerecord.Model; import io.sdb.serializer.Date2LongSerializer; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * 购物车 * Created by yjjdick * 2017-06-11 19:37 */ @Data public class ProductVO{ String name; String caption; String image; String specificationValues; Integer stock; String sn; BigDecimal price; BigDecimal groupPrice; Integer enable; @JsonSerialize(using = Date2LongSerializer.class) Date createDate; } ================================================ FILE: src/main/java/io/sdb/vo/SpecificationVO.java ================================================ package io.sdb.vo; import io.sdb.common.entity.Node; import io.sdb.model.ProductCategory; import io.sdb.model.Specification; import lombok.Data; @Data public class SpecificationVO extends Node { Long value; String label; public SpecificationVO(Specification specification) { super(specification.getId(), specification.getParentId()); this.value = specification.getId(); this.label = specification.getName(); } } ================================================ FILE: src/main/java/io/sdb/vo/VolunteerInfoVO.java ================================================ package io.sdb.vo; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.sdb.serializer.Date2LongSerializer; import lombok.Data; import java.util.Date; @Data public class VolunteerInfoVO { String name; String idCard; @JsonSerialize(using = Date2LongSerializer.class) Date createDate; String id; Integer status; } ================================================ FILE: src/main/resources/application-dev.yml ================================================ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.DriverSpy druid: first: #数据源1 url: jdbc:log4jdbc:mysql://127.0.0.1:3306/sdb?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8 username: root password: 123456 initial-size: 10 max-active: 100 min-idle: 10 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false stat-view-servlet: enabled: true url-pattern: /druid/* #login-username: admin #login-password: admin filter: stat: log-slow-sql: true slow-sql-millis: 1000 merge-sql: true wall: config: multi-statement-allow: true connection-init-sqls: set names utf8mb4; second: #数据源2 url: jdbc:log4jdbc:mysql://127.0.0.1:3306/sdb?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8 username: root password: 123456 initial-size: 10 max-active: 100 min-idle: 10 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false stat-view-servlet: enabled: true url-pattern: /druid/* #login-username: admin #login-password: admin filter: stat: log-slow-sql: true slow-sql-millis: 2000 merge-sql: true wall: config: multi-statement-allow: true connection-init-sqls: set names utf8mb4; ================================================ FILE: src/main/resources/application-prod.yml ================================================ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.DriverSpy druid: first: #数据源1 url: jdbc:log4jdbc:mysql://127.0.0.1:3306/sdb?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8 username: root password: 123456 initial-size: 10 max-active: 100 min-idle: 10 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false stat-view-servlet: enabled: true url-pattern: /druid/* #login-username: admin #login-password: admin filter: stat: log-slow-sql: true slow-sql-millis: 1000 merge-sql: true wall: config: multi-statement-allow: true connection-init-sqls: set names utf8mb4; second: #数据源2 url: jdbc:log4jdbc:mysql://127.0.0.1:3306/sdb?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8 username: root password: 123456 initial-size: 10 max-active: 100 min-idle: 10 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false stat-view-servlet: enabled: true url-pattern: /druid/* #login-username: admin #login-password: admin filter: stat: log-slow-sql: true slow-sql-millis: 2000 merge-sql: true wall: config: multi-statement-allow: true connection-init-sqls: set names utf8mb4; wechat: miniapp: notifyUrl: http://sdbtest.s1.natapp.cc/sdb/pay/notify schedule: open: true ================================================ FILE: src/main/resources/application-test.yml ================================================ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.DriverSpy druid: first: #数据源1 url: jdbc:log4jdbc:mysql://10.12.130.184:3306/sdb?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8 username: root password: 123456 initial-size: 10 max-active: 100 min-idle: 10 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false stat-view-servlet: enabled: true url-pattern: /druid/* #login-username: admin #login-password: admin filter: stat: log-slow-sql: true slow-sql-millis: 1000 merge-sql: true wall: config: multi-statement-allow: true connection-init-sqls: set names utf8mb4; second: #数据源2 url: jdbc:log4jdbc:mysql://10.12.130.184:3306/sdb?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8 username: root password: 123456 initial-size: 10 max-active: 100 min-idle: 10 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false stat-view-servlet: enabled: true url-pattern: /druid/* #login-username: admin #login-password: admin filter: stat: log-slow-sql: true slow-sql-millis: 2000 merge-sql: true wall: config: multi-statement-allow: true wechat: miniapp: notifyUrl: http://wxsdb.natapp4.cc/sdb/pay/notify schedule: open: true ================================================ FILE: src/main/resources/application.yml ================================================ # Tomcat server: tomcat: uri-encoding: UTF-8 max-threads: 1000 min-spare-threads: 30 port: 8080 connection-timeout: 5000ms servlet: context-path: /sdb # /info 端点的显示 info: name: @project.artifactId@ version: @project.version@ date: @maven.build.timestamp@ description: @project.description@ spring: # 环境 dev|test|prod profiles: active: dev # jackson时间格式化 jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss http: multipart: servlet: max-file-size: 100MB max-request-size: 100MB enabled: true redis: open: false # 是否开启redis缓存 true开启 false关闭 database: 0 host: 127.0.0.1 port: 6379 password: 123456 # 密码(默认为空) timeout: 6000ms # 连接超时时长(毫秒) jedis: pool: max-active: 1000 # 连接池最大连接数(使用负值表示没有限制) max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制) max-idle: 10 # 连接池中的最大空闲连接 min-idle: 5 # 连接池中的最小空闲连接 mvc: throw-exception-if-no-handler-found: true resources: add-mappings: false mail: host: smtp.163.com username: yaojiajunnsh@163.com password: yjj123456 properties: mail: smtp: auth: true starttls: required: true enable: true sdb: # APP模块,是通过jwt认证的,如果要使用APP模块,则需要修改【加密秘钥】 jwt: # 加密秘钥 secret: www.senduobang.com # token有效时长,7天,单位秒 expire: 604800 header: token schedule: open: false wechat: ma: msgDataFormat: JSON appid: secret: mchId: mchKey: keyPath: notifyUrl: mp: openAppId: openAppSecret: configs: - appid: secret: token: aesKey: order: refund: false kuaidi100: notifyUrl: kuaidi100Key: kuaidi100PollUrl: ================================================ FILE: src/main/resources/banner.txt ================================================ ${AnsiColor.BLUE} ,---, ,---, ,---.'|,---.'| .--.--. | | :| | : / / ' | | |: : : | : /`./ ,--.__| |: |,-. | : ;_ / ,' || : ' | \ \ `. . ' / || | / : `----. \' ; |: |' : |: | / /`--' /| | '/ '| | '/ : '--'. / | : :|| : | `--'---' \ \ / / \ / `----' `-'----' -------------------------森多邦商城开源系统-------------------------- 官方QQ交流群:346743162 ================================================ FILE: src/main/resources/log4jdbc.properties ================================================ log4jdbc.sqltiming.warn.threshold=2000 ================================================ FILE: src/main/resources/logback-spring.xml ================================================ ${LOG_HOME}/sdb/log_info.log ERROR DENY ACCEPT %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n utf-8 ${LOG_HOME}/sdb/info/log-info-%d{yyyy-MM-dd}.%i.log 30 3GB 2MB ${LOG_HOME}/sdb/log_error.log ERROR %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n utf-8 ${LOG_HOME}/sdb/error/log-error-%d{yyyy-MM-dd}.%i.log 30 1GB 2MB true ================================================ FILE: src/main/resources/sql/all.sql ================================================ #namespace("common") #include("common.sql") #end #namespace("sysUser") #include("sysUser.sql") #end #namespace("sysMenu") #include("sysMenu.sql") #end #namespace("sysConfig") #include("sysConfig.sql") #end #namespace("news") #include("news.sql") #end #namespace("product") #include("product.sql") #end #namespace("cart") #include("cart.sql") #end #namespace("order") #include("order.sql") #end #namespace("productCategory") #include("productCategory.sql") #end #namespace("favoriteGoods") #include("favoriteGoods.sql") #end ================================================ FILE: src/main/resources/sql/cart.sql ================================================ #sql("listDetail") SELECT c.id id, g.name name, g.caption caption, p.sn product_id, p.specification_values specification_values, c.quantity quantity, p.price price, g.image image, g.sn goodsId FROM cart c LEFT JOIN product p ON c.product_id = p.sn LEFT JOIN goods g ON p.goods_sn = g.sn WHERE c.user_id = #para(userId) #end ================================================ FILE: src/main/resources/sql/common.sql ================================================ #sql("findList") SELECT * FROM #(tableName) where 1=1 #for(filter:filters) #if(!filter.getProperty()??) #continue #end #if(filter.getOperator().name() == "eq") #if(filter.getValue()??) #(filter.getWhereOptStr()) #(filter.getProperty()) = #para(filter.getValue()) #else #(filter.getWhereOptStr()) #(filter.getProperty()) IS NULL #end #elseif(filter.getOperator().name() == "ne") #if(filter.getValue()??) #(filter.getWhereOptStr()) #(filter.getProperty()) != #para(filter.getValue()) #else #(filter.getWhereOptStr()) #(filter.getProperty()) IS NOT NULL #end #elseif(filter.getOperator().name() == "gt") #(filter.getWhereOptStr()) #(filter.getProperty()) > #para(filter.getValue()) #elseif(filter.getOperator().name() == "lt") #(filter.getWhereOptStr()) #(filter.getProperty()) < #para(filter.getValue()) #elseif(filter.getOperator().name() == "ge") #(filter.getWhereOptStr()) #(filter.getProperty()) >= #para(filter.getValue()) #elseif(filter.getOperator().name() == "le") #(filter.getWhereOptStr()) #(filter.getProperty()) <= #para(filter.getValue()) #elseif(filter.getOperator().name() == "like") #(filter.getWhereOptStr()) #(filter.getProperty()) like concat('%', #para(filter.getValue()), '%') #elseif(filter.getOperator().name() == "isNull") #(filter.getWhereOptStr()) #(filter.getProperty()) IS NULL #elseif(filter.getOperator().name() == "isNotNull") #(filter.getWhereOptStr()) #(filter.getProperty()) IS NOT NULL #elseif(filter.getOperator().name() == "in") #(filter.getWhereOptStr()) #(filter.getProperty()) in ( #for(v:filter.getValue()) #para(v) #if(!for.last) , #end #end ) #end #end #for(order: orders) #if(for.first) order by #end #if(!for.first) , #end #(order.getProperty()??) #(order.getDirection().name()??) #end #end #sql("deleteBatch") DELETE FROM #(tableName) where #for(i = 0;i.content-type>div>label{clear:both;display:block;color:#0f6ab4;font-size:1.1em;margin:0;padding:15px 0 5px}.swagger-section .swagger-ui-wrap .content pre{font-size:12px;margin-top:5px;padding:5px}.swagger-section .swagger-ui-wrap .icon-btn{cursor:pointer}.swagger-section .swagger-ui-wrap .info_title{padding-bottom:10px;font-weight:700;font-size:25px}.swagger-section .swagger-ui-wrap .footer{margin-top:20px}.swagger-section .swagger-ui-wrap div.big p,.swagger-section .swagger-ui-wrap p.big{font-size:1em;margin-bottom:10px}.swagger-section .swagger-ui-wrap form.fullwidth ol li.numeric input,.swagger-section .swagger-ui-wrap form.fullwidth ol li.string input,.swagger-section .swagger-ui-wrap form.fullwidth ol li.text textarea,.swagger-section .swagger-ui-wrap form.fullwidth ol li.url input{width:500px!important}.swagger-section .swagger-ui-wrap .info_license,.swagger-section .swagger-ui-wrap .info_tos{padding-bottom:5px}.swagger-section .swagger-ui-wrap .message-fail{color:#c00}.swagger-section .swagger-ui-wrap .info_email,.swagger-section .swagger-ui-wrap .info_name,.swagger-section .swagger-ui-wrap .info_url{padding-bottom:5px}.swagger-section .swagger-ui-wrap .info_description{padding-bottom:10px;font-size:15px}.swagger-section .swagger-ui-wrap .markdown ol li,.swagger-section .swagger-ui-wrap .markdown ul li{padding:3px 0;line-height:1.4em;color:#333}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input{display:block;padding:4px;width:auto;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input.title,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input.title,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input.title{font-size:1.3em}.swagger-section .swagger-ui-wrap table.fullwidth{width:100%}.swagger-section .swagger-ui-wrap .model-signature{font-family:Droid Sans,sans-serif;font-size:1em;line-height:1.5em}.swagger-section .swagger-ui-wrap .model-signature .signature-nav a{text-decoration:none;color:#aaa}.swagger-section .swagger-ui-wrap .model-signature .signature-nav a:hover{text-decoration:underline;color:#000}.swagger-section .swagger-ui-wrap .model-signature .signature-nav .selected{color:#000;text-decoration:none}.swagger-section .swagger-ui-wrap .model-signature .propType{color:#55a}.swagger-section .swagger-ui-wrap .model-signature pre:hover{background-color:#ffd}.swagger-section .swagger-ui-wrap .model-signature pre{font-size:.85em;line-height:1.2em;overflow:auto;height:200px;resize:vertical;cursor:pointer}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav{display:block;min-width:230px;margin:0;padding:0}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li{float:left;margin:0 5px 5px 0;padding:2px 5px 2px 0;border-right:1px solid #ddd}.swagger-section .swagger-ui-wrap .model-signature .propOpt{color:#555}.swagger-section .swagger-ui-wrap .model-signature .snippet small{font-size:.75em}.swagger-section .swagger-ui-wrap .model-signature .propOptKey{font-style:italic}.swagger-section .swagger-ui-wrap .model-signature .description .strong{font-weight:700;color:#000;font-size:.9em}.swagger-section .swagger-ui-wrap .model-signature .description div{font-size:.9em;line-height:1.5em;margin-left:1em}.swagger-section .swagger-ui-wrap .model-signature .description .stronger{font-weight:700;color:#000}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper{border-spacing:0;position:absolute;background-color:#fff;border:1px solid #bbb;display:none;font-size:11px;max-width:400px;line-height:30px;color:#000;padding:5px;margin-left:10px}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper th{text-align:center;background-color:#eee;border:1px solid #bbb;font-size:11px;color:#666;font-weight:700;padding:5px;line-height:15px}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper .optionName{font-weight:700}.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:first-child,.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:last-child{display:inline}.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:not(:first-child):before{display:block;content:''}.swagger-section .swagger-ui-wrap .model-signature .description span:last-of-type.propDesc.markdown>p:only-child{margin-right:-3px}.swagger-section .swagger-ui-wrap .model-signature .propName{font-weight:700}.swagger-section .swagger-ui-wrap .model-signature .signature-container{clear:both}.swagger-section .swagger-ui-wrap .body-textarea{width:300px;height:100px;border:1px solid #aaa}.swagger-section .swagger-ui-wrap .markdown li code,.swagger-section .swagger-ui-wrap .markdown p code{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;background-color:#f0f0f0;color:#000;padding:1px 3px}.swagger-section .swagger-ui-wrap .required{font-weight:700}.swagger-section .swagger-ui-wrap .editor_holder{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;font-size:.9em}.swagger-section .swagger-ui-wrap .editor_holder label{font-weight:400!important}.swagger-section .swagger-ui-wrap .editor_holder label.required{font-weight:700!important}.swagger-section .swagger-ui-wrap input.parameter{width:300px;border:1px solid #aaa}.swagger-section .swagger-ui-wrap h1{color:#000;font-size:1.5em;line-height:1.3em;padding:10px 0;font-family:Droid Sans,sans-serif;font-weight:700}.swagger-section .swagger-ui-wrap .heading_with_menu{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap .heading_with_menu ul{display:block;clear:none;float:right;-ms-box-sizing:border-box;box-sizing:border-box;margin-top:10px}.swagger-section .swagger-ui-wrap h2{color:#000;font-size:1.3em;padding:10px 0}.swagger-section .swagger-ui-wrap h2 a{color:#000}.swagger-section .swagger-ui-wrap h2 span.sub{font-size:.7em;color:#999;font-style:italic}.swagger-section .swagger-ui-wrap h2 span.sub a{color:#777}.swagger-section .swagger-ui-wrap span.weak{color:#666}.swagger-section .swagger-ui-wrap .message-success{color:#89bf04}.swagger-section .swagger-ui-wrap caption,.swagger-section .swagger-ui-wrap td,.swagger-section .swagger-ui-wrap th{text-align:left;font-weight:400;vertical-align:middle}.swagger-section .swagger-ui-wrap .code{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.text textarea{font-family:Droid Sans,sans-serif;height:250px;padding:4px;display:block;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.select select{display:block;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean label{display:block;float:left;clear:none;margin:0;padding:0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean input{display:block;float:left;clear:none;margin:0 5px 0 0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.required label{color:#000}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label{display:block;clear:both;width:auto;padding:0 0 3px;color:#666}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label abbr{padding-left:3px;color:#888}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li p.inline-hints{margin-left:0;font-style:italic;font-size:.9em;margin:0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.buttons{margin:0;padding:0}.swagger-section .swagger-ui-wrap span.blank,.swagger-section .swagger-ui-wrap span.empty{color:#888;font-style:italic}.swagger-section .swagger-ui-wrap .markdown h3{color:#547f00}.swagger-section .swagger-ui-wrap .markdown h4{color:#666}.swagger-section .swagger-ui-wrap .markdown pre{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;background-color:#fcf6db;border:1px solid #e5e0c6;padding:10px;margin:0 0 10px}.swagger-section .swagger-ui-wrap .markdown pre code{line-height:1.6em;overflow:auto}.swagger-section .swagger-ui-wrap div.gist{margin:20px 0 25px!important}.swagger-section .swagger-ui-wrap ul#resources{font-family:Droid Sans,sans-serif;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource{border-bottom:1px solid #ddd}.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading h2 a,.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading h2 a{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading ul.options li a,.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading ul.options li a{color:#555}.swagger-section .swagger-ui-wrap ul#resources li.resource:last-child{border-bottom:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading{border:1px solid transparent;float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options{overflow:hidden;padding:0;display:block;clear:none;float:right;margin:14px 10px 0 0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li{float:left;clear:none;margin:0;padding:2px 10px;border-right:1px solid #ddd;color:#666;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a{color:#aaa;text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover{text-decoration:underline;color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a.active,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:active,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.first,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:first-child{padding-left:0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options.first,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options:first-child{padding-left:0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2{color:#999;padding-left:0;display:block;clear:none;float:left;font-family:Droid Sans,sans-serif;font-weight:700}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a{color:#999}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation{float:none;clear:both;overflow:hidden;display:block;margin:0 0 10px;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading{float:none;clear:both;overflow:hidden;display:block;margin:0;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3{display:block;clear:none;float:left;width:auto;margin:0;padding:0;line-height:1.1em;color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path{padding-left:10px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a{color:#000;text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a.toggleOperation.deprecated{text-decoration:line-through}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.http_method a{text-transform:uppercase;text-decoration:none;color:#fff;display:inline-block;width:50px;font-size:.7em;text-align:center;padding:7px 0 4px;border-radius:2px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span{margin:0;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options{overflow:hidden;padding:0;display:block;clear:none;float:right;margin:6px 10px 0 0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li{float:left;clear:none;margin:0;padding:2px 10px;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a{text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .markdown p{color:inherit;padding:0;line-height:inherit}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .nickname{color:#aaa;padding:0;line-height:inherit}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content{border-top:none;padding:10px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;margin:0 0 20px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content h4{font-size:1.1em;margin:0;padding:15px 0 5px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header a{padding:4px 0 0 10px;display:inline-block;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header input.submit{display:block;clear:none;float:left;padding:6px 8px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header span.response_throbber{background-image:url(../images/throbber.gif);width:128px;height:16px;display:block;clear:none;float:right}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form input[type=text].error{outline:2px solid #000;outline-color:#c00}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form select[name=parameterContentType]{max-width:300px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.response div.block pre{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;padding:10px;font-size:.9em;max-height:400px;overflow-y:auto}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading{background-color:#f9f2e9;border:1px solid #f0e0ca}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading h3 span.http_method a{background-color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#f0e0ca;color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li a{color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content{background-color:#faf5ee;border:1px solid #f0e0ca}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content h4{color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content div.sandbox_header a{color:#dcb67f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading{background-color:#fcffcd;border:1px solid #000;border-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading h3 span.http_method a{text-transform:uppercase;background-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#ffd20f;color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li a{color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content{background-color:#fcffcd;border:1px solid #000;border-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content h4{color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content div.sandbox_header a{color:#6fc992}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading{background-color:#f5e8e8;border:1px solid #e8c6c7}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading h3 span.http_method a{text-transform:uppercase;background-color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#e8c6c7;color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li a{color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content{background-color:#f7eded;border:1px solid #e8c6c7}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content h4{color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content div.sandbox_header a{color:#c8787a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading{background-color:#e7f6ec;border:1px solid #c3e8d1}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading h3 span.http_method a{background-color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3e8d1;color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li a{color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content{background-color:#ebf7f0;border:1px solid #c3e8d1}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content h4{color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content div.sandbox_header a{color:#6fc992}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading{background-color:#fce9e3;border:1px solid #f5d5c3}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading h3 span.http_method a{background-color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#f0cecb;color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li a{color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content{background-color:#faf0ef;border:1px solid #f0cecb}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content h4{color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content div.sandbox_header a{color:#dcb67f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading{background-color:#e7f0f7;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading h3 span.http_method a{background-color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3d9ec;color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li a{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content{background-color:#ebf3f9;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content h4{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content div.sandbox_header a{color:#6fa5d2}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading{background-color:#e7f0f7;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading h3 span.http_method a{background-color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3d9ec;color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li a{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content{background-color:#ebf3f9;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content h4{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content div.sandbox_header a{color:#6fa5d2}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content{border-top:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a.active,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:active,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations.first,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations:first-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li.first,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li:first-child{padding-left:0}.swagger-section .swagger-ui-wrap p#colophon{margin:0 15px 40px;padding:10px 0;font-size:.8em;border-top:1px solid #ddd;font-family:Droid Sans,sans-serif;color:#999;font-style:italic}.swagger-section .swagger-ui-wrap p#colophon a{text-decoration:none;color:#547f00}.swagger-section .swagger-ui-wrap h3{color:#000;font-size:1.1em;padding:10px 0}.swagger-section .swagger-ui-wrap .markdown ol,.swagger-section .swagger-ui-wrap .markdown ul{font-family:Droid Sans,sans-serif;margin:5px 0 10px;padding:0 0 0 18px;list-style-type:disc}.swagger-section .swagger-ui-wrap form.form_box{background-color:#ebf3f9;border:1px solid #c3d9ec;padding:10px}.swagger-section .swagger-ui-wrap form.form_box label{color:#0f6ab4!important}.swagger-section .swagger-ui-wrap form.form_box input[type=submit]{display:block;padding:10px}.swagger-section .swagger-ui-wrap form.form_box p.weak{font-size:.8em}.swagger-section .swagger-ui-wrap form.form_box p{font-size:.9em;padding:0 0 15px;color:#7e7b6d}.swagger-section .swagger-ui-wrap form.form_box p a{color:#646257}.swagger-section .swagger-ui-wrap form.form_box p strong{color:#000}.swagger-section .swagger-ui-wrap .operation-status td.markdown>p:last-child{padding-bottom:0}.swagger-section .title{font-style:bold}.swagger-section .secondary_form{display:none}.swagger-section .main_image{display:block;margin-left:auto;margin-right:auto}.swagger-section .oauth_body{margin-left:100px;margin-right:100px}.swagger-section .oauth_submit{text-align:center;display:inline-block}.swagger-section .authorize-wrapper{margin:15px 0 10px}.swagger-section .authorize-wrapper_operation{float:right}.swagger-section .authorize__btn:hover{text-decoration:underline;cursor:pointer}.swagger-section .authorize__btn_operation:hover .authorize-scopes{display:block}.swagger-section .authorize-scopes{position:absolute;margin-top:20px;background:#fff;border:1px solid #ccc;border-radius:5px;display:none;font-size:13px;max-width:300px;line-height:30px;color:#000;padding:5px}.swagger-section .authorize-scopes .authorize__scope{text-decoration:none}.swagger-section .authorize__btn_operation{height:18px;vertical-align:middle;display:inline-block;background:url(../images/explorer_icons.png) no-repeat}.swagger-section .authorize__btn_operation_login{background-position:0 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section .authorize__btn_operation_logout{background-position:-30px 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section #auth_container{color:#fff;display:inline-block;border:none;padding:5px;width:87px;height:13px}.swagger-section #auth_container .authorize__btn{color:#fff}.swagger-section .auth_container{padding:0 0 10px;margin-bottom:5px;border-bottom:1px solid #ccc;font-size:.9em}.swagger-section .auth_container .auth__title{color:#547f00;font-size:1.2em}.swagger-section .auth_container .basic_auth__label{display:inline-block;width:60px}.swagger-section .auth_container .auth__description{color:#999;margin-bottom:5px}.swagger-section .auth_container .auth__button{margin-top:10px;height:30px}.swagger-section .auth_container .key_auth__field{margin:5px 0}.swagger-section .auth_container .key_auth__label{display:inline-block;width:60px}.swagger-section .api-popup-dialog{position:absolute;display:none}.swagger-section .api-popup-dialog-wrapper{z-index:2;width:500px;background:#fff;padding:20px;border:1px solid #ccc;border-radius:5px;font-size:13px;color:#777;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.swagger-section .api-popup-dialog-shadow{position:fixed;top:0;left:0;width:100%;height:100%;opacity:.2;background-color:gray;z-index:1}.swagger-section .api-popup-dialog .api-popup-title{font-size:24px;padding:10px 0}.swagger-section .api-popup-dialog .error-msg{padding-left:5px;padding-bottom:5px}.swagger-section .api-popup-dialog .api-popup-content{max-height:500px;overflow-y:auto}.swagger-section .api-popup-dialog .api-popup-authbtn,.swagger-section .api-popup-dialog .api-popup-cancel{height:30px}.swagger-section .api-popup-scopes{padding:10px 20px}.swagger-section .api-popup-scopes li{padding:5px 0;line-height:20px}.swagger-section .api-popup-scopes li input{position:relative;top:2px}.swagger-section .api-popup-scopes .api-scope-desc{padding-left:20px;font-style:italic}.swagger-section .api-popup-actions{padding-top:10px}.swagger-section fieldset{padding-bottom:10px;padding-left:20px}#header{display:none}.swagger-section .swagger-ui-wrap .model-signature pre{max-height:none}.swagger-section .swagger-ui-wrap .body-textarea,.swagger-section .swagger-ui-wrap input.parameter{width:100px}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options{display:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content{display:block!important} ================================================ FILE: src/main/resources/static/swagger/css/reset.css ================================================ a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}table{border-collapse:collapse;border-spacing:0} ================================================ FILE: src/main/resources/static/swagger/css/screen.css ================================================ .swagger-section pre code{display:block;padding:.5em;background:#f0f0f0}.swagger-section pre .clojure .built_in,.swagger-section pre .lisp .title,.swagger-section pre .nginx .title,.swagger-section pre .subst,.swagger-section pre .tag .title,.swagger-section pre code{color:#000}.swagger-section pre .addition,.swagger-section pre .aggregate,.swagger-section pre .apache .cbracket,.swagger-section pre .apache .tag,.swagger-section pre .bash .variable,.swagger-section pre .constant,.swagger-section pre .django .variable,.swagger-section pre .erlang_repl .function_or_atom,.swagger-section pre .flow,.swagger-section pre .markdown .header,.swagger-section pre .parent,.swagger-section pre .preprocessor,.swagger-section pre .ruby .symbol,.swagger-section pre .ruby .symbol .string,.swagger-section pre .rules .value,.swagger-section pre .rules .value .number,.swagger-section pre .smalltalk .class,.swagger-section pre .stream,.swagger-section pre .string,.swagger-section pre .tag .value,.swagger-section pre .template_tag,.swagger-section pre .tex .command,.swagger-section pre .tex .special,.swagger-section pre .title{color:#800}.swagger-section pre .annotation,.swagger-section pre .chunk,.swagger-section pre .comment,.swagger-section pre .diff .header,.swagger-section pre .markdown .blockquote,.swagger-section pre .template_comment{color:#888}.swagger-section pre .change,.swagger-section pre .date,.swagger-section pre .go .constant,.swagger-section pre .literal,.swagger-section pre .markdown .bullet,.swagger-section pre .markdown .link_url,.swagger-section pre .number,.swagger-section pre .regexp,.swagger-section pre .smalltalk .char,.swagger-section pre .smalltalk .symbol{color:#080}.swagger-section pre .apache .sqbracket,.swagger-section pre .array,.swagger-section pre .attr_selector,.swagger-section pre .clojure .attribute,.swagger-section pre .coffeescript .property,.swagger-section pre .decorator,.swagger-section pre .deletion,.swagger-section pre .doctype,.swagger-section pre .envvar,.swagger-section pre .erlang_repl .reserved,.swagger-section pre .filter .argument,.swagger-section pre .important,.swagger-section pre .javadoc,.swagger-section pre .label,.swagger-section pre .localvars,.swagger-section pre .markdown .link_label,.swagger-section pre .nginx .built_in,.swagger-section pre .pi,.swagger-section pre .prompt,.swagger-section pre .pseudo,.swagger-section pre .ruby .string,.swagger-section pre .shebang,.swagger-section pre .tex .formula,.swagger-section pre .vhdl .attribute{color:#88f}.swagger-section pre .aggregate,.swagger-section pre .apache .tag,.swagger-section pre .bash .variable,.swagger-section pre .built_in,.swagger-section pre .css .tag,.swagger-section pre .go .typename,.swagger-section pre .id,.swagger-section pre .javadoctag,.swagger-section pre .keyword,.swagger-section pre .markdown .strong,.swagger-section pre .phpdoc,.swagger-section pre .request,.swagger-section pre .smalltalk .class,.swagger-section pre .status,.swagger-section pre .tex .command,.swagger-section pre .title,.swagger-section pre .winutils,.swagger-section pre .yardoctag{font-weight:700}.swagger-section pre .markdown .emphasis{font-style:italic}.swagger-section pre .nginx .built_in{font-weight:400}.swagger-section pre .coffeescript .javascript,.swagger-section pre .javascript .xml,.swagger-section pre .tex .formula,.swagger-section pre .xml .cdata,.swagger-section pre .xml .css,.swagger-section pre .xml .javascript,.swagger-section pre .xml .vbscript{opacity:.5}.swagger-section .hljs{display:block;overflow-x:auto;padding:.5em;background:#f0f0f0}.swagger-section .hljs,.swagger-section .hljs-subst{color:#444}.swagger-section .hljs-attribute,.swagger-section .hljs-doctag,.swagger-section .hljs-keyword,.swagger-section .hljs-meta-keyword,.swagger-section .hljs-name,.swagger-section .hljs-selector-tag{font-weight:700}.swagger-section .hljs-addition,.swagger-section .hljs-built_in,.swagger-section .hljs-bullet,.swagger-section .hljs-code,.swagger-section .hljs-literal{color:#1f811f}.swagger-section .hljs-link,.swagger-section .hljs-regexp,.swagger-section .hljs-selector-attr,.swagger-section .hljs-selector-pseudo,.swagger-section .hljs-symbol,.swagger-section .hljs-template-variable,.swagger-section .hljs-variable{color:#bc6060}.swagger-section .hljs-deletion,.swagger-section .hljs-number,.swagger-section .hljs-quote,.swagger-section .hljs-selector-class,.swagger-section .hljs-selector-id,.swagger-section .hljs-string,.swagger-section .hljs-template-tag,.swagger-section .hljs-type{color:#800}.swagger-section .hljs-section,.swagger-section .hljs-title{color:#800;font-weight:700}.swagger-section .hljs-comment{color:#888}.swagger-section .hljs-meta{color:#2b6ea1}.swagger-section .hljs-emphasis{font-style:italic}.swagger-section .hljs-strong{font-weight:700}.swagger-section .swagger-ui-wrap{line-height:1;font-family:Droid Sans,sans-serif;min-width:760px;max-width:960px;margin-left:auto;margin-right:auto}.swagger-section .swagger-ui-wrap b,.swagger-section .swagger-ui-wrap strong{font-family:Droid Sans,sans-serif;font-weight:700}.swagger-section .swagger-ui-wrap blockquote,.swagger-section .swagger-ui-wrap q{quotes:none}.swagger-section .swagger-ui-wrap p{line-height:1.4em;padding:0 0 10px;color:#333}.swagger-section .swagger-ui-wrap blockquote:after,.swagger-section .swagger-ui-wrap blockquote:before,.swagger-section .swagger-ui-wrap q:after,.swagger-section .swagger-ui-wrap q:before{content:none}.swagger-section .swagger-ui-wrap .heading_with_menu h1,.swagger-section .swagger-ui-wrap .heading_with_menu h2,.swagger-section .swagger-ui-wrap .heading_with_menu h3,.swagger-section .swagger-ui-wrap .heading_with_menu h4,.swagger-section .swagger-ui-wrap .heading_with_menu h5,.swagger-section .swagger-ui-wrap .heading_with_menu h6{display:block;clear:none;float:left;-ms-box-sizing:border-box;box-sizing:border-box;width:60%}.swagger-section .swagger-ui-wrap table{border-collapse:collapse;border-spacing:0}.swagger-section .swagger-ui-wrap table thead tr th{padding:5px;font-size:.9em;color:#666;border-bottom:1px solid #999}.swagger-section .swagger-ui-wrap table tbody tr:last-child td{border-bottom:none}.swagger-section .swagger-ui-wrap table tbody tr.offset{background-color:#f0f0f0}.swagger-section .swagger-ui-wrap table tbody tr td{padding:6px;font-size:.9em;border-bottom:1px solid #ccc;vertical-align:top;line-height:1.3em}.swagger-section .swagger-ui-wrap ol{margin:0 0 10px;padding:0 0 0 18px;list-style-type:decimal}.swagger-section .swagger-ui-wrap ol li{padding:5px 0;font-size:.9em;color:#333}.swagger-section .swagger-ui-wrap ol,.swagger-section .swagger-ui-wrap ul{list-style:none}.swagger-section .swagger-ui-wrap h1 a,.swagger-section .swagger-ui-wrap h2 a,.swagger-section .swagger-ui-wrap h3 a,.swagger-section .swagger-ui-wrap h4 a,.swagger-section .swagger-ui-wrap h5 a,.swagger-section .swagger-ui-wrap h6 a{text-decoration:none}.swagger-section .swagger-ui-wrap h1 a:hover,.swagger-section .swagger-ui-wrap h2 a:hover,.swagger-section .swagger-ui-wrap h3 a:hover,.swagger-section .swagger-ui-wrap h4 a:hover,.swagger-section .swagger-ui-wrap h5 a:hover,.swagger-section .swagger-ui-wrap h6 a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap h1 span.divider,.swagger-section .swagger-ui-wrap h2 span.divider,.swagger-section .swagger-ui-wrap h3 span.divider,.swagger-section .swagger-ui-wrap h4 span.divider,.swagger-section .swagger-ui-wrap h5 span.divider,.swagger-section .swagger-ui-wrap h6 span.divider{color:#aaa}.swagger-section .swagger-ui-wrap a{color:#547f00}.swagger-section .swagger-ui-wrap a img{border:none}.swagger-section .swagger-ui-wrap article,.swagger-section .swagger-ui-wrap aside,.swagger-section .swagger-ui-wrap details,.swagger-section .swagger-ui-wrap figcaption,.swagger-section .swagger-ui-wrap figure,.swagger-section .swagger-ui-wrap footer,.swagger-section .swagger-ui-wrap header,.swagger-section .swagger-ui-wrap hgroup,.swagger-section .swagger-ui-wrap menu,.swagger-section .swagger-ui-wrap nav,.swagger-section .swagger-ui-wrap section,.swagger-section .swagger-ui-wrap summary{display:block}.swagger-section .swagger-ui-wrap pre{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;background-color:#fcf6db;border:1px solid #e5e0c6;padding:10px}.swagger-section .swagger-ui-wrap pre code{line-height:1.6em;background:none}.swagger-section .swagger-ui-wrap .content>.content-type>div>label{clear:both;display:block;color:#0f6ab4;font-size:1.1em;margin:0;padding:15px 0 5px}.swagger-section .swagger-ui-wrap .content pre{font-size:12px;margin-top:5px;padding:5px}.swagger-section .swagger-ui-wrap .icon-btn{cursor:pointer}.swagger-section .swagger-ui-wrap .info_title{padding-bottom:10px;font-weight:700;font-size:25px}.swagger-section .swagger-ui-wrap .footer{margin-top:20px}.swagger-section .swagger-ui-wrap div.big p,.swagger-section .swagger-ui-wrap p.big{font-size:1em;margin-bottom:10px}.swagger-section .swagger-ui-wrap form.fullwidth ol li.numeric input,.swagger-section .swagger-ui-wrap form.fullwidth ol li.string input,.swagger-section .swagger-ui-wrap form.fullwidth ol li.text textarea,.swagger-section .swagger-ui-wrap form.fullwidth ol li.url input{width:500px!important}.swagger-section .swagger-ui-wrap .info_license,.swagger-section .swagger-ui-wrap .info_tos{padding-bottom:5px}.swagger-section .swagger-ui-wrap .message-fail{color:#c00}.swagger-section .swagger-ui-wrap .info_email,.swagger-section .swagger-ui-wrap .info_name,.swagger-section .swagger-ui-wrap .info_url{padding-bottom:5px}.swagger-section .swagger-ui-wrap .info_description{padding-bottom:10px;font-size:15px}.swagger-section .swagger-ui-wrap .markdown ol li,.swagger-section .swagger-ui-wrap .markdown ul li{padding:3px 0;line-height:1.4em;color:#333}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input{display:block;padding:4px;width:auto;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input.title,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input.title,.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input.title{font-size:1.3em}.swagger-section .swagger-ui-wrap table.fullwidth{width:100%}.swagger-section .swagger-ui-wrap .model-signature{font-family:Droid Sans,sans-serif;font-size:1em;line-height:1.5em}.swagger-section .swagger-ui-wrap .model-signature .signature-nav a{text-decoration:none;color:#aaa}.swagger-section .swagger-ui-wrap .model-signature .signature-nav a:hover{text-decoration:underline;color:#000}.swagger-section .swagger-ui-wrap .model-signature .signature-nav .selected{color:#000;text-decoration:none}.swagger-section .swagger-ui-wrap .model-signature .propType{color:#55a}.swagger-section .swagger-ui-wrap .model-signature pre:hover{background-color:#ffd}.swagger-section .swagger-ui-wrap .model-signature pre{font-size:.85em;line-height:1.2em;overflow:auto;height:200px;resize:vertical;cursor:pointer}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav{display:block;min-width:230px;margin:0;padding:0}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li{float:left;margin:0 5px 5px 0;padding:2px 5px 2px 0;border-right:1px solid #ddd}.swagger-section .swagger-ui-wrap .model-signature .propOpt{color:#555}.swagger-section .swagger-ui-wrap .model-signature .snippet small{font-size:.75em}.swagger-section .swagger-ui-wrap .model-signature .propOptKey{font-style:italic}.swagger-section .swagger-ui-wrap .model-signature .description .strong{font-weight:700;color:#000;font-size:.9em}.swagger-section .swagger-ui-wrap .model-signature .description div{font-size:.9em;line-height:1.5em;margin-left:1em}.swagger-section .swagger-ui-wrap .model-signature .description .stronger{font-weight:700;color:#000}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper{border-spacing:0;position:absolute;background-color:#fff;border:1px solid #bbb;display:none;font-size:11px;max-width:400px;line-height:30px;color:#000;padding:5px;margin-left:10px}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper th{text-align:center;background-color:#eee;border:1px solid #bbb;font-size:11px;color:#666;font-weight:700;padding:5px;line-height:15px}.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper .optionName{font-weight:700}.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:first-child,.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:last-child{display:inline}.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown>p:not(:first-child):before{display:block;content:''}.swagger-section .swagger-ui-wrap .model-signature .description span:last-of-type.propDesc.markdown>p:only-child{margin-right:-3px}.swagger-section .swagger-ui-wrap .model-signature .propName{font-weight:700}.swagger-section .swagger-ui-wrap .model-signature .signature-container{clear:both}.swagger-section .swagger-ui-wrap .body-textarea{width:300px;height:100px;border:1px solid #aaa}.swagger-section .swagger-ui-wrap .markdown li code,.swagger-section .swagger-ui-wrap .markdown p code{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;background-color:#f0f0f0;color:#000;padding:1px 3px}.swagger-section .swagger-ui-wrap .required{font-weight:700}.swagger-section .swagger-ui-wrap .editor_holder{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;font-size:.9em}.swagger-section .swagger-ui-wrap .editor_holder label{font-weight:400!important}.swagger-section .swagger-ui-wrap .editor_holder label.required{font-weight:700!important}.swagger-section .swagger-ui-wrap input.parameter{width:300px;border:1px solid #aaa}.swagger-section .swagger-ui-wrap h1{color:#000;font-size:1.5em;line-height:1.3em;padding:10px 0;font-family:Droid Sans,sans-serif;font-weight:700}.swagger-section .swagger-ui-wrap .heading_with_menu{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap .heading_with_menu ul{display:block;clear:none;float:right;-ms-box-sizing:border-box;box-sizing:border-box;margin-top:10px}.swagger-section .swagger-ui-wrap h2{color:#000;font-size:1.3em;padding:10px 0}.swagger-section .swagger-ui-wrap h2 a{color:#000}.swagger-section .swagger-ui-wrap h2 span.sub{font-size:.7em;color:#999;font-style:italic}.swagger-section .swagger-ui-wrap h2 span.sub a{color:#777}.swagger-section .swagger-ui-wrap span.weak{color:#666}.swagger-section .swagger-ui-wrap .message-success{color:#89bf04}.swagger-section .swagger-ui-wrap caption,.swagger-section .swagger-ui-wrap td,.swagger-section .swagger-ui-wrap th{text-align:left;font-weight:400;vertical-align:middle}.swagger-section .swagger-ui-wrap .code{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.text textarea{font-family:Droid Sans,sans-serif;height:250px;padding:4px;display:block;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.select select{display:block;clear:both}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean label{display:block;float:left;clear:none;margin:0;padding:0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean input{display:block;float:left;clear:none;margin:0 5px 0 0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.required label{color:#000}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label{display:block;clear:both;width:auto;padding:0 0 3px;color:#666}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label abbr{padding-left:3px;color:#888}.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li p.inline-hints{margin-left:0;font-style:italic;font-size:.9em;margin:0}.swagger-section .swagger-ui-wrap form.formtastic fieldset.buttons{margin:0;padding:0}.swagger-section .swagger-ui-wrap span.blank,.swagger-section .swagger-ui-wrap span.empty{color:#888;font-style:italic}.swagger-section .swagger-ui-wrap .markdown h3{color:#547f00}.swagger-section .swagger-ui-wrap .markdown h4{color:#666}.swagger-section .swagger-ui-wrap .markdown pre{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;background-color:#fcf6db;border:1px solid #e5e0c6;padding:10px;margin:0 0 10px}.swagger-section .swagger-ui-wrap .markdown pre code{line-height:1.6em;overflow:auto}.swagger-section .swagger-ui-wrap div.gist{margin:20px 0 25px!important}.swagger-section .swagger-ui-wrap ul#resources{font-family:Droid Sans,sans-serif;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource{border-bottom:1px solid #ddd}.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading h2 a,.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading h2 a{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading ul.options li a,.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading ul.options li a{color:#555}.swagger-section .swagger-ui-wrap ul#resources li.resource:last-child{border-bottom:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading{border:1px solid transparent;float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options{overflow:hidden;padding:0;display:block;clear:none;float:right;margin:14px 10px 0 0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li{float:left;clear:none;margin:0;padding:2px 10px;border-right:1px solid #ddd;color:#666;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a{color:#aaa;text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover{text-decoration:underline;color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a.active,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:active,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.first,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:first-child{padding-left:0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options.first,.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options:first-child{padding-left:0}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2{color:#999;padding-left:0;display:block;clear:none;float:left;font-family:Droid Sans,sans-serif;font-weight:700}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a{color:#999}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation{float:none;clear:both;overflow:hidden;display:block;margin:0 0 10px;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading{float:none;clear:both;overflow:hidden;display:block;margin:0;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3{display:block;clear:none;float:left;width:auto;margin:0;padding:0;line-height:1.1em;color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path{padding-left:10px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a{color:#000;text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a.toggleOperation.deprecated{text-decoration:line-through}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.http_method a{text-transform:uppercase;text-decoration:none;color:#fff;display:inline-block;width:50px;font-size:.7em;text-align:center;padding:7px 0 4px;border-radius:2px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span{margin:0;padding:0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options{overflow:hidden;padding:0;display:block;clear:none;float:right;margin:6px 10px 0 0}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li{float:left;clear:none;margin:0;padding:2px 10px;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a{text-decoration:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .markdown p{color:inherit;padding:0;line-height:inherit}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .nickname{color:#aaa;padding:0;line-height:inherit}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content{border-top:none;padding:10px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;margin:0 0 20px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content h4{font-size:1.1em;margin:0;padding:15px 0 5px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header{float:none;clear:both;overflow:hidden;display:block}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header a{padding:4px 0 0 10px;display:inline-block;font-size:.9em}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header input.submit{display:block;clear:none;float:left;padding:6px 8px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header span.response_throbber{background-image:url(../images/throbber.gif);width:128px;height:16px;display:block;clear:none;float:right}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form input[type=text].error{outline:2px solid #000;outline-color:#c00}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form select[name=parameterContentType]{max-width:300px}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.response div.block pre{font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;padding:10px;font-size:.9em;max-height:400px;overflow-y:auto}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading{background-color:#f9f2e9;border:1px solid #f0e0ca}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading h3 span.http_method a{background-color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#f0e0ca;color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li a{color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content{background-color:#faf5ee;border:1px solid #f0e0ca}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content h4{color:#c5862b}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content div.sandbox_header a{color:#dcb67f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading{background-color:#fcffcd;border:1px solid #000;border-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading h3 span.http_method a{text-transform:uppercase;background-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#ffd20f;color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li a{color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content{background-color:#fcffcd;border:1px solid #000;border-color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content h4{color:#ffd20f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content div.sandbox_header a{color:#6fc992}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading{background-color:#f5e8e8;border:1px solid #e8c6c7}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading h3 span.http_method a{text-transform:uppercase;background-color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#e8c6c7;color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li a{color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content{background-color:#f7eded;border:1px solid #e8c6c7}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content h4{color:#a41e22}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content div.sandbox_header a{color:#c8787a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading{background-color:#e7f6ec;border:1px solid #c3e8d1}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading h3 span.http_method a{background-color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3e8d1;color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li a{color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content{background-color:#ebf7f0;border:1px solid #c3e8d1}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content h4{color:#10a54a}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content div.sandbox_header a{color:#6fc992}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading{background-color:#fce9e3;border:1px solid #f5d5c3}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading h3 span.http_method a{background-color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#f0cecb;color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li a{color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content{background-color:#faf0ef;border:1px solid #f0cecb}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content h4{color:#d38042}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content div.sandbox_header a{color:#dcb67f}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading{background-color:#e7f0f7;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading h3 span.http_method a{background-color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3d9ec;color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li a{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content{background-color:#ebf3f9;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content h4{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content div.sandbox_header a{color:#6fa5d2}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading{background-color:#e7f0f7;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading h3 span.http_method a{background-color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li{border-right:1px solid #ddd;border-right-color:#c3d9ec;color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li a{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content{background-color:#ebf3f9;border:1px solid #c3d9ec}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content h4{color:#0f6ab4}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content div.sandbox_header a{color:#6fa5d2}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content{border-top:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li:last-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li.last,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li:last-child{padding-right:0;border-right:none}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a.active,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:active,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:hover{text-decoration:underline}.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations.first,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations:first-child,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li.first,.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li:first-child{padding-left:0}.swagger-section .swagger-ui-wrap p#colophon{margin:0 15px 40px;padding:10px 0;font-size:.8em;border-top:1px solid #ddd;font-family:Droid Sans,sans-serif;color:#999;font-style:italic}.swagger-section .swagger-ui-wrap p#colophon a{text-decoration:none;color:#547f00}.swagger-section .swagger-ui-wrap h3{color:#000;font-size:1.1em;padding:10px 0}.swagger-section .swagger-ui-wrap .markdown ol,.swagger-section .swagger-ui-wrap .markdown ul{font-family:Droid Sans,sans-serif;margin:5px 0 10px;padding:0 0 0 18px;list-style-type:disc}.swagger-section .swagger-ui-wrap form.form_box{background-color:#ebf3f9;border:1px solid #c3d9ec;padding:10px}.swagger-section .swagger-ui-wrap form.form_box label{color:#0f6ab4!important}.swagger-section .swagger-ui-wrap form.form_box input[type=submit]{display:block;padding:10px}.swagger-section .swagger-ui-wrap form.form_box p.weak{font-size:.8em}.swagger-section .swagger-ui-wrap form.form_box p{font-size:.9em;padding:0 0 15px;color:#7e7b6d}.swagger-section .swagger-ui-wrap form.form_box p a{color:#646257}.swagger-section .swagger-ui-wrap form.form_box p strong{color:#000}.swagger-section .swagger-ui-wrap .operation-status td.markdown>p:last-child{padding-bottom:0}.swagger-section .title{font-style:bold}.swagger-section .secondary_form{display:none}.swagger-section .main_image{display:block;margin-left:auto;margin-right:auto}.swagger-section .oauth_body{margin-left:100px;margin-right:100px}.swagger-section .oauth_submit{text-align:center;display:inline-block}.swagger-section .authorize-wrapper{margin:15px 0 10px}.swagger-section .authorize-wrapper_operation{float:right}.swagger-section .authorize__btn:hover{text-decoration:underline;cursor:pointer}.swagger-section .authorize__btn_operation:hover .authorize-scopes{display:block}.swagger-section .authorize-scopes{position:absolute;margin-top:20px;background:#fff;border:1px solid #ccc;border-radius:5px;display:none;font-size:13px;max-width:300px;line-height:30px;color:#000;padding:5px}.swagger-section .authorize-scopes .authorize__scope{text-decoration:none}.swagger-section .authorize__btn_operation{height:18px;vertical-align:middle;display:inline-block;background:url(../images/explorer_icons.png) no-repeat}.swagger-section .authorize__btn_operation_login{background-position:0 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section .authorize__btn_operation_logout{background-position:-30px 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section #auth_container{color:#fff;display:inline-block;border:none;padding:5px;width:87px;height:13px}.swagger-section #auth_container .authorize__btn{color:#fff}.swagger-section .auth_container{padding:0 0 10px;margin-bottom:5px;border-bottom:1px solid #ccc;font-size:.9em}.swagger-section .auth_container .auth__title{color:#547f00;font-size:1.2em}.swagger-section .auth_container .basic_auth__label{display:inline-block;width:60px}.swagger-section .auth_container .auth__description{color:#999;margin-bottom:5px}.swagger-section .auth_container .auth__button{margin-top:10px;height:30px}.swagger-section .auth_container .key_auth__field{margin:5px 0}.swagger-section .auth_container .key_auth__label{display:inline-block;width:60px}.swagger-section .api-popup-dialog{position:absolute;display:none}.swagger-section .api-popup-dialog-wrapper{z-index:2;width:500px;background:#fff;padding:20px;border:1px solid #ccc;border-radius:5px;font-size:13px;color:#777;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.swagger-section .api-popup-dialog-shadow{position:fixed;top:0;left:0;width:100%;height:100%;opacity:.2;background-color:gray;z-index:1}.swagger-section .api-popup-dialog .api-popup-title{font-size:24px;padding:10px 0}.swagger-section .api-popup-dialog .error-msg{padding-left:5px;padding-bottom:5px}.swagger-section .api-popup-dialog .api-popup-content{max-height:500px;overflow-y:auto}.swagger-section .api-popup-dialog .api-popup-authbtn,.swagger-section .api-popup-dialog .api-popup-cancel{height:30px}.swagger-section .api-popup-scopes{padding:10px 20px}.swagger-section .api-popup-scopes li{padding:5px 0;line-height:20px}.swagger-section .api-popup-scopes li input{position:relative;top:2px}.swagger-section .api-popup-scopes .api-scope-desc{padding-left:20px;font-style:italic}.swagger-section .api-popup-actions{padding-top:10px}.swagger-section fieldset{padding-bottom:10px;padding-left:20px}.swagger-section .access,.swagger-section .auth{float:right}.swagger-section .api-ic{height:18px;vertical-align:middle;display:inline-block;background:url(../images/explorer_icons.png) no-repeat}.swagger-section .api-ic .api_information_panel{position:relative;margin-top:20px;margin-left:-5px;background:#fff;border:1px solid #ccc;border-radius:5px;display:none;font-size:13px;max-width:300px;line-height:30px;color:#000;padding:5px}.swagger-section .api-ic .api_information_panel p .api-msg-enabled{color:green}.swagger-section .api-ic .api_information_panel p .api-msg-disabled{color:red}.swagger-section .api-ic:hover .api_information_panel{position:absolute;display:block}.swagger-section .ic-info{background-position:0 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section .ic-warning{background-position:-60px 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section .ic-error{background-position:-30px 0;width:18px;margin-top:-6px;margin-left:4px}.swagger-section .ic-off{background-position:-90px 0;width:58px;margin-top:-4px;cursor:pointer}.swagger-section .ic-on{background-position:-160px 0;width:58px;margin-top:-4px;cursor:pointer}.swagger-section #header{background-color:#89bf04;padding:9px 14px 19px;height:23px;min-width:775px}.swagger-section #input_baseUrl{width:400px}.swagger-section #api_selector{display:block;clear:none;float:right}.swagger-section #api_selector .input{display:inline-block;clear:none;margin:0 10px 0 0}.swagger-section #api_selector input{font-size:.9em;padding:3px;margin:0}.swagger-section #input_apiKey{width:200px}.swagger-section #auth_container .authorize__btn,.swagger-section #explore{display:block;text-decoration:none;font-weight:700;padding:6px 8px;font-size:.9em;color:#fff;background-color:#547f00;border-radius:4px}.swagger-section #auth_container .authorize__btn:hover,.swagger-section #explore:hover{background-color:#547f00}.swagger-section #header #logo{font-size:1.5em;font-weight:700;text-decoration:none;color:#fff}.swagger-section #header #logo .logo__img{display:block;float:left;margin-top:2px}.swagger-section #header #logo .logo__title{display:inline-block;padding:5px 0 0 10px}.swagger-section #content_message{margin:10px 15px;font-style:italic;color:#999}.swagger-section #message-bar{min-height:30px;text-align:center;padding-top:10px}.swagger-section .swagger-collapse:before{content:"-"}.swagger-section .swagger-expand:before{content:"+"}.swagger-section .error{outline-color:#c00;background-color:#f2dede} ================================================ FILE: src/main/resources/static/swagger/css/style.css ================================================ .swagger-section #header a#logo{font-size:1.5em;font-weight:700;text-decoration:none;padding:20px 0 20px 40px}#text-head{font-size:80px;font-family:Roboto,sans-serif;color:#fff;float:right;margin-right:20%}.navbar-fixed-top .navbar-brand,.navbar-fixed-top .navbar-nav,.navbar-header{height:auto}.navbar-inverse{background-color:#000;border-color:#000}#navbar-brand{margin-left:20%}.navtext{font-size:10px}.h1,h1{font-size:60px}.navbar-default .navbar-header .navbar-brand{color:#a2dfee}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a{color:#393939;font-family:Arvo,serif;font-size:1.5em}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover{color:#000}.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2{color:#525252;padding-left:0;display:block;clear:none;float:left;font-family:Arvo,serif;font-weight:700}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#0a0a0a}.container1{width:1500px;margin:auto;margin-top:0;background-repeat:no-repeat;background-position:-40px -20px;margin-bottom:210px}.container-inner{width:1200px;margin:auto;background-color:hsla(192,8%,88%,.75);padding-bottom:40px;padding-top:40px;border-radius:15px}.header-content{padding:0;width:1000px}.title1{font-size:80px;font-family:Vollkorn,serif;color:#404040;text-align:center;padding-top:40px;padding-bottom:100px}#icon{margin-top:-18px}.subtext{font-size:25px;font-style:italic;color:#08b;text-align:right;padding-right:250px}.bg-primary{background-color:#00468b}.navbar-default .nav>li>a,.navbar-default .nav>li>a:focus,.navbar-default .nav>li>a:focus:hover,.navbar-default .nav>li>a:hover{color:#08b}.text-faded{font-size:25px;font-family:Vollkorn,serif}.section-heading{font-family:Vollkorn,serif;font-size:45px;padding-bottom:10px}hr{border-color:#00468b;padding-bottom:10px}.description{margin-top:20px;padding-bottom:200px}.description li{font-family:Vollkorn,serif;font-size:25px;color:#525252;margin-left:28%;padding-top:5px}.gap{margin-top:200px}.troubleshootingtext{color:hsla(0,0%,100%,.7);padding-left:30%}.troubleshootingtext li{list-style-type:circle;font-size:25px;padding-bottom:5px}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.block.response_body.json:hover{cursor:pointer}.backdrop{color:blue}#myModal{height:100%}.modal-backdrop{bottom:0;position:fixed}.curl{padding:10px;font-family:Anonymous Pro,Menlo,Consolas,Bitstream Vera Sans Mono,Courier New,monospace;font-size:.9em;max-height:400px;margin-top:5px;overflow-y:auto;background-color:#fcf6db;border:1px solid #e5e0c6;border-radius:4px}.curl_title{font-size:1.1em;margin:0;padding:15px 0 5px;font-family:Open Sans,Helvetica Neue,Arial,sans-serif;font-weight:500;line-height:1.1}.footer{display:none}.swagger-section .swagger-ui-wrap h2{padding:0}h2{margin:0;margin-bottom:5px}.markdown p,.swagger-section .swagger-ui-wrap .code{font-size:15px;font-family:Arvo,serif}.swagger-section .swagger-ui-wrap b{font-family:Arvo,serif}#signin:hover{cursor:pointer}.dropdown-menu{padding:15px}.navbar-right .dropdown-menu{left:0;right:auto}#signinbutton{width:100%;height:32px;font-size:13px;font-weight:700;color:#08b}.navbar-default .nav>li .details{color:#000;text-transform:none;font-size:15px;font-weight:400;font-family:Open Sans,sans-serif;font-style:italic;line-height:20px;top:-2px}.navbar-default .nav>li .details:hover{color:#000}#signout{width:100%;height:32px;font-size:13px;font-weight:700;color:#08b} ================================================ FILE: src/main/resources/static/swagger/css/typography.css ================================================ ================================================ FILE: src/main/resources/static/swagger/index.html ================================================ 接口文档 - 森多邦

 
================================================ FILE: src/main/resources/static/swagger/index.yaml ================================================ swagger: '2.0' info: description: sdb是一个轻量级的Java快速开发平台,能快速开发项目并交付【接私活利器】 version: 1.0.0 title: 人人快速开发平台 basePath: /sdb schemes: - http #认证 securityDefinitions: api_key: type: "apiKey" name: "token" in: "header" #定义接口数据 paths: /captcha.jpg: get: tags: - 用户登录 summary: 获取验证码 produces: - application/octet-stream parameters: - name: uuid description: UUID in: query type: string required: true /sys/login: post: tags: - 用户登录 summary: 用户登录 produces: - application/json parameters: - name: body description: 管理员对象 in: body type: string schema: $ref: '#/definitions/LoginForm' required: true responses: '200': schema: $ref: '#/definitions/Login' /sys/user/list: get: tags: - 管理员管理 summary: 管理员列表 produces: - application/json parameters: - name: page description: 页码 in: query type: integer required: true - name: limit description: 每页条数 in: query type: integer required: true - name: sidx description: 排序字段 in: query type: string - name: order description: 排序方式,如:asc、desc in: query type: string - name: username description: 用户名 in: query type: string responses: '200': description: 返回管理员列表 schema: $ref: '#/definitions/SysUserList' /sys/user/info: get: tags: - 管理员管理 summary: 当前管理员信息 produces: - application/json responses: '200': description: 返回当前管理员信息 schema: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 user: $ref: '#/definitions/SysUser' /sys/user/info/{userId}: get: tags: - 管理员管理 summary: 获取管理员信息 produces: - application/json parameters: - name: userId description: 用户ID in: path type: integer required: true responses: '200': description: 返回管理员信息 schema: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 user: $ref: '#/definitions/SysUser' /sys/user/password: post: tags: - 管理员管理 summary: 修改密码 produces: - application/json parameters: - name: body description: 管理员对象 in: body type: string schema: $ref: '#/definitions/PasswordForm' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/user/save: post: tags: - 管理员管理 summary: 添加管理员 produces: - application/json parameters: - name: body description: 管理员对象 in: body type: string schema: $ref: '#/definitions/SysUserEdit' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/user/update: post: tags: - 管理员管理 summary: 修改管理员 produces: - application/json parameters: - name: body description: 管理员对象 in: body type: string schema: $ref: '#/definitions/SysUserEdit' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/user/delete: post: tags: - 管理员管理 summary: 删除管理员 produces: - application/json parameters: - name: body description: 用户ID列表 in: body type: array items: type: integer format: int64 default: 0 required: true responses: '200': schema: $ref: '#/definitions/R' /sys/role/list: get: tags: - 角色管理 summary: 角色列表 produces: - application/json parameters: - name: page description: 页码 in: query type: integer required: true - name: limit description: 每页条数 in: query type: integer required: true - name: sidx description: 排序字段 in: query type: string - name: order description: 排序方式,如:asc、desc in: query type: string - name: roleName description: 角色名 in: query type: string responses: '200': description: 返回角色列表 schema: $ref: '#/definitions/SysRoleList' /sys/role/select: get: tags: - 角色管理 summary: 当前账号角色列表 description: 如果是超级管理员,则能查询所有的角色列表 produces: - application/json responses: '200': description: 返回角色列表 schema: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 list: type: array items: $ref: '#/definitions/SysRole' /sys/role/info/{roleId}: get: tags: - 角色管理 summary: 获取角色信息 produces: - application/json parameters: - name: roleId description: 角色ID in: path type: integer required: true responses: '200': description: 返回角色信息 schema: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 role: $ref: '#/definitions/SysRole' /sys/role/save: post: tags: - 角色管理 summary: 添加角色 produces: - application/json parameters: - name: body description: 角色对象 in: body type: string schema: $ref: '#/definitions/SysRoleEdit' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/role/update: post: tags: - 角色管理 summary: 修改角色 produces: - application/json parameters: - name: body description: 角色对象 in: body type: string schema: $ref: '#/definitions/SysRoleEdit' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/role/delete: post: tags: - 角色管理 summary: 删除角色 produces: - application/json parameters: - name: body description: 角色ID列表 in: body type: array items: type: integer format: int64 default: 0 required: true responses: '200': schema: $ref: '#/definitions/R' /sys/menu/nav: get: tags: - 菜单管理 summary: 导航菜单列表 produces: - application/json responses: '200': description: 返回导航菜单列表 schema: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 menuList: description: 菜单列表 type: array items: $ref: '#/definitions/SysMenuEntity' permissions: description: 权限列表 type: array items: type: string /sys/menu/list: get: tags: - 菜单管理 summary: 菜单列表 produces: - application/json responses: '200': description: 返回菜单列表 schema: type: array items: $ref: '#/definitions/SysMenuEntity' /sys/menu/select: get: tags: - 菜单管理 summary: 选择菜单 description: 添加、修改菜单的时候,选择上级菜单接口 produces: - application/json responses: '200': description: 返回菜单列表 schema: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 menuList: description: 菜单列表 type: array items: $ref: '#/definitions/SysMenuEntity' /sys/menu/info/{menuId}: get: tags: - 菜单管理 summary: 获取菜单信息 produces: - application/json parameters: - name: menuId description: 菜单ID in: path type: integer required: true responses: '200': description: 返回菜单信息 schema: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 menu: description: 菜单信息 $ref: '#/definitions/SysMenuEntity' /sys/menu/save: post: tags: - 菜单管理 summary: 添加菜单 produces: - application/json parameters: - name: body description: 菜单对象 in: body type: string schema: $ref: '#/definitions/SysMenuEntityEdit' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/menu/update: post: tags: - 菜单管理 summary: 修改菜单 produces: - application/json parameters: - name: body description: 菜单对象 in: body type: string schema: $ref: '#/definitions/SysMenuEntityEdit' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/menu/delete/{menuId}: post: tags: - 菜单管理 summary: 删除菜单 produces: - application/json parameters: - name: menuId description: 菜单ID in: path type: integer required: true responses: '200': schema: $ref: '#/definitions/R' /sys/log/list: get: tags: - 系统日志 summary: 日志列表 produces: - application/json parameters: - name: page description: 页码 in: query type: integer required: true - name: limit description: 每页条数 in: query type: integer required: true - name: sidx description: 排序字段 in: query type: string - name: order description: 排序方式,如:asc、desc in: query type: string - name: key description: 用户名或用户操作 in: query type: string responses: '200': description: 返回日志列表 schema: $ref: '#/definitions/SysLogEntityList' /sys/config/list: get: tags: - 参数管理 summary: 参数列表 produces: - application/json parameters: - name: page description: 页码 in: query type: integer required: true - name: limit description: 每页条数 in: query type: integer required: true - name: sidx description: 排序字段 in: query type: string - name: order description: 排序方式,如:asc、desc in: query type: string - name: key description: 参数名 in: query type: string responses: '200': description: 返回参数列表 schema: $ref: '#/definitions/SysConfigEntityList' /sys/config/info/{id}: get: tags: - 参数管理 summary: 获取参数信息 produces: - application/json parameters: - name: id description: 参数ID in: path type: integer required: true responses: '200': description: 返回参数信息 schema: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 config: description: 返回参数信息 $ref: '#/definitions/SysConfigEntity' /sys/config/save: post: tags: - 参数管理 summary: 添加参数 produces: - application/json parameters: - name: body description: 参数对象 in: body type: string schema: $ref: '#/definitions/SysConfigEntity' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/config/update: post: tags: - 参数管理 summary: 修改参数 produces: - application/json parameters: - name: body description: 参数对象 in: body type: string schema: $ref: '#/definitions/SysConfigEntity' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/config/delete: post: tags: - 参数管理 summary: 删除参数 produces: - application/json parameters: - name: body description: 参数ID列表 in: body type: array items: type: integer format: int64 default: 0 required: true responses: '200': schema: $ref: '#/definitions/R' /sys/oss/list: get: tags: - 文件服务 summary: 文件列表 produces: - application/json parameters: - name: page description: 页码 in: query type: integer required: true - name: limit description: 每页条数 in: query type: integer required: true - name: sidx description: 排序字段 in: query type: string - name: order description: 排序方式,如:asc、desc in: query type: string responses: '200': description: 返回文件列表 schema: $ref: '#/definitions/SysOssEntityList' /sys/oss/config: get: tags: - 文件服务 summary: 云存储配置信息 produces: - application/json responses: '200': description: 返回云存储配置信息 schema: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 config: description: 云存储配置信息 $ref: '#/definitions/SysCloudStorageEntity' /sys/oss/saveConfig: post: tags: - 文件服务 summary: 保存云存储配置信息 produces: - application/json parameters: - name: body description: 参数对象 in: body type: string schema: $ref: '#/definitions/SysCloudStorageEntity' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/oss/upload: post: tags: - 文件服务 summary: 上传文件 consumes: - multipart/form-data produces: - application/json parameters: - name: file description: 文件 in: formData type: file required: true responses: '200': description: 返回文件列表 schema: $ref: '#/definitions/FileUpload' /sys/oss/delete: post: tags: - 文件服务 summary: 删除文件 produces: - application/json parameters: - name: body description: 文件ID列表 in: body type: array items: type: integer format: int64 default: 0 required: true responses: '200': schema: $ref: '#/definitions/R' /sys/schedule/list: get: tags: - 定时任务 summary: 定时任务列表 produces: - application/json parameters: - name: page description: 页码 in: query type: integer required: true - name: limit description: 每页条数 in: query type: integer required: true - name: sidx description: 排序字段 in: query type: string - name: order description: 排序方式,如:asc、desc in: query type: string - name: beanName description: spring bean名称 in: query type: string responses: '200': description: 返回定时任务列表 schema: $ref: '#/definitions/ScheduleJobList' /sys/schedule/info/{jobId}: get: tags: - 定时任务 summary: 获取定时任务信息 produces: - application/json parameters: - name: jobId description: 定时任务ID in: path type: integer required: true responses: '200': description: 返回定时任务信息 schema: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 schedule: description: 定时任务信息 $ref: '#/definitions/ScheduleJob' /sys/schedule/save: post: tags: - 定时任务 summary: 添加定时任务 produces: - application/json parameters: - name: body description: 定时任务对象 in: body type: string schema: $ref: '#/definitions/ScheduleJob' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/schedule/update: post: tags: - 定时任务 summary: 修改定时任务 produces: - application/json parameters: - name: body description: 定时任务对象 in: body type: string schema: $ref: '#/definitions/ScheduleJob' required: true responses: '200': schema: $ref: '#/definitions/R' /sys/schedule/delete: post: tags: - 定时任务 summary: 删除定时任务 produces: - application/json parameters: - name: body description: 定时任务ID列表 in: body type: array items: type: integer format: int64 default: 0 required: true responses: '200': schema: $ref: '#/definitions/R' /sys/schedule/run: post: tags: - 定时任务 summary: 立即执行任务 produces: - application/json parameters: - name: body description: 定时任务ID列表 in: body type: array items: type: integer format: int64 default: 0 required: true responses: '200': schema: $ref: '#/definitions/R' /sys/schedule/pause: post: tags: - 定时任务 summary: 暂停定时任务 produces: - application/json parameters: - name: body description: 定时任务ID列表 in: body type: array items: type: integer format: int64 default: 0 required: true responses: '200': schema: $ref: '#/definitions/R' /sys/schedule/resume: post: tags: - 定时任务 summary: 恢复定时任务 produces: - application/json parameters: - name: body description: 定时任务ID列表 in: body type: array items: type: integer format: int64 default: 0 required: true responses: '200': schema: $ref: '#/definitions/R' /sys/scheduleLog/list: get: tags: - 定时任务 summary: 定时任务日志列表 produces: - application/json parameters: - name: page description: 页码 in: query type: integer required: true - name: limit description: 每页条数 in: query type: integer required: true - name: sidx description: 排序字段 in: query type: string - name: order description: 排序方式,如:asc、desc in: query type: string - name: beanName description: spring bean名称 in: query type: string responses: '200': description: 返回定时任务日志列表 schema: $ref: '#/definitions/ScheduleJobLogList' /sys/scheduleLog/info/{logId}: get: tags: - 定时任务 summary: 获取定时任务日志信息 produces: - application/json parameters: - name: logId description: 日志ID in: path type: integer required: true responses: '200': description: 返回定时任务日志信息 schema: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 schedule: description: 定时任务日志信息 $ref: '#/definitions/ScheduleJobLog' #定义数据模型 definitions: R: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 msg: description: 失败原因 type: string Login: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 token: description: token type: string expire: description: 过期时长 type: integer format: int32 msg: description: 失败原因 type: string LoginForm: type: object properties: username: description: 用户名 type: string password: description: 密码 type: string captcha: description: 验证码 type: string uuid: description: UUID type: string PasswordForm: type: object properties: password: description: 原密码 type: string newPassword: description: 新密码 type: string SysUser: type: object properties: userId: description: 用户ID type: integer format: int64 username: description: 用户名 type: string password: description: 密码 type: string email: description: 邮箱 type: string mobile: description: 手机号 type: string status: description: 状态 0:禁用 1:正常 type: integer format: int32 roleIdList: description: 角色ID列表 type: array items: type: integer format: int64 createUserId: description: 创建者ID type: integer format: int64 createTime: description: 创建时间 type: string format: date-time SysUserList: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 page: type: object properties: totalCount: description: 总记录数 type: integer format: int32 pageSize: description: 每页记录数 type: integer format: int32 totalPage: description: 总页数 type: integer format: int32 currPage: description: 当前页数 type: integer format: int32 list: type: array items: $ref: '#/definitions/SysUser' SysUserEdit: type: object properties: userId: description: 用户ID type: integer format: int64 username: description: 用户名 type: string password: description: 密码 type: string email: description: 邮箱 type: string mobile: description: 手机号 type: string status: description: 状态 0:禁用 1:正常 type: integer format: int32 roleIdList: description: 角色ID列表 type: array items: type: integer format: int32 SysRole: type: object properties: roleId: description: 角色ID type: integer format: int64 roleName: description: 角色名称 type: string remark: description: 备注 type: string menuIdList: description: 菜单ID列表 type: array items: type: integer format: int64 createUserId: description: 创建者ID type: integer format: int64 createTime: description: 创建时间 type: string format: date-time SysRoleList: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 page: type: object properties: totalCount: description: 总记录数 type: integer format: int32 pageSize: description: 每页记录数 type: integer format: int32 totalPage: description: 总页数 type: integer format: int32 currPage: description: 当前页数 type: integer format: int32 list: type: array items: $ref: '#/definitions/SysRole' SysRoleEdit: type: object properties: roleId: description: 角色ID type: integer format: int64 roleName: description: 角色名称 type: string remark: description: 备注 type: string menuIdList: description: 菜单ID列表 type: array items: type: integer format: int64 SysMenuEntity: type: object properties: menuId: description: 菜单ID type: integer format: int64 name: description: 菜单名称 type: string parentId: description: 父菜单ID,一级菜单为0 type: integer format: int64 parentName: description: 父菜单名称 type: string url: description: 菜单URL type: string perms: description: 授权标识 type: string type: description: 类型 0:目录 1:菜单 2:按钮 type: integer format: int32 icon: description: 菜单图标 type: string orderNum: description: 排序 type: integer format: int32 open: description: 是否展开 true:展开 false:不展开 type: boolean format: int32 SysMenuEntityEdit: type: object properties: menuId: description: 菜单ID type: integer format: int64 name: description: 菜单名称 type: string parentId: description: 父菜单ID,一级菜单为0 type: integer format: int64 url: description: 菜单URL type: string perms: description: 授权标识 type: string type: description: 类型 0:目录 1:菜单 2:按钮 type: integer format: int32 icon: description: 菜单图标 type: string orderNum: description: 排序 type: integer format: int32 SysLogEntity: type: object properties: id: description: 日志ID type: integer format: int64 username: description: 用户名 type: string operation: description: 用户操作 type: string method: description: 请求方法 type: string params: description: 请求参数 type: string time: description: 执行时长(毫秒) type: integer format: int64 ip: description: IP地址 type: string createTime: description: 创建时间 type: string format: date-time SysLogEntityList: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 page: type: object properties: totalCount: description: 总记录数 type: integer format: int32 pageSize: description: 每页记录数 type: integer format: int32 totalPage: description: 总页数 type: integer format: int32 currPage: description: 当前页数 type: integer format: int32 list: type: array items: $ref: '#/definitions/SysLogEntity' SysConfigEntity: type: object properties: id: description: 参数ID type: integer format: int64 key: description: 参数名 type: string value: description: 参数值 type: string remark: description: 备注 type: string SysConfigEntityList: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 page: type: object properties: totalCount: description: 总记录数 type: integer format: int32 pageSize: description: 每页记录数 type: integer format: int32 totalPage: description: 总页数 type: integer format: int32 currPage: description: 当前页数 type: integer format: int32 list: type: array items: $ref: '#/definitions/SysConfigEntity' SysOssEntity: type: object properties: id: description: ID type: integer format: int64 url: description: URL地址 type: string createTime: description: 创建时间 type: string format: date-time SysOssEntityList: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 page: type: object properties: totalCount: description: 总记录数 type: integer format: int32 pageSize: description: 每页记录数 type: integer format: int32 totalPage: description: 总页数 type: integer format: int32 currPage: description: 当前页数 type: integer format: int32 list: type: array items: $ref: '#/definitions/SysOssEntity' SysCloudStorageEntity: type: object properties: type: description: 类型 1:七牛 2:阿里云 3:腾讯云 type: integer format: int32 qiniuDomain: description: 七牛绑定的域名 type: string qiniuPrefix: description: 七牛路径前缀 type: string qiniuAccessKey: description: 七牛ACCESS_KEY type: string qiniuSecretKey: description: 七牛SECRET_KEY type: string qiniuBucketName: description: 七牛存储空间名 type: string aliyunDomain: description: 阿里云绑定的域名 type: string aliyunPrefix: description: 阿里云路径前缀 type: string aliyunEndPoint: description: 阿里云EndPoint type: string aliyunAccessKeyId: description: 阿里云AccessKeyId type: string aliyunAccessKeySecret: description: 阿里云AccessKeySecret type: string aliyunBucketName: description: 阿里云BucketName type: string qcloudDomain: description: 腾讯云绑定的域名 type: string qcloudPrefix: description: 腾讯云路径前缀 type: string qcloudAppId: description: 腾讯云AppId type: string qcloudSecretId: description: 腾讯云SecretId type: string qcloudSecretKey: description: 腾讯云SecretKey type: string qcloudBucketName: description: 腾讯云BucketName type: string qcloudRegion: description: 腾讯云COS所属地区 type: string FileUpload: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 url: description: 文件URL地址 type: string msg: description: 失败原因 type: string ScheduleJob: type: object properties: jobId: description: 任务ID type: integer format: int64 beanName: description: spring bean名称 type: string methodName: description: 方法名 type: string params: description: 参数 type: string cronExpression: description: cron表达式 type: string status: description: 任务状态 0:正常 1:暂停 type: integer format: int32 remark: description: 备注 type: string createTime: description: 创建时间 type: string format: date-time ScheduleJobList: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 page: type: object properties: totalCount: description: 总记录数 type: integer format: int32 pageSize: description: 每页记录数 type: integer format: int32 totalPage: description: 总页数 type: integer format: int32 currPage: description: 当前页数 type: integer format: int32 list: type: array items: $ref: '#/definitions/ScheduleJob' ScheduleJobLog: type: object properties: logId: description: 日志id type: integer format: int64 jobId: description: 任务id type: integer format: int64 beanName: description: spring bean名称 type: string methodName: description: 方法名 type: string params: description: 参数 type: string status: description: 任务状态 0:成功 1:失败 type: integer format: int32 error: description: 失败信息 type: string times: description: 耗时(单位:毫秒) type: integer format: int32 createTime: description: 创建时间 type: string format: date-time ScheduleJobLogList: type: object properties: code: description: 状态码 0:成功 非0:失败 type: integer format: int32 page: type: object properties: totalCount: description: 总记录数 type: integer format: int32 pageSize: description: 每页记录数 type: integer format: int32 totalPage: description: 总页数 type: integer format: int32 currPage: description: 当前页数 type: integer format: int32 list: type: array items: $ref: '#/definitions/ScheduleJobLog' ================================================ FILE: src/main/resources/static/swagger/lang/en.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"Warning: Deprecated", "Implementation Notes":"Implementation Notes", "Response Class":"Response Class", "Status":"Status", "Parameters":"Parameters", "Parameter":"Parameter", "Value":"Value", "Description":"Description", "Parameter Type":"Parameter Type", "Data Type":"Data Type", "Response Messages":"Response Messages", "HTTP Status Code":"HTTP Status Code", "Reason":"Reason", "Response Model":"Response Model", "Request URL":"Request URL", "Response Body":"Response Body", "Response Code":"Response Code", "Response Headers":"Response Headers", "Hide Response":"Hide Response", "Headers":"Headers", "Try it out!":"Try it out!", "Show/Hide":"Show/Hide", "List Operations":"List Operations", "Expand Operations":"Expand Operations", "Raw":"Raw", "can't parse JSON. Raw result":"can't parse JSON. Raw result", "Example Value":"Example Value", "Model Schema":"Model Schema", "Model":"Model", "Click to set as parameter value":"Click to set as parameter value", "apply":"apply", "Username":"Username", "Password":"Password", "Terms of service":"Terms of service", "Created by":"Created by", "See more at":"See more at", "Contact the developer":"Contact the developer", "api version":"api version", "Response Content Type":"Response Content Type", "Parameter content type:":"Parameter content type:", "fetching resource":"fetching resource", "fetching resource list":"fetching resource list", "Explore":"Explore", "Show Swagger Petstore Example Apis":"Show Swagger Petstore Example Apis", "Can't read from server. It may not have the appropriate access-control-origin settings.":"Can't read from server. It may not have the appropriate access-control-origin settings.", "Please specify the protocol for":"Please specify the protocol for", "Can't read swagger JSON from":"Can't read swagger JSON from", "Finished Loading Resource Information. Rendering Swagger UI":"Finished Loading Resource Information. Rendering Swagger UI", "Unable to read api":"Unable to read api", "from path":"from path", "server returned":"server returned" }); ================================================ FILE: src/main/resources/static/swagger/lang/translator.js ================================================ 'use strict'; /** * Translator for documentation pages. * * To enable translation you should include one of language-files in your index.html * after . * For example - * * If you wish to translate some new texts you should do two things: * 1. Add a new phrase pair ("New Phrase": "New Translation") into your language file (for example lang/ru.js). It will be great if you add it in other language files too. * 2. Mark that text it templates this way New Phrase or . * The main thing here is attribute data-sw-translate. Only inner html, title-attribute and value-attribute are going to translate. * */ window.SwaggerTranslator = { _words:[], translate: function(sel) { var $this = this; sel = sel || '[data-sw-translate]'; $(sel).each(function() { $(this).html($this._tryTranslate($(this).html())); $(this).val($this._tryTranslate($(this).val())); $(this).attr('title', $this._tryTranslate($(this).attr('title'))); }); }, _tryTranslate: function(word) { return this._words[$.trim(word)] !== undefined ? this._words[$.trim(word)] : word; }, learn: function(wordsMap) { this._words = wordsMap; } }; ================================================ FILE: src/main/resources/static/swagger/lang/zh-cn.js ================================================ 'use strict'; /* jshint quotmark: double */ window.SwaggerTranslator.learn({ "Warning: Deprecated":"警告:已过时", "Implementation Notes":"接口备注", "Response Class":"响应类", "Status":"状态", "Parameters":"参数", "Parameter":"参数", "Value":"值", "Description":"描述", "Parameter Type":"参数类型", "Data Type":"数据类型", "Response Messages":"响应消息", "HTTP Status Code":"HTTP状态码", "Reason":"原因", "Response Model":"响应模型", "Request URL":"请求URL", "Response Body":"响应体", "Response Code":"响应码", "Response Headers":"响应头", "Hide Response":"隐藏响应", "Headers":"头", "Try it out!":"试一下!", "Show/Hide":"显示/隐藏", "List Operations":"显示操作", "Expand Operations":"展开操作", "Raw":"原始", "can't parse JSON. Raw result":"无法解析JSON. 原始结果", "Example Value":"示例", "Click to set as parameter value":"点击设置参数", "Model Schema":"模型架构", "Model":"模型", "apply":"应用", "Username":"用户名", "Password":"密码", "Terms of service":"服务条款", "Created by":"创建者", "See more at":"查看更多:", "Contact the developer":"联系开发者", "api version":"api版本", "Response Content Type":"响应类型", "Parameter content type:":"参数类型:", "fetching resource":"正在获取资源", "fetching resource list":"正在获取资源列表", "Explore":"浏览", "Show Swagger Petstore Example Apis":"显示 Swagger Petstore 示例 Apis", "Can't read from server. It may not have the appropriate access-control-origin settings.":"无法从服务器读取。可能没有正确设置access-control-origin。", "Please specify the protocol for":"请指定协议:", "Can't read swagger JSON from":"无法读取swagger JSON于", "Finished Loading Resource Information. Rendering Swagger UI":"已加载资源信息。正在渲染Swagger UI", "Unable to read api":"无法读取api", "from path":"从路径", "server returned":"服务器返回" }); ================================================ FILE: src/main/resources/static/swagger/lib/backbone-min.js ================================================ !function(t,e){if("function"==typeof define&&define.amd)define(["underscore","jquery","exports"],function(i,n,s){t.Backbone=e(t,s,i,n)});else if("undefined"!=typeof exports){var i=require("underscore");e(t,exports,i)}else t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}(this,function(t,e,i,n){var s=t.Backbone,r=[],a=(r.push,r.slice);r.splice;e.VERSION="1.1.2",e.$=n,e.noConflict=function(){return t.Backbone=s,this},e.emulateHTTP=!1,e.emulateJSON=!1;var o=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var n=this._events[t]||(this._events[t]=[]);return n.push({callback:e,context:i,ctx:i||this}),this},once:function(t,e,n){if(!c(this,"once",t,[e,n])||!e)return this;var s=this,r=i.once(function(){s.off(t,r),e.apply(this,arguments)});return r._callback=e,this.on(t,r,n)},off:function(t,e,n){var s,r,a,o,h,u,l,d;if(!this._events||!c(this,"off",t,[e,n]))return this;if(!t&&!e&&!n)return this._events=void 0,this;for(o=t?[t]:i.keys(this._events),h=0,u=o.length;h").attr(t);this.setElement(n,!1)}}}),e.sync=function(t,n,s){var r=E[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:r,dataType:"json"};if(s.url||(a.url=i.result(n,"url")||j()),null!=s.data||!n||"create"!==t&&"update"!==t&&"patch"!==t||(a.contentType="application/json",a.data=JSON.stringify(s.attrs||n.toJSON(s))),s.emulateJSON&&(a.contentType="application/x-www-form-urlencoded",a.data=a.data?{model:a.data}:{}),s.emulateHTTP&&("PUT"===r||"DELETE"===r||"PATCH"===r)){a.type="POST",s.emulateJSON&&(a.data._method=r);var o=s.beforeSend;s.beforeSend=function(t){if(t.setRequestHeader("X-HTTP-Method-Override",r),o)return o.apply(this,arguments)}}"GET"===a.type||s.emulateJSON||(a.processData=!1),"PATCH"===a.type&&x&&(a.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")});var h=s.xhr=e.ajax(i.extend(a,s));return n.trigger("request",n,h,s),h};var x=!("undefined"==typeof window||!window.ActiveXObject||window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent),E={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var k=e.Router=function(t){t||(t={}),t.routes&&(this.routes=t.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},T=/\((.*?)\)/g,$=/(\(\?)?:\w+/g,S=/\*\w+/g,H=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend(k.prototype,o,{initialize:function(){},route:function(t,n,s){i.isRegExp(t)||(t=this._routeToRegExp(t)),i.isFunction(n)&&(s=n,n=""),s||(s=this[n]);var r=this;return e.history.route(t,function(i){var a=r._extractParameters(t,i);r.execute(s,a),r.trigger.apply(r,["route:"+n].concat(a)),r.trigger("route",n,a),e.history.trigger("route",r,n,a)}),this},execute:function(t,e){t&&t.apply(this,e)},navigate:function(t,i){return e.history.navigate(t,i),this},_bindRoutes:function(){if(this.routes){this.routes=i.result(this,"routes");for(var t,e=i.keys(this.routes);null!=(t=e.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(H,"\\$&").replace(T,"(?:$1)?").replace($,function(t,e){return e?t:"([^/?]+)"}).replace(S,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var n=t.exec(e).slice(1);return i.map(n,function(t,e){return e===n.length-1?t||null:t?decodeURIComponent(t):null})}});var A=e.History=function(){this.handlers=[],i.bindAll(this,"checkUrl"),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},I=/^[#\/]|\s+$/g,N=/^\/+|\/+$/g,R=/msie [\w.]+/,O=/\/$/,P=/#.*$/;A.started=!1,i.extend(A.prototype,o,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(null==t)if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var i=this.root.replace(O,"");t.indexOf(i)||(t=t.slice(i.length))}else t=this.getHash();return t.replace(I,"")},start:function(t){if(A.started)throw new Error("Backbone.history has already been started");A.started=!0,this.options=i.extend({root:"/"},this.options,t),this.root=this.options.root,this._wantsHashChange=this.options.hashChange!==!1,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var n=this.getFragment(),s=document.documentMode,r=R.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);if(this.root=("/"+this.root+"/").replace(N,"/"),r&&this._wantsHashChange){var a=e.$('