├── .idea ├── .name ├── compiler.xml ├── encodings.xml ├── libraries │ ├── Maven__ch_qos_logback_logback_classic_1_1_11.xml │ ├── Maven__ch_qos_logback_logback_core_1_1_11.xml │ ├── Maven__com_ibm_jbatch_com_ibm_jbatch_tck_spi_1_0.xml │ ├── Maven__com_thoughtworks_xstream_xstream_1_4_7.xml │ ├── Maven__javax_batch_javax_batch_api_1_0.xml │ ├── Maven__mysql_mysql_connector_java_5_1_2.xml │ ├── Maven__org_apache_tomcat_tomcat_jdbc_8_5_23.xml │ ├── Maven__org_apache_tomcat_tomcat_juli_8_5_23.xml │ ├── Maven__org_codehaus_jettison_jettison_1_2.xml │ ├── Maven__org_hsqldb_hsqldb_2_3_5.xml │ ├── Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml │ ├── Maven__org_slf4j_jul_to_slf4j_1_7_25.xml │ ├── Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml │ ├── Maven__org_slf4j_slf4j_api_1_7_25.xml │ ├── Maven__org_springframework_batch_spring_batch_core_3_0_8_RELEASE.xml │ ├── Maven__org_springframework_batch_spring_batch_infrastructure_3_0_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_starter_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_starter_batch_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_starter_jdbc_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_starter_logging_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_retry_spring_retry_1_2_1_RELEASE.xml │ ├── Maven__org_springframework_spring_aop_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_beans_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_context_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_core_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_expression_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_jdbc_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_tx_4_3_12_RELEASE.xml │ ├── Maven__org_yaml_snakeyaml_1_17.xml │ ├── Maven__xmlpull_xmlpull_1_1_3_1.xml │ └── Maven__xpp3_xpp3_min_1_1_4c.xml ├── misc.xml ├── modules.xml ├── uiDesigner.xml ├── vcs.xml └── workspace.xml ├── .mvn └── wrapper │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── README.md ├── data ├── alipay │ ├── 208012345_20141030.csv │ └── 208054321_20141030.csv └── init │ ├── sample-data.csv │ └── sample-data2.csv ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gs-batch-processing.iml ├── mvnw ├── mvnw.cmd ├── pom.xml ├── src └── main │ ├── java │ └── com │ │ └── monkey01 │ │ └── batch │ │ ├── BatchApplication.java │ │ ├── BillScheduler.java │ │ ├── bean │ │ ├── AlipayTranDO.java │ │ └── HopPayTranDO.java │ │ ├── config │ │ ├── BillBatchConfig.java │ │ └── MySQLDataSourceConfig.java │ │ ├── fault │ │ └── UnresolveAlipayTranException.java │ │ ├── listener │ │ ├── AlipaySkipListener.java │ │ └── JobCompletionNotificationListener.java │ │ ├── processor │ │ ├── AlipayItemProcessor.java │ │ └── AlipayValidateProcessor.java │ │ ├── reader │ │ └── AlipayFileItemReader.java │ │ └── writer │ │ ├── AlipayDBItemWriter.java │ │ └── AlipayFileItemWriter.java │ └── resources │ └── application.properties └── target └── classes ├── application.properties └── com └── monkey01 └── batch ├── BatchApplication.class ├── BillScheduler.class ├── bean ├── AlipayTranDO.class └── HopPayTranDO.class ├── config ├── BillBatchConfig.class └── MySQLDataSourceConfig.class ├── fault └── UnresolveAlipayTranException.class ├── listener ├── AlipaySkipListener.class └── JobCompletionNotificationListener.class ├── processor ├── AlipayItemProcessor.class └── AlipayValidateProcessor.class ├── reader ├── AlipayFileItemReader$1$1.class ├── AlipayFileItemReader$1$2.class ├── AlipayFileItemReader$1.class └── AlipayFileItemReader.class └── writer ├── AlipayDBItemWriter.class ├── AlipayFileItemWriter$1$1.class ├── AlipayFileItemWriter$1.class └── AlipayFileItemWriter.class /.idea/.name: -------------------------------------------------------------------------------- 1 | gs-batch-processing -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_ibm_jbatch_com_ibm_jbatch_tck_spi_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_thoughtworks_xstream_xstream_1_4_7.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__javax_batch_javax_batch_api_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__mysql_mysql_connector_java_5_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_tomcat_tomcat_jdbc_8_5_23.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_tomcat_tomcat_juli_8_5_23.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_jettison_jettison_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_hsqldb_hsqldb_2_3_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_batch_spring_batch_core_3_0_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_batch_spring_batch_infrastructure_3_0_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_batch_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_jdbc_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_retry_spring_retry_1_2_1_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_aop_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_beans_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_context_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_core_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_expression_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_jdbc_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_tx_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_yaml_snakeyaml_1_17.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__xmlpull_xmlpull_1_1_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__xpp3_xpp3_min_1_1_4c.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | Android > Lint > Correctness 19 | 20 | 21 | Android > Lint > Performance 22 | 23 | 24 | Data flow issuesJava 25 | 26 | 27 | General 28 | 29 | 30 | Java 31 | 32 | 33 | Kotlin 34 | 35 | 36 | Plugin DevKit 37 | 38 | 39 | XPath 40 | 41 | 42 | XSLT 43 | 44 | 45 | 46 | 47 | Android 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/uiDesigner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ## 前言 3 | 4 | 最近项目要做聚合支付,聚合支付顾名思义就是将市面上常用的三方支付进行聚合,这样开发者只需要对接我们一方就可以同时对接支付宝、微信支付等其他第三方支付平台,省去了挨个平台对接调试的时间,既然支付给人家聚合了,那么必然要有个配套的功能那就是聚合账单,如果要做聚合账单就意味着需要分别从不同的三方渠道获取到商户的账单数据,再所有渠道该商户的对账单数据聚合成一份账单并进行加工成统一的格式方便接入方进行对账,这个功能还是能很好的戳中接入方财务人员的痛点的,如果没有聚合对账,那么意味着财务需要对所有平台的账单进行分别下载再分别对账; 5 | 6 | 好了,说了那么多,我们这里要解决的问题就是批量将下载下来的商户账单进行加载,加载后统一处理后再输出聚合账单,这就涉及到一个问题,需要有个批量系统进行对数据进行处理,下面就开始我们今天的主角Spring Batch。 7 | 8 | ## 1. 为什么要用Spring Batch 9 | 10 | 为什么要用Spring Batch?回答这个问题那就要先想明白,我们遇到了什么问题,在前面说了,我们需要做一个账单批量加工的功能,这里就需要一个框架有以下功能: 11 | 12 | 1)能够定义不同job之间的依赖关系,这样可以进行不同job的顺序调整了和依赖关系设定; 13 | 14 | 2)能够定义job中的步骤,并且能够对每个步骤的输入、输出数据进行操作; 15 | 16 | 3)能够支持对多种数据源进行操作,不但能批量操作文件,也能够对数据库进行批量操作; 17 | 18 | 4)对于批量异常数据能够有接口进行自定义处理; 19 | 20 | 5)支持对job进行重跑; 21 | 22 | 6)支持对job失败后自动重试等容错处理机制; 23 | 24 | 7)支持对每个job的输入数据源进行校验; 25 | 26 | 上面罗列了下实现一个批量账单加工功能需要有上面这些基础功能,做过批量的同学一看这些基础功能,就会发出感叹,这不就是一个批量框架最基础的功能吗?但是目前opensource社区,确实这类批量框架很少,之前在国有银行里面,我们用的框架是自研框架,因为市面上不管是收费的还是开源的批量产品都很难满足我们的功能和性能方面的要求,而且据我了解,大部分有大型批量系统的功能用的批量框架也都是自研框架,很少用现成的产品或者开源的批量产品,因为笔者目前所在的银行规模很小,根本没有自研的能力,核心系统、数仓这些系统也都是买来的,用的批量产品也没法直接拿来用,既然这样就干脆找个开源的批量框架来解决问题,对比后最后选择的是Spring Batch,一方面是他拥有上面提到的所有功能,另一方面,新版本的SpringBatch可以很好的和SpringBoot结合起来,方便后面迁移到Cloud上。 27 | 28 | ## 2. Spring Batch架构 29 | 30 | SpringBatch的github地址: 31 | 32 | SpringBatch JavaDoc地址: 33 | 34 | 35 | 36 | 下面先介绍下SpringBatch框架里用到的名词,然后再介绍下他们之间的关系。 37 | 38 | **Job**: 是 Spring Batch 的核心概念,它包含了批处理的所有操作; 39 | 40 | **Step**:每个 Job 由一个或多个 Step 组成,每个Step中涉及到ItemReader、ItemProcessor、ItemWriter,这三个接口顾名思义,一个负责数据源读取、一个负责业务逻辑处理、一个负责处理后的数据输出; 41 | 42 | **jobRepository**:定义 Job 时,需要指定一个 JobRepository,用来存储 Job 在运行过程中的状态信息,为什么要存储状态信息呢?因为如果 Job 失败了,Spring 支持从失败的地方重新运行,而不是从头开始。 43 | 44 | **JobLauncher**:很好理解launcher是用来执行Job的,如果不设置,系统也会默认给Job配置一个默认Launcher; 45 | 46 | ![Screenshot 2017-11-28 17.08.20.png](http://upload-images.jianshu.io/upload_images/4720632-6fc9ccc6ecb8ab14.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 47 | 48 | 49 | Spring Batch 架构主要分为三类高级组件 : 应 层(Application), 核心层(Core) ,基础架构层(Infrastructure) 50 | 应 层层(Application)包括开发人员用SpringBatch编写的所有批处理作业和自定义代码; 51 | Batch (Batch Core) 包含加载和控制批处理作业所必须的核心类,包括JobLaunch,Job,Step的实现; 52 | 应 层(Application) 与核心 (Core) 都是构建在基础架构层之上,基础架构层包含readers(ItemReader) writers(ItemWriter), services ( 如重试模块RetryTemplate), 可以被应用层和核心层所使用。 53 | 54 | ![Screenshot 2017-11-28 16.56.05.png](http://upload-images.jianshu.io/upload_images/4720632-e4b8357786d5b183.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 55 | 56 | 57 | 介绍了SpringBatch的整体架构和组件后,下面介绍下开发者要做的内容,借助于SpringBatch已经实现了大部分的基础功能,作为开发者要做的除了配置每个Step之间的依赖关系和Job的一些参数就是开发每一步的Step,Step是一个独立封装域对象,包含了所有定义和控制实际处理信息批量任务的序列。每一个Step都是开发者自己编写的,一个Step的简单或复杂完全取决于开发者,可以把一个大的Step拆成很多个,也可以在一个Step中实现,完全看开发者的意愿。 58 | 59 | 所有的批处理都可以描述为最简单的过程:读取大量数据,执行自定义的计算或者转换,写出处理结果,SpringBatch提供了三个主要接口来执行大量数据的读取、处理与写出:ItemReader、ItemProcessor、ItemWriter。 60 | ![Screenshot 2017-11-28 17.27.33.png](http://upload-images.jianshu.io/upload_images/4720632-ee4c1c5c0f546f2b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 61 | 62 | 63 | **ItemReader** 64 | 65 | ItemReader就是一种从各个数据源读取数据,然后提供给后续步骤 使用的接口,目前SpringBatch已经给我们实现了3种常用格式的处理: 66 | 67 | 1)Flat平面纯文本处理,FlatFileItemReader类实现了从纯文本文件中读取一行数据,目前支持三种格式处理:定长字符串处理、分隔符字符串处理、正则表达式字符串处理,这三种处理基本能够满足我们常见需求了,而且常见的批量数据也都是格式化的纯文本; 68 | 69 | 2)XML,XMLItemReader类提供了解析、验证、映射数据的功能,能够对XML进行处理,同时可以根据XSD schema验证格式信息是否正确; 70 | 71 | 3)数据库,SQLItemReader类实现了通过JDBC查询出数据集,然后进行数据处理; 72 | 73 | 如果上面提供的三种都不能满足要求,还可以自己去实现IteamReader接口,来完成从字符串到实体对象的转换: 74 | 75 | ```java 76 | package org.springframework.batch.item; 77 | 78 | public interface ItemReader { 79 | T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException; 80 | } 81 | ``` 82 | 83 | 84 | 85 | **ItemWriter** 86 | 87 | ItemWriter功能上类似ItemReader的反向操作,资源任需要定位、打开和关闭,区别ItemWriter执行的是写入操作,而不是读取; 88 | 89 | 框架同样也实现了类似Reader的常用Writer类,FlatFileItemWriter、XMLItemWriter、SQLItemWriter,具体使用方法可以参考JavaDoc这里就不一一详解了。如果这几个常用Writer类满足不了你的需求那么你也可以继承ItemWriter自己去实现Writer类: 90 | 91 | ```java 92 | package org.springframework.batch.item; 93 | 94 | import java.util.List; 95 | 96 | public interface ItemWriter { 97 | void write(List var1) throws Exception; 98 | } 99 | ``` 100 | 101 | 自定义Writer类的话需要注意下,这里需要实现的write方法,入参是一个范型list,而ItemReader的read方法是处理一条字符串,返回一个范型对象。 102 | 103 | **ItemProcessor** 104 | 105 | ItemProcessor顾名思义就是数据的处理类,这个类系统没有实现类,因为是否需要对数据进行处理,对数据如何处理都是开发者自己来决定的,所以这里框架只是提供了接口,让大家去实现ItemProcessor接口中的process方法。 106 | 107 | ```java 108 | package org.springframework.batch.item; 109 | 110 | public interface ItemProcessor { 111 | O process(I var1) throws Exception; 112 | } 113 | ``` 114 | 115 | 从接口我们可以看到ItemProcessor是一个双范型接口,需要设置输入和输出类型,第一个类型为我们ItemReader的输出类型,第二个类型为ItemWriter的输入类型也就是process方法按照开发者的意愿处理后输出的类型。 116 | 117 | ## 3. Spring Batch批量加载支付宝账单 118 | 119 | 上面我们大概说了下SpringBatch用到的架构和主要的类,因为框架的api还是比较多的,全部介绍一遍估计大家也不愿意看,下面我们直接来实战,实现一个功能,大家就会很快上手SpringBatch了,这里我们实现到指定目录读取支付宝和微信的账单并处理后输出到指定的文件,这里我们没有使用数据库,如果要使用数据库只需要设置writer里的datasource并使用SQL相关的writer类就可以了,这里不能贴出生产代码所以只是个简单的demo,整个例子并不能直接用到生产,这里仅仅是举个例子让大家能够熟悉SpringBatch,实现的功能还远远达不到生产的要求。 120 | 121 | **实体类AlipayTranDO** 122 | 123 | 定义的阿里账单实体类,省略了setter、getter方法。 124 | 125 | ```java 126 | public class AlipayTranDO { 127 | private String tranId; 128 | private String channel; 129 | private String tranType; 130 | private String counterparty; 131 | private String goods; 132 | private String amount; 133 | private String isDebitCredit; 134 | private String state; 135 | ... 136 | } 137 | ``` 138 | 139 | **实体类HopPayTranDO** 140 | 141 | 需要转化的目标账单记录类。 142 | 143 | ```java 144 | public class HopPayTranDO { 145 | private String tranId; 146 | private String channel; 147 | private String tranType; 148 | private String counterparty; 149 | private String goods; 150 | private String amount; 151 | private String isDebitCredit; 152 | private String state; 153 | private String tranDate; 154 | private String merId; 155 | ... 156 | } 157 | ``` 158 | 159 | **支付宝账单Reader类** 160 | 161 | Reader类中核心实现是通过FlatFileItemReader来处理支付宝账单单条文本记录,csv的文本记录包含了8个字段,分别通过逗号分隔,然后与AlipayTranDO类属性字段映射,必须保证同名;通过setLineTokenizer()设置行分割方式和分割字段;通过setFieldSetMapper()方法设置读取字段映射的类为AlipayTranDO.class,整体过程还是比较简单的; 162 | 163 | 在Reader类中还有一个getMultiAliReader()方法,该方法是获取多个文件作为Resource,让上面定义的FlatFileItemReader去对每个文件的每条记录单独处理,网上绝大多数的例子都是只处理一个文件,实际使用过程中不可能只处理一个批量文件,所以例子中我引入了MultiResourceItemReader类,该类是SpringBatch中用于处理多文件的情况,通过给MultiResourceItemReader设置Resource数组,并通过setDelegate设置处理单文件单Item的类实例,最后将该多文件读取的ItemReader配置在Job中即可实现多文件的读取功能。 164 | 165 | ```java 166 | public class AlipayFileItemReader { 167 | 168 | private FlatFileItemReader reader; 169 | 170 | public FlatFileItemReader getAlipayFileItemReader() { 171 | reader = new FlatFileItemReader(); 172 | reader.setLineMapper(new DefaultLineMapper() {{ 173 | setLineTokenizer(new DelimitedLineTokenizer() {{ 174 | setNames(new String[] { "tranId", "channel", "tranType", "counterparty", "goods", "amount", "isDebitCredit", "state" }); 175 | }}); 176 | setFieldSetMapper(new BeanWrapperFieldSetMapper() {{ 177 | setTargetType(AlipayTranDO.class); 178 | }}); 179 | }}); 180 | reader.setLinesToSkip(5); 181 | return reader; 182 | } 183 | 184 | public MultiResourceItemReader getMultiAliReader() { 185 | //TODO: 获取所有当天待加载的支付宝账单, 186 | // 这里只是简单的放了两个csv账单文件, 187 | // 实际处理过程中,肯定是从数据库或者接口获取需要加载的账单文件路径 188 | MultiResourceItemReader reader = new MultiResourceItemReader(); 189 | Resource[] files = new Resource[]{new FileSystemResource("data/alipay/208012345_20141030.csv"), 190 | new FileSystemResource("data/alipay/208054321_20141030.csv")}; 191 | reader.setResources(files); 192 | reader.setDelegate(this.getAlipayFileItemReader()); 193 | 194 | return reader; 195 | } 196 | ``` 197 | 198 | **AlipayItemProcessor支付宝账单处理转换类** 199 | 200 | 因为是例子,所以processor的处理过程比较简单,只是将从支付宝账单csv中读取的字段赋值给自己定义的内部聚合账单实体类,并多加工了两个字段,在实际的使用过程中大家可以按照自己系统批量加工的需求去处理加工字段; 201 | 202 | ```java 203 | public class AlipayItemProcessor implements ItemProcessor { 204 | 205 | private static final Logger log = LoggerFactory.getLogger(AlipayItemProcessor.class); 206 | 207 | @Override 208 | public HopPayTranDO process(AlipayTranDO alipayTranDO) throws Exception { 209 | HopPayTranDO hopPayTranDO = new HopPayTranDO(); 210 | hopPayTranDO.setTranId(alipayTranDO.getTranId()); 211 | hopPayTranDO.setChannel(alipayTranDO.getChannel()); 212 | hopPayTranDO.setTranType(alipayTranDO.getTranType()); 213 | hopPayTranDO.setCounterparty(alipayTranDO.getCounterparty()); 214 | hopPayTranDO.setGoods(alipayTranDO.getGoods()); 215 | hopPayTranDO.setAmount(alipayTranDO.getAmount()); 216 | hopPayTranDO.setIsDebitCredit(alipayTranDO.getIsDebitCredit()); 217 | hopPayTranDO.setState(alipayTranDO.getState()); 218 | 219 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 220 | String dateNowStr = sdf.format(new Date()); 221 | hopPayTranDO.setTranDate(dateNowStr); 222 | hopPayTranDO.setMerId("00000001"); 223 | log.info(alipayTranDO.toString()); 224 | return hopPayTranDO; 225 | } 226 | } 227 | ``` 228 | 229 | **AlipayFileItemWriter账单写入类** 230 | 231 | 该文件写入类就是将刚才Processor输出的加工后的HopPayTranDO对象列表写入到文件中,代码一看就明白,不用太多解释,不明白的可以留言。 232 | 233 | ```java 234 | public class AlipayFileItemWriter { 235 | 236 | public FlatFileItemWriter getAlipayItemWriter() { 237 | FlatFileItemWriter txtItemWriter = new FlatFileItemWriter(); 238 | txtItemWriter.setAppendAllowed(true); 239 | txtItemWriter.setShouldDeleteIfExists(true); 240 | txtItemWriter.setEncoding("UTF-8"); 241 | txtItemWriter.setResource(new FileSystemResource("data/sample-data.txt")); 242 | txtItemWriter.setLineAggregator(new DelimitedLineAggregator() {{ 243 | setDelimiter(","); 244 | setFieldExtractor(new BeanWrapperFieldExtractor() {{ 245 | setNames(new String[]{"tranId", "channel", "tranType", "counterparty", "goods", "amount", "isDebitCredit", "state", "tranDate", "merId" }); 246 | }}); 247 | }}); 248 | return txtItemWriter; 249 | } 250 | } 251 | ``` 252 | 253 | **BillBatchConfig JOB配置类** 254 | 255 | Job配置比较简单,先将下面要用到的JobBuilderFactory、StepBuilderFactory、AlipayFileItemReader、AlipayItemProcessor、AlipayFileItemWriter先分别注入实例,再配置step步骤,如果有多个步骤可以在flow(step1)后面`.next(step2)`,对于简单的批量这样的线性设置步骤就可以满足要求了,如果涉及到复杂情况,我会再写一篇来介绍SpringBatch的高级应用来讲解,本篇就不赘述了。 256 | 257 | ```java 258 | @Configuration 259 | @EnableBatchProcessing 260 | public class BillBatchConfig { 261 | 262 | @Autowired 263 | public JobBuilderFactory jobBuilderFactory; 264 | 265 | @Autowired 266 | public StepBuilderFactory stepBuilderFactory; 267 | 268 | @Autowired 269 | private AlipayFileItemReader alipayFileItemReader; 270 | 271 | @Autowired 272 | private AlipayItemProcessor alipayItemProcessor; 273 | 274 | @Autowired 275 | private AlipayFileItemWriter alipayFileItemWriter; 276 | 277 | @Bean 278 | public Job importAliJob() { 279 | return jobBuilderFactory.get("importAliJob") 280 | .incrementer(new RunIdIncrementer()) 281 | .flow(step1()) 282 | .end() 283 | .build(); 284 | } 285 | 286 | @Bean 287 | public Step step1() { 288 | return stepBuilderFactory.get("step1") 289 | . chunk(10) 290 | .reader(alipayFileItemReader.getMultiAliReader()) 291 | .processor(alipayItemProcessor) 292 | .writer(alipayFileItemWriter.getAlipayItemWriter()) 293 | .build(); 294 | } 295 | 296 | } 297 | ``` 298 | 299 | 300 | 301 | ## 小结 302 | 303 | 本篇文章只是SpringBatch的一个引子,还有很多功能在这里没有详细阐述,例如在批量中涉及到的为了提高性能的并发任务执行、数据校验、失败重试、记录处理异常处理等。接下来会再写一篇关于Springbatch的高级应用,里面会把上面提到的一些高级用法进行详细介绍,下面奉上前面功能的代码。 304 | 305 | github代码:https://github.com/feiweiwei/BillSpringBatch 306 | 307 | 308 | 309 | 310 | -------------------------------------------------------------------------------- /data/alipay/208054321_20141030.csv: -------------------------------------------------------------------------------- 1 | #支付宝交易记录明细查询 2 | #账号: 208054321 3 | #起始日期:[2014-10-30 00:00:00] 终止日期:[2014-10-31 23:59:59] 4 | #————————————————交易记录明细列表------------------------------------ 5 | 交易号 ,交易来源地 ,类型 ,交易对方 ,商品名称 ,金额(元) ,收/支 ,交易状态 6 | "20141031000040011100910015664356 ",支付宝网站 ,即时到账交易 ,*小华 ,转账 ,10,收入 ,交易成功 7 | "20141031000040011100390015648161 ",支付宝网站 ,即时到账交易 ,*勇 ,林东尧同学,加油啊! ,1000,收入 ,交易成功 8 | "20141031000040011100060006801657 ",支付宝网站 ,即时到账交易 ,*萍 ,转账 ,200,收入 ,交易成功 9 | "20141031000040011100950020158267 ",支付宝网站 ,即时到账交易 ,*凤金 ,东尧,加油!挺过去,祝你早日康复!刘凤金,100,收入 ,交易成功 10 | "20141031000040011100730015216277 ",支付宝网站 ,即时到账交易 ,*月 ,钱虽少也是一份心 祝好日康复 加油! ,10,收入 ,交易成功 11 | "20141031000040011100400009170437 ",支付宝网站 ,即时到账交易 ,*仕逵 ,钱不多,希望能帮到你! ,200,收入 ,交易成功 12 | "20141031000040011100770014864749 ",支付宝网站 ,即时到账交易 ,*雨薇 ,加油! ,50,收入 ,交易成功 13 | "20141031000040011100630008778557 ",支付宝网站 ,即时到账交易 ,*欢明 ,付款-希望身体健康 ,500,收入 ,交易成功 14 | "20141031000040011100730008698682 ",支付宝网站 ,即时到账交易 ,*泽昊 ,捐的不多 祝你早日康复 ,50,收入 ,交易成功 15 | "20141031000040011100910018870952 ",支付宝网站 ,即时到账交易 ,*杰 ,转账 ,500,收入 ,交易成功 16 | "20141031000040011100520007397241 ",支付宝网站 ,即时到账交易 ,*丽丽 ,转账 ,50,收入 ,交易成功 17 | "20141031000040011100780012812977 ",支付宝网站 ,即时到账交易 ,*春洋 ,林东尧加油,老乡都在你身边 ,100,收入 ,交易成功 18 | "20141031000040011100230012684923 ",支付宝网站 ,即时到账交易 ,*丽君 ,转账 ,20,收入 ,交易成功 19 | "20141031000040011100540007221900 ",支付宝网站 ,即时到账交易 ,*道计 ,转账 ,7,收入 ,交易成功 20 | "20141031000040011100040007197811 ",支付宝网站 ,即时到账交易 ,*咏梅 ,祝早日康复! ,50,收入 ,交易成功 21 | "20141031000040011100250013680693 ",支付宝网站 ,即时到账交易 ,*呈维 ,祝你早日康复重返校园 ,100,收入 ,交易成功 22 | "20141031000040011100210006501226 ",支付宝网站 ,即时到账交易 ,*芳宜 ,加油! ,10,收入 ,交易成功 23 | "20141031000040011100870017782500 ",支付宝网站 ,即时到账交易 ,*鹏程 ,我是校友,祝你早日康复 ,50,收入 ,交易成功 24 | "20141031000040011100160007458175 ",支付宝网站 ,即时到账交易 ,*元 ,转账 ,100,收入 ,交易成功 25 | "20141031000040011100940006349940 ",支付宝网站 ,即时到账交易 ,*凌云 ,转账 ,10,收入 ,交易成功 26 | "20141031000040011100940017590503 ",支付宝网站 ,即时到账交易 ,*清 ,东尧加油! ,500,收入 ,交易成功 27 | "20141031000040011100720012976585 ",支付宝网站 ,即时到账交易 ,*龙潭 ,小学弟加油。 ,50,收入 ,交易成功 28 | "20141031000040011100530006213062 ",支付宝网站 ,即时到账交易 ,*朋 ,华科不相识的学弟,很抱歉不能帮更多。平安,100,收入 ,交易成功 29 | "20141031000040011100940009587389 ",支付宝网站 ,即时到账交易 ,*冠杰 ,同学,祝早日康复,加油!??路人甲 ,100,收入 ,交易成功 30 | "20141031000040011100130006962759 ",支付宝网站 ,即时到账交易 ,*昭 ,学弟快快好起来 ,100,收入 ,交易成功 31 | "20141031000040011100160003873335 ",支付宝网站 ,即时到账交易 ,*婷 ,转账 ,50,收入 ,交易成功 32 | "20141031000040011100500009075469 ",支付宝网站 ,即时到账交易 ,*裕 ,东尧加油!愿你早日康复?? ,100,收入 ,交易成功 33 | "20141031000040011100990011172312 ",支付宝网站 ,即时到账交易 ,*?玮 ,加油,早日康复!然后再帮助更多的人吧! ,4000,收入 ,交易成功 34 | "20141031000040011100920005469159 ",支付宝网站 ,即时到账交易 ,*云飞 ,付款-从朋友处看到消息,希望尽快康复 ,200,收入 ,交易成功 35 | "20141031000040011100670012096199 ",支付宝网站 ,即时到账交易 ,*燕星 ,校友,坚强,祝福你早日回归校园 ,100,收入 ,交易成功 36 | "20141031000040011100100011848253 ",支付宝网站 ,即时到账交易 ,*超 ,学弟加油,战胜病魔,祝早日康复! ,2000,收入 ,交易成功 37 | "20141031000040011100690011792998 ",支付宝网站 ,即时到账交易 ,*宇飞 ,加油,一定要好起来,我们都在为你祈祷 ,50,收入 ,交易成功 38 | "20141031000040011100330008571912 ",支付宝网站 ,即时到账交易 ,*继斌 ,祝早日康复。武水学长 ,500,收入 ,交易成功 39 | "61292523 ",支付宝网站 ,即时到账交易 ,*宝珍 ,代充 ,100,收入 ,交易成功 40 | "20141031000040011100200010444425 ",支付宝网站 ,即时到账交易 ,*志刚 ,付款-愿能在距离生命最近的时候感恩所有 ,20,收入 ,交易成功 41 | "20141031000040011100000016110131 ",支付宝网站 ,即时到账交易 ,*钢剑 ,祝早日康复〜阳光总在风雨后,加油! ,36,收入 ,交易成功 42 | "20141031000040011100180004437261 ",支付宝网站 ,即时到账交易 ,*辉 ,希望早日康复! ,100,收入 ,交易成功 43 | "20141031000040011100010009964662 ",支付宝网站 ,即时到账交易 ,*晓? ,清华水利人,诚祝康复 ,42,收入 ,交易成功 44 | "20141031000040011100730008567917 ",支付宝网站 ,即时到账交易 ,*兰红 ,你要加油! ,200,收入 ,交易成功 45 | "20141031000040011100840002513486 ",支付宝网站 ,即时到账交易 ,*进雄 ,祝早日康复!! ,20,收入 ,交易成功 46 | "20141031000040011100050004261922 ",支付宝网站 ,即时到账交易 ,*光华 ,祝早日康复! ,500,收入 ,交易成功 47 | "20141031000040011100660009756304 ",支付宝网站 ,即时到账交易 ,*建格 ,加油! ,20,收入 ,交易成功 48 | "20141031000040011100260002409721 ",支付宝网站 ,即时到账交易 ,*珊 ,早日康复,加油 ,20,收入 ,交易成功 49 | "20141031000040011100440009556709 ",支付宝网站 ,即时到账交易 ,*文璐 ,加油,康复 ,100,收入 ,交易成功 50 | "20141031000040011100850009412448 ",支付宝网站 ,即时到账交易 ,*昭慈 ,祝早日康复。 ,200,收入 ,交易成功 51 | "20141031000040011100160009372843 ",支付宝网站 ,即时到账交易 ,*红阳 ,东尧加油,坚持下去! ,100,收入 ,交易成功 52 | "20141031000040011100060015198894 ",支付宝网站 ,即时到账交易 ,*登泽 ,付款-祝你早日康复! ,10,收入 ,交易成功 53 | "20141031000040011100350015142700 ",支付宝网站 ,即时到账交易 ,*欣蕊 ,虽然钱不多,却是一份愿你康复的祝福加油!,200,收入 ,交易成功 54 | "20141031000040011100950007767007 ",支付宝网站 ,即时到账交易 ,*倩倩 ,转账 ,10,收入 ,交易成功 55 | "20141031000040011100330001785442 ",支付宝网站 ,即时到账交易 ,*亚东 ,转账 ,20,收入 ,交易成功 56 | "20141031000040011100150015014693 ",支付宝网站 ,即时到账交易 ,*盛梅 ,一切尽在不言中 ,10,收入 ,交易成功 57 | "20141031000040011100830007575525 ",支付宝网站 ,即时到账交易 ,*亮 ,付款-转账 ,50,收入 ,交易成功 58 | "20141031000040011100700001473564 ",支付宝网站 ,即时到账交易 ,*星 ,水院11级学长祝你早日康复 ,50,收入 ,交易成功 59 | "20141031000040011100860008876756 ",支付宝网站 ,即时到账交易 ,*志鑫 ,祝早日康复,加油! ,50,收入 ,交易成功 60 | "20141031000040011100870001385865 ",支付宝网站 ,即时到账交易 ,*晨 ,东尧加油,祝福你 ,100,收入 ,交易成功 61 | "20141031000040011100890007271082 ",支付宝网站 ,即时到账交易 ,*亮 ,祝你早日康复,武大99级土木庞亮 ,100,收入 ,交易成功 62 | "20141031000040011100530009760431 ",支付宝网站 ,即时到账交易 ,*洪 ,早日康复! ,20,收入 ,交易成功 63 | "20141031000040011100680014430510 ",支付宝网站 ,即时到账交易 ,*淼,加油,祝早日康复! ,500,收入 ,交易成功 64 | "20141031000040011100580007087565 ",支付宝网站 ,即时到账交易 ,*正 ,水电系99003祝师弟早日康复! ,100,收入 ,交易成功 65 | "20141031000040011100560003770791 ",支付宝网站 ,即时到账交易 ,*琼 ,转账 ,20,收入 ,交易成功 66 | "20141031000040011100680014270150 ",支付宝网站 ,即时到账交易 ,**辉 ,转账 ,100,收入 ,交易成功 67 | "20141031000040011100180003770154 ",支付宝网站 ,即时到账交易 ,*飞 ,转账 ,30,收入 ,交易成功 68 | "20141031000040011100660000945091 ",支付宝网站 ,即时到账交易 ,*茜 ,祝早日康复! ,66,收入 ,交易成功 69 | "20141031000040011100880006887659 ",支付宝网站 ,即时到账交易 ,*础 ,东尧早点好起?。99级学姐 ,200,收入 ,交易成功 70 | "20141031000040011100370014134037 ",支付宝网站 ,即时到账交易 ,**耕 ,转账 ,15,收入 ,交易成功 71 | "20141031000040011100370006219881 ",支付宝网站 ,即时到账交易 ,**耕 ,东尧加油! ,15,收入 ,交易成功 72 | "20141031000040011100640014022831 ",支付宝网站 ,即时到账交易 ,*光 ,加油 ,30,收入 ,交易成功 73 | "20141031000040011100770000641909 ",支付宝网站 ,即时到账交易 ,王? ,东尧加油 ,6.66,收入 ,交易成功 74 | "20141031000040011100620003514942 ",支付宝网站 ,即时到账交易 ,**娇 ,付款-武大14级12班浩骅家长支持东尧 ,30,收入 ,交易成功 75 | "20141031000040011100500000593869 ",支付宝网站 ,即时到账交易 ,*骞 ,祝早日康复!加油! ,50,收入 ,交易成功 76 | "20141031000040011100230006059362 ",支付宝网站 ,即时到账交易 ,*强 ,付款-东尧,加油! ,100,收入 ,交易成功 77 | "20141031000040011100270008012096 ",支付宝网站 ,即时到账交易 ,*磊 ,付款-我们等你回来! ,100,收入 ,交易成功 78 | "20141031000040011100570009168924 ",支付宝网站 ,即时到账交易 ,**辉 ,地大学子给你加油! ,60,收入 ,交易成功 79 | "20141031000040011100720013710925 ",支付宝网站 ,即时到账交易 ,*川 ,祝早日康复!社会需要将爱继续传递的人! ,300,收入 ,交易成功 80 | "20141031000040011100510013622729 ",支付宝网站 ,即时到账交易 ,*琳 ,付款-学弟,微薄之力,愿爱心延续。 ,80,收入 ,交易成功 81 | "20141031000040011100880013526646 ",支付宝网站 ,即时到账交易 ,*琳 ,加油! ,10,收入 ,交易成功 82 | "20141031000040011100840005659319 ",支付宝网站 ,即时到账交易 ,*凯 ,付款-路人甲寄语:早日康复 ,100,收入 ,交易成功 83 | "20141031000040011100800007508593 ",支付宝网站 ,即时到账交易 ,**彤 ,东尧加油,彤彤挺你! ,300,收入 ,交易成功 84 | "20141031000040011100040005515652 ",支付宝网站 ,即时到账交易 ,**琪 ,钱不多,实在抱歉,但希望你能早日康复! ,10,收入 ,交易成功 85 | "20141031000040011100960006143468 ",支付宝网站 ,即时到账交易 ,*瑞 ,东尧,加油。一定会好起来的。 ,300,收入 ,交易成功 86 | "20141031000040011100420000097617 ",支付宝网站 ,即时到账交易 ,*艺 ,加油东尧! ,10,收入 ,交易成功 87 | "20141031000040011100580099993956 ",支付宝网站 ,即时到账交易 ,*璐 ,祝学弟早日康复! ,100,收入 ,交易成功 88 | "20141031000040011100310002698842 ",支付宝网站 ,即时到账交易 ,**益 ,小伙子,快回学校把妹啊! ,100,收入 ,交易成功 89 | "20141031000040011100740013190262 ",支付宝网站 ,即时到账交易 ,**艺 ,东尧棒棒哒!(???) ,500,收入 ,交易成功 90 | "20141031000040011100100001941466 ",支付宝网站 ,即时到账交易 ,*诗 ,转账 ,50,收入 ,交易成功 91 | "20141031000040011100130001853838 ",支付宝网站 ,即时到账交易 ,**丽 ,武水的学姐祝你早日康复 ,100,收入 ,交易成功 92 | "20141031000040011100880013062012 ",支付宝网站 ,即时到账交易 ,*萍 ,微薄之力,加油 ,10,收入 ,交易成功 93 | "20141031000040011100720008536808 ",支付宝网站 ,即时到账交易 ,*畅 ,祝您早日康复! ,100,收入 ,交易成功 94 | "20141031000040011100370002578501 ",支付宝网站 ,即时到账交易 ,*畅 ,加油! ,100,收入 ,交易成功 95 | "20141031000040011100770005767557 ",支付宝网站 ,即时到账交易 ,**松 ,校友加油! ,100,收入 ,交易成功 96 | "20141031000040011100360005123195 ",支付宝网站 ,即时到账交易 ,**培 ,加油 ,10,收入 ,交易成功 97 | "20141031000040011100530007052821 ",支付宝网站 ,即时到账交易 ,**灵 ,小学弟加油~10级英文班学姐支持你! ,200,收入 ,交易成功 98 | "20141031000040011100160001637352 ",支付宝网站 ,即时到账交易 ,*山 ,早日康复,水院师兄祝。 ,100,收入 ,交易成功 99 | "20141031000040011100780004931461 ",支付宝网站 ,即时到账交易 ,lypzhu ,祝福,加油! ,600,收入 ,交易成功 100 | "20141031000040011100740002322454 ",支付宝网站 ,即时到账交易 ,*铖 ,加油,不要放弃 ,50,收入 ,交易成功 101 | "20141031000040011100130012742302 ",支付宝网站 ,即时到账交易 ,*清 ,加油,祝早日康复! ,200,收入 ,交易成功 102 | "20141031000040011100670099633333 ",支付宝网站 ,即时到账交易 ,**惠 ,???best wishes ,100,收入 ,交易成功 103 | "20141031000040011100890006828877 ",支付宝网站 ,即时到账交易 ,**佳 ,祝早日康复! ,100,收入 ,交易成功 104 | "20141031000040011100490005367460 ",支付宝网站 ,即时到账交易 ,*萌 ,绵薄之力,祝早日康复 ,100,收入 ,交易成功 105 | "20141031000040011100970004579770 ",支付宝网站 ,即时到账交易 ,*杰 ,加油!祝早日康复 ,15,收入 ,交易成功 106 | "20141031000040011100940005247651 ",支付宝网站 ,即时到账交易 ,**锋 ,晓航阿姨的朋友,加油! ,100,收入 ,交易成功 107 | "20141031000040011100480006516891 ",支付宝网站 ,即时到账交易 ,**书 ,好运会眷顾你! ,10,收入 ,交易成功 108 | "20141031000040011100390099273505 ",支付宝网站 ,即时到账交易 ,**萍 ,付款-献上母亲的关怀。14计算机颜妈妈 ,200,收入 ,交易成功 109 | "20141031000040011100810099257740 ",支付宝网站 ,即时到账交易 ,**飞 ,祝早日康复! ,100,收入 ,交易成功 110 | "20141031000040011100030005031996 ",支付宝网站 ,即时到账交易 ,*鑫 ,转账 ,10,收入 ,交易成功 111 | "20141031000040011100370001818392 ",支付宝网站 ,即时到账交易 ,**文 ,一定要好起来--来自武大同学的祝福。 ,100,收入 ,交易成功 112 | "20141031000040011100520001826127 ",支付宝网站 ,即时到账交易 ,**琴 ,学弟加油噢? ,100,收入 ,交易成功 113 | "20141031000040011100010007792155 ",支付宝网站 ,即时到账交易 ,**杨 ,我是冯宇驰的同学 通过他了解到的 加油 ,100,收入 ,交易成功 114 | "20141031000040011100020099129428 ",支付宝网站 ,即时到账交易 ,**鹏 ,哥们加油,我也是农村的,微薄之力 ,20,收入 ,交易成功 115 | "20141031000040011100140004983724 ",支付宝网站 ,即时到账交易 ,**莞 ,转账 ,400,收入 ,交易成功 116 | "20141031000040011100810007776616 ",支付宝网站 ,即时到账交易 ,*冕 ,学弟加油,愿早点好起来! ,100,收入 ,交易成功 117 | "20141031000040011100490099081657 ",支付宝网站 ,即时到账交易 ,*邦 ,加油东尧!我们都和你在一起! ,100,收入 ,交易成功 118 | "20141031000040011100500007776271 ",支付宝网站 ,即时到账交易 ,*月 ,转账 ,500,收入 ,交易成功 119 | "20141031000040011100460006380578 ",支付宝网站 ,即时到账交易 ,**龙 ,祝早日康复!加油。 ,50,收入 ,交易成功 120 | "20141031000040011100390012166349 ",支付宝网站 ,即时到账交易 ,**玲 ,愿早日康复!----04级农水蒋玉玲 ,500,收入 ,交易成功 121 | "20141031000040011100950099009706 ",支付宝网站 ,即时到账交易 ,*灵 ,转账 ,100,收入 ,交易成功 122 | "20141031000040011100860006292472 ",支付宝网站 ,即时到账交易 ,**远 ,东尧,好孩子,加油啊!大家都在等你回来!,400,收入 ,交易成功 123 | "20141031000040011100690012038850 ",支付宝网站 ,即时到账交易 ,**明 ,付款-转账 ,100,收入 ,交易成功 124 | "20141031000040011100600000821185 ",支付宝网站 ,即时到账交易 ,*超 ,感谢募捐的组织者。 ,300,收入 ,交易成功 125 | "20141031000040011100220004767694 ",支付宝网站 ,即时到账交易 ,*果 ,转账 ,200,收入 ,交易成功 126 | "20141031000040011100350098825574 ",支付宝网站 ,即时到账交易 ,*霞 ,付款-东尧加油!! ,500,收入 ,交易成功 127 | "20141031000040011100260004035853 ",支付宝网站 ,即时到账交易 ,*浩 ,学弟加油! ,50,收入 ,交易成功 128 | "20141031000040011100320000581901 ",支付宝网站 ,即时到账交易 ,**绪 ,林东尧同学,祝愿你早日康复! ,10,收入 ,交易成功 129 | "20141031000040011100170098697673 ",支付宝网站 ,即时到账交易 ,**兰 ,加油!微薄之力 ,100,收入 ,交易成功 130 | "20141031000040011100550098681817 ",支付宝网站 ,即时到账交易 ,**科 ,祝早日康复! ,10,收入 ,交易成功 131 | "20141031000040011100130007368181 ",支付宝网站 ,即时到账交易 ,**飞 ,祝你早日康复! ,400,收入 ,交易成功 132 | "20141031000040011100980006004899 ",支付宝网站 ,即时到账交易 ,**琴 ,转账 ,10,收入 ,交易成功 133 | "20141031000040011100920001250037 ",支付宝网站 ,即时到账交易 ,*辉 ,校友爱心 ,500,收入 ,交易成功 134 | "20141031000040011100010001218115 ",支付宝网站 ,即时到账交易 ,**宇 ,一点心意[江湖救急] ,30,收入 ,交易成功 135 | "20141031000040011100520000253813 ",支付宝网站 ,即时到账交易 ,*鹏 ,祝早曰康复。 ,100,收入 ,交易成功 136 | "20141031000040011100930098457125 ",支付宝网站 ,即时到账交易 ,*华 ,同学托我捐赠的~~希望你能早日康复! ,100,收入 ,交易成功 137 | "20141031000040011100410098329321 ",支付宝网站 ,即时到账交易 ,*露 ,虽然不认识,还是衷心希望早日康复加油 ,20,收入 ,交易成功 138 | "20141031000040011100710004215657 ",支付宝网站 ,即时到账交易 ,**哲 ,调整好心态,加油 ,30,收入 ,交易成功 139 | "20141031000040011100080000914758 ",支付宝网站 ,即时到账交易 ,**达 ,钱不多,祝早日康复〜 ,100,收入 ,交易成功 140 | "20141031000040011100310000922421 ",支付宝网站 ,即时到账交易 ,**英 ,加油 ,200,收入 ,交易成功 141 | "20141031000040011100130011318612 ",支付宝网站 ,即时到账交易 ,*帆 ,加油[你懂的] ,20,收入 ,交易成功 142 | "20141031000040011100820099941319 ",支付宝网站 ,即时到账交易 ,**颖 ,付款-加油东尧!! ,500,收入 ,交易成功 143 | "20141031000040011100960005620185 ",支付宝网站 ,即时到账交易 ,*琳 ,同学加油! ,300,收入 ,交易成功 144 | "20141031000040011100030098201053 ",支付宝网站 ,即时到账交易 ,*妮 ,04级学姐,祝早日康复! ,100,收入 ,交易成功 145 | "20141031000040011100480098169581 ",支付宝网站 ,即时到账交易 ,*鹏 ,水电2000师兄尽点绵力 ,500,收入 ,交易成功 146 | "20141031000040011100530098105729 ",支付宝网站 ,即时到账交易 ,**明 ,转账 ,50,收入 ,交易成功 147 | "20141031000040011100930003991232 ",支付宝网站 ,即时到账交易 ,**元 ,学弟加油! ,50,收入 ,交易成功 148 | "20141031000040011100700000762244 ",支付宝网站 ,即时到账交易 ,**聪 ,祝东尧同学早日康复!加油,坚持下去! ,50,收入 ,交易成功 149 | "20141031000040011100990003515283 ",支付宝网站 ,即时到账交易 ,**眉 ,付款-一点心意,加油! ,300,收入 ,交易成功 150 | "20141031000040011100220003919833 ",支付宝网站 ,即时到账交易 ,**桐 ,动机院11级学长祝东尧同学早日康复 ,100,收入 ,交易成功 151 | "20141031000040011100400000650278 ",支付宝网站 ,即时到账交易 ,*茜 ,希望东尧早日战胜病魔,加油 ,200,收入 ,交易成功 152 | "20141031000040011100990003703432 ",支付宝网站 ,即时到账交易 ,**润 ,转账 ,2,收入 ,交易成功 153 | "20141031000040011100230003331007 ",支付宝网站 ,即时到账交易 ,**晨 ,希望你早日康复。 ,40,收入 ,交易成功 154 | "20141031000040011100500003615436 ",支付宝网站 ,即时到账交易 ,*健 ,转账 ,50,收入 ,交易成功 155 | "20141031000040011100970003511497 ",支付宝网站 ,即时到账交易 ,**芸 ,钱不多聊表心意,要坚强加油 ,50,收入 ,交易成功 156 | "20141031000040011100690097737093 ",支付宝网站 ,即时到账交易 ,**治 ,付款-师弟坚持住! ,66,收入 ,交易成功 157 | "20141031000040011100620000410109 ",支付宝网站 ,即时到账交易 ,**良 ,祈祷! ,100,收入 ,交易成功 158 | "20141031000040011100140006408795 ",支付宝网站 ,即时到账交易 ,**娟 ,我是03级学姐,早日康复归来,加油 ,100,收入 ,交易成功 159 | "20141031000040011100700003067369 ",支付宝网站 ,即时到账交易 ,*亮 ,付款-祝早日康复!加油! ,100,收入 ,交易成功 160 | "20141031000040011100030010742587 ",支付宝网站 ,即时到账交易 ,*明 ,来自西南大学龙江人的微薄爱心东尧加油 ,20,收入 ,交易成功 161 | "20141031000040011100140005076476 ",支付宝网站 ,即时到账交易 ,**君 ,加油,小学弟。 ,20,收入 ,交易成功 162 | "20141031000040011100000000290357 ",支付宝网站 ,即时到账交易 ,**华 ,能帮到学弟的不多 坚强撑过来都会好的 ,20,收入 ,交易成功 163 | "20141031000040011100930099221561 ",支付宝网站 ,即时到账交易 ,**仑 ,转账 ,20,收入 ,交易成功 164 | "20141031000040011100390003231016 ",支付宝网站 ,即时到账交易 ,**强 ,加油 ,100,收入 ,交易成功 165 | "20141031000040011100590097537166 ",支付宝网站 ,即时到账交易 ,**颖 ,小小心意 加油 陌生人 ,1,收入 ,交易成功 166 | "20141031000040011100380003183265 ",支付宝网站 ,即时到账交易 ,**杰 ,祝你早日康复!加油!工学部小杰! ,20,收入 ,交易成功 167 | "20141031000040011100560099069550 ",支付宝网站 ,即时到账交易 ,**涛 ,转账 ,200,收入 ,交易成功 168 | "20141031000040011100520006040950 ",支付宝网站 ,即时到账交易 ,**丽 ,东尧加油! ,50,收入 ,交易成功 169 | "20141031000040011100930006024378 ",支付宝网站 ,即时到账交易 ,**谦 ,东尧加油哈! ,500,收入 ,交易成功 170 | "20141031000040011100830002975750 ",支付宝网站 ,即时到账交易 ,**怡 ,经济条件有限 但是加油! ,10,收入 ,交易成功 171 | "20141031000040011100390097297120 ",支付宝网站 ,即时到账交易 ,*蓉 ,加油,挺住! ,100,收入 ,交易成功 172 | "20141031000040011100690000026557 ",支付宝网站 ,即时到账交易 ,**晶 ,微薄之力,祝早日康复,健康属于你 ,100,收入 ,交易成功 173 | "20141031000040011100230098909748 ",支付宝网站 ,即时到账交易 ,*珊 ,加油! ,1000,收入 ,交易成功 174 | "20141031000040011100680002831727 ",支付宝网站 ,即时到账交易 ,**峰 ,转账 ,100,收入 ,交易成功 175 | "20141031000040011100850098909477 ",支付宝网站 ,即时到账交易 ,*宇 ,华电(北京)毕业学生祝早日康复 ,500,收入 ,交易成功 176 | "20141031000040011100490002823446 ",支付宝网站 ,即时到账交易 ,**艳 ,笑着日子容易过,每天都要乐呵呵!加油! ,200,收入 ,交易成功 177 | "20141031000040011100580002807950 ",支付宝网站 ,即时到账交易 ,*欢 ,学弟早日康复,加油! ,100,收入 ,交易成功 178 | "20141031000040011100900010342104 ",支付宝网站 ,即时到账交易 ,*望 ,祝你早日康复,加油! ,66,收入 ,交易成功 179 | "20141031000040011100320098853244 ",支付宝网站 ,即时到账交易 ,**贝,加油!来自合肥的祝福〜〜〜 ,19.99,收入 ,交易成功 180 | "20141031000040011100120004636731 ",支付宝网站 ,即时到账交易 ,*睿 ,我姥爷也是这种病,希望你们一起加油 ,100,收入 ,交易成功 181 | "20141031000040011100570098845129 ",支付宝网站 ,即时到账交易 ,**军 ,付款-2000级水电东北学姐 ,500,收入 ,交易成功 182 | "20141031000040011100170099818763 ",支付宝网站 ,即时到账交易 ,**佩 ,学生党一枚,略表心意 ,5,收入 ,交易成功 183 | "20141031000040011100070099794522 ",支付宝网站 ,即时到账交易 ,**媛 ,付款-东尧加油 ,500,收入 ,交易成功 184 | "20141031000040011100230010158907 ",支付宝网站 ,即时到账交易 ,*超 ,转账 ,200,收入 ,交易成功 185 | "20141031000040011100210004396779 ",支付宝网站 ,即时到账交易 ,**亦 ,加油。 ,50,收入 ,交易成功 186 | "20141031000040011100750002583253 ",支付宝网站 ,即时到账交易 ,**文 ,一定会好起来的!! ,10,收入 ,交易成功 187 | "20141031000040011100130098565082 ",支付宝网站 ,即时到账交易 ,*丹 ,加油,祝早日康复 ,300,收入 ,交易成功 188 | "20141031000040011100700002291293 ",支付宝网站 ,即时到账交易 ,*小 ,加油!早日康复! ,50,收入 ,交易成功 189 | "20141031000040011100470099522774 ",支付宝网站 ,即时到账交易 ,**珍 ,转账 ,100,收入 ,交易成功 190 | "20141031000040011100500004316563 ",支付宝网站 ,即时到账交易 ,*畅 ,祝早日康复 ,20,收入 ,交易成功 191 | "20141031000040011100670004284708 ",支付宝网站 ,即时到账交易 ,**伟 ,学弟加油!早日康复! ,100,收入 ,交易成功 192 | "20141031000040011100420002495496 ",支付宝网站 ,即时到账交易 ,**鸣 ,加油加油 ,10,收入 ,交易成功 193 | "20141031000040011100530096841130 ",支付宝网站 ,即时到账交易 ,**凯 ,保持好心态 ,50,收入 ,交易成功 194 | "20141031000040011100170009934500 ",支付宝网站 ,即时到账交易 ,**霏 ,祝早日康复!坚强坚持! ,100,收入 ,交易成功 195 | "20141031000040011100260096809614 ",支付宝网站 ,即时到账交易 ,**露 ,转账 ,100,收入 ,交易成功 196 | "20141031000040011100510098373548 ",支付宝网站 ,即时到账交易 ,**玉 ,付款-祝早日康复回到同学中去! ,100,收入 ,交易成功 197 | "20141031000040011100430098373351 ",支付宝网站 ,即时到账交易 ,*帅 ,转账 ,50,收入 ,交易成功 198 | "20141031000040011100690096713926 ",支付宝网站 ,即时到账交易 ,*森 ,愿伟大的真主怜悯你,祝你早日康复。 ,50,收入 ,交易成功 199 | "20141031000040011100430099306795 ",支付宝网站 ,即时到账交易 ,**涵 ,东尧加油! ,20,收入 ,交易成功 200 | "20141031000040011100860099290641 ",支付宝网站 ,即时到账交易 ,*爽 ,加油? ,20,收入 ,交易成功 201 | "20141031000040011100150009734176 ",支付宝网站 ,即时到账交易 ,*豪 ,祝早日康复! ,10,收入 ,交易成功 202 | "20141031000040011100690001907946 ",支付宝网站 ,即时到账交易 ,**进 ,墨村华中分舵 发来祝福 加油 ,50,收入 ,交易成功 203 | "20141031000040011100060099290197 ",支付宝网站 ,即时到账交易 ,**基 ,转账 ,20,收入 ,交易成功 204 | "20141031000040011100260096601607 ",支付宝网站 ,即时到账交易 ,*阳 ,学弟加油! ,50,收入 ,交易成功 205 | "20141031000040011100100009670771 ",支付宝网站 ,即时到账交易 ,*伟 ,加油!河海水利人也望你早日康复! ,1000,收入 ,交易成功 206 | "20141031000040011100600098221565 ",支付宝网站 ,即时到账交易 ,**阳 ,不好意思金额不多,一定要挺过去啊! ,50,收入 ,交易成功 207 | "20141031000040011100160098229521 ",支付宝网站 ,即时到账交易 ,*翩 ,学弟,祝你早日康复 ,30,收入 ,交易成功 208 | "20141031000040011100140096553701 ",支付宝网站 ,即时到账交易 ,**杰 ,普通武大郎一枚,钱少请见谅,祝早日归珞珈,20,收入 ,交易成功 209 | "20141031000040011100520003884504 ",支付宝网站 ,即时到账交易 ,*梅 ,转账 ,20,收入 ,交易成功 210 | "20141031000040011100320096553406 ",支付宝网站 ,即时到账交易 ,**婧 ,孔老师祝早日康复,战胜病魔! ,200,收入 ,交易成功 211 | "20141031000040011100160009606728 ",支付宝网站 ,即时到账交易 ,**月 ,同为龙江人,远道求学不易,祝你康复! ,20,收入 ,交易成功 212 | "20141031000040011100200002199637 ",支付宝网站 ,即时到账交易 ,**辉 ,加油! ,100,收入 ,交易成功 213 | "20141031000040011100180005096894 ",支付宝网站 ,即时到账交易 ,**航 ,早日康复! ,5,收入 ,交易成功 214 | "20141031000040011100060005112126 ",支付宝网站 ,即时到账交易 ,**茹 ,林东尧加油!祝早日康复! ,80,收入 ,交易成功 215 | "20141031000040011100010001787863 ",支付宝网站 ,即时到账交易 ,*洁 ,我是患有自身免疫病的学姐,我们要相信奇迹[你懂的],50,收入 ,交易成功 216 | "20141031000040011100540002175367 ",支付宝网站 ,即时到账交易 ,**生 ,付款-转账 ,100,收入 ,交易成功 217 | "20141031000040011100880005000575 ",支付宝网站 ,即时到账交易 ,*泉 ,祝早日康复! ,25,收入 ,交易成功 218 | "20141031000040011100390098037165 ",支付宝网站 ,即时到账交易 ,**岚 ,坚强面对,加油 ,100,收入 ,交易成功 219 | "20141031000040011100190098013098 ",支付宝网站 ,即时到账交易 ,**慧 ,加油〜祝你早日康复〜 ,50,收入 ,交易成功 220 | "20141031000040011100490009494100 ",支付宝网站 ,即时到账交易 ,*韵 ,转账 ,10,收入 ,交易成功 221 | "20141031000040011100620003740896 ",支付宝网站 ,即时到账交易 ,**驰 ,东尧加油,祝早日康复^O^ ,20,收入 ,交易成功 222 | "20141031000040011100590004952871 ",支付宝网站 ,即时到账交易 ,**旎 ,早日康复!加油! ,50,收入 ,交易成功 223 | "20141031000040011100830004976127 ",支付宝网站 ,即时到账交易 ,吴? ,祝早日康复??? ,10,收入 ,交易成功 224 | "20141031000040011100260001691015 ",支付宝网站 ,即时到账交易 ,**鹤 ,祝早日康复 ,200,收入 ,交易成功 225 | "20141031000040011100620097941807 ",支付宝网站 ,即时到账交易 ,*威 ,祝早日康复 ,20,收入 ,交易成功 226 | "20141031000040011100890096249416 ",支付宝网站 ,即时到账交易 ,**准 ,钱不多,望班长转告东尧同学,路总会有的 ,100,收入 ,交易成功 227 | "20141031000040011100850096257234 ",支付宝网站 ,即时到账交易 ,*悦 ,付款-来自穷比学姐学长的问候,早日康复!么么哒,100,收入 ,交易成功 228 | "20141031000040011100410003620772 ",支付宝网站 ,即时到账交易 ,**敏 ,绵薄之力!望早日康复!加油! ,30,收入 ,交易成功 229 | "20141031000040011100090004872252 ",支付宝网站 ,即时到账交易 ,**琨 ,力量不大 算一点心意 祝早日康复[你懂的],50,收入 ,交易成功 230 | "20141031000040011100190008814670 ",支付宝网站 ,即时到账交易 ,**东 ,希望可以早日康复! ,50,收入 ,交易成功 231 | "20141031000040011100330098994375 ",支付宝网站 ,即时到账交易 ,**琳 ,支付??有?些,???法充值〜加油! ,55.81,收入 ,交易成功 232 | "20141031000040011100130096153904 ",支付宝网站 ,即时到账交易 ,**月 ,以河图的名义 祝图图生日快乐 东尧加油!,50,收入 ,交易成功 233 | "20141031000040011100810001975939 ",支付宝网站 ,即时到账交易 ,**华 ,付款-1407班姜德伟妈妈捐款 ,200,收入 ,交易成功 234 | "20141031000040011100570096169297 ",支付宝网站 ,即时到账交易 ,*恬 ,等你回来??武大经管人 ,20,收入 ,交易成功 235 | "20141031000040011100870098938691 ",支付宝网站 ,即时到账交易 ,*鹏 ,东尧加油!!水院都是一家人~ ,20,收入 ,交易成功 236 | "20141031000040011100130009182363 ",支付宝网站 ,即时到账交易 ,**雅 ,祝早日健康! ,50,收入 ,交易成功 237 | "20141031000040011100650001499246 ",支付宝网站 ,即时到账交易 ,**英 ,这是我的幸运数字,希望带给你幸运 ,33,收入 ,交易成功 238 | "20141031000040011100750003460659 ",支付宝网站 ,即时到账交易 ,**阳 ,你好我是地大学生,祝你早日康复 ,10,收入 ,交易成功 239 | "20141031000040011100600001491133 ",支付宝网站 ,即时到账交易 ,**昊 ,等你回来 ,300,收入 ,交易成功 240 | "20141031000040011100950097765419 ",支付宝网站 ,即时到账交易 ,**彪 ,哥们,挺过去! ,20,收入 ,交易成功 241 | "20141031000040011100260098738104 ",支付宝网站 ,即时到账交易 ,**正 ,转账 ,300,收入 ,交易成功 242 | "20141031000040011100380001807346 ",支付宝网站 ,即时到账交易 ,*乔 ,祝你早日康复!一切顺利!金融大四学姐 ,100,收入 ,交易成功 243 | "20141031000040011100610009038094 ",支付宝网站 ,即时到账交易 ,**震 ,祝早日康复 ,10,收入 ,交易成功 244 | "20141031000040011100930001363735 ",支付宝网站 ,即时到账交易 ,**延 ,水院校友,早日康复! ,50,收入 ,交易成功 245 | "20141031000040011100780004624121 ",支付宝网站 ,即时到账交易 ,**玲 ,转账 ,300,收入 ,交易成功 246 | "20141031000040011100990097661456 ",支付宝网站 ,即时到账交易 ,**东 ,付款-转账 ,50,收入 ,交易成功 247 | "20141031000040011100530098642841 ",支付宝网站 ,即时到账交易 ,**宇 ,挺住! ,50,收入 ,交易成功 248 | "20141031000040011100680003244418 ",支付宝网站 ,即时到账交易 ,**安 ,学弟加油〜 ,100,收入 ,交易成功 249 | "20141031000040011100240097605369 ",支付宝网站 ,即时到账交易 ,**翔 ,学长尽己微薄之力,东尧加油! ,20,收入 ,交易成功 250 | "20141031000040011100180004456923 ",支付宝网站 ,即时到账交易 ,**可 ,付款-东尧,佛菩萨保?你。一切会好起来。加油!,200,收入 ,交易成功 251 | "20141031000040011100440097517928 ",支付宝网站 ,即时到账交易 ,**人 ,*\(^_^)/*加油 ,90,收入 ,交易成功 252 | "20141031000040011100610008798521 ",支付宝网站 ,即时到账交易 ,**峰 ,学弟加油。穷逼学长匿了 ,100,收入 ,交易成功 253 | "20141031000040011100640001543294 ",支付宝网站 ,即时到账交易 ,**武 ,祝早日康复! ,200,收入 ,交易成功 254 | "20141031000040011100430004328059 ",支付宝网站 ,即时到账交易 ,**恒 ,东尧加油 ,400,收入 ,交易成功 255 | "20141031000040011100660002988869 ",支付宝网站 ,即时到账交易 ,**雪 ,付款-加油!祝早日康复 ,50,收入 ,交易成功 256 | "20141031000040011100890098418702 ",支付宝网站 ,即时到账交易 ,*举 ,加油,希望你早日康复。 ,100,收入 ,交易成功 257 | "20141031000040011100680095601414 ",支付宝网站 ,即时到账交易 ,**仲 ,学弟加油 ,50,收入 ,交易成功 258 | "20141031000040011100610095601276 ",支付宝网站 ,即时到账交易 ,**兰 ,转账 ,10,收入 ,交易成功 259 | "20141031000040011100860002940635 ",支付宝网站 ,即时到账交易 ,*迪 ,祝你早日康复! ,50,收入 ,交易成功 260 | "20141031000040011100310008662349 ",支付宝网站 ,即时到账交易 ,*烨 ,转账 ,300,收入 ,交易成功 261 | "20141031000040011100560095585136 ",支付宝网站 ,即时到账交易 ,*晨? ,祝早日康复! ,100,收入 ,交易成功 262 | "20141031000040011100930002892837 ",支付宝网站 ,即时到账交易 ,**旭 ,付款-同为武大龙江学子,一点微薄之力! ,50,收入 ,交易成功 263 | "20141031000040011100080004208348 ",支付宝网站 ,即时到账交易 ,**源 ,转账 ,50,收入 ,交易成功 264 | "20141031000040011100750001335355 ",支付宝网站 ,即时到账交易 ,**烨 ,同学要坚强,祝早日康复 ,50,收入 ,交易成功 265 | "20141031000040011100260095489883 ",支付宝网站 ,即时到账交易 ,**玲 ,政管院考研学姐祝你早日康复!加油,东尧[你懂的],50,收入 ,交易成功 266 | "20141031000040011100630095497691 ",支付宝网站 ,即时到账交易 ,**琦 ,加油〜早日康复 ,50,收入 ,交易成功 267 | "20141031000040011100770002828834 ",支付宝网站 ,即时到账交易 ,**宏 ,祝早日康复 ,100,收入 ,交易成功 268 | "20141031000040011100290008502704 ",支付宝网站 ,即时到账交易 ,*杰 ,祝你早日康复〜加油?(^ω^)? ,100,收入 ,交易成功 269 | "20141031000040011100190002796977 ",支付宝网站 ,即时到账交易 ,**奇 ,转账 ,5,收入 ,交易成功 270 | "20141031000040011100480008430557 ",支付宝网站 ,即时到账交易 ,**琪 ,微薄之力,祝早日康复! ,50,收入 ,交易成功 271 | "20141031000040011100550097165069 ",支付宝网站 ,即时到账交易 ,*琦 ,加油! ,100,收入 ,交易成功 272 | "20141031000040011100580097133683 ",支付宝网站 ,即时到账交易 ,*萌 ,我弟和你校友祝早日康复加油![还你钱] ,50,收入 ,交易成功 273 | "20141031000040011100800097133327 ",支付宝网站 ,即时到账交易 ,*汉 ,东尧加油,武大同学留。 ,100,收入 ,交易成功 274 | "20141031000040011100580095409011 ",支付宝网站 ,即时到账交易 ,**萍 ,2014计算机金博楠祝你早日康复! ,200,收入 ,交易成功 275 | "20141031000040011100880097109540 ",支付宝网站 ,即时到账交易 ,**妮 ,一定要坚强地挺过去!!! ,100,收入 ,交易成功 276 | "20141031000040011100270098178781 ",支付宝网站 ,即时到账交易 ,*纯? ,东尧加油! ,5,收入 ,交易成功 277 | "20141031000040011100070000891262 ",支付宝网站 ,即时到账交易 ,**勇 ,祝你早日康复,加油! ,10,收入 ,交易成功 278 | "20141031000040011100990000875795 ",支付宝网站 ,即时到账交易 ,**珂 ,加油啊 ,10,收入 ,交易成功 279 | "20141031000040011100890000875780 ",支付宝网站 ,即时到账交易 ,**聃 ,我是电气校友〜希望东尧能够尽快好起来! ,10,收入 ,交易成功 280 | "20141031000040011100620095297765 ",支付宝网站 ,即时到账交易 ,**伟 ,早日康复,加油东尧 ,50,收入 ,交易成功 281 | "20141031000040011100560098106754 ",支付宝网站 ,即时到账交易 ,**晓 ,加油:) ,50,收入 ,交易成功 282 | "20141031000040011100930000835091 ",支付宝网站 ,即时到账交易 ,**熙 ,你要坚强!早日康复回来!加油! ,100,收入 ,交易成功 283 | "20141031000040011100860095281635 ",支付宝网站 ,即时到账交易 ,*卓 ,可能钱不多,但是希望你加油。 ,150,收入 ,交易成功 284 | "20141031000040011100340001031339 ",支付宝网站 ,即时到账交易 ,**鹏 ,为你的亲朋好友坚强,加油!2010武大人,50,收入 ,交易成功 285 | "20141031000040011100930000787153 ",支付宝网站 ,即时到账交易 ,*华 ,希望你能早日康复,回来华姐请你吃饭!!![(包养你)],400,收入 ,交易成功 286 | "20141031000040011100990096885591 ",支付宝网站 ,即时到账交易 ,*玺 ,加油, ,5,收入 ,交易成功 287 | "20141031000040011100820000715324 ",支付宝网站 ,即时到账交易 ,**一 ,我穷学生一个,希望社会仍有一丝光。加油。,10,收入 ,交易成功 288 | "20141031000040011100420002540307 ",支付宝网站 ,即时到账交易 ,*? ,绵薄之力,愿早日康复,武大人,在一起 ,20,收入 ,交易成功 289 | "20141031000040011100650096805853 ",支付宝网站 ,即时到账交易 ,**慧 ,加油坚强!祝早日康复 ,18,收入 ,交易成功 290 | "20141031000040011100660000203866 ",支付宝网站 ,即时到账交易 ,**艳 ,祝早日康复 加油 ,1,收入 ,交易成功 291 | "20141031000040011100780096797038 ",支付宝网站 ,即时到账交易 ,**甫 ,来自河南学生的祝福。 ,40,收入 ,交易成功 292 | "20141031000040011100110008214759 ",支付宝网站 ,即时到账交易 ,*振 ,加油加油,生活总是因祸得福 ,30,收入 ,交易成功 293 | "20141031000040011100180096749879 ",支付宝网站 ,即时到账交易 ,**园 ,转账 ,10,收入 ,交易成功 294 | "20141031000040011100860095161042 ",支付宝网站 ,即时到账交易 ,**想 ,祝早日康复 ,28,收入 ,交易成功 295 | "20141031000040011100660000203759 ",支付宝网站 ,即时到账交易 ,**艳 ,转账 ,100,收入 ,交易成功 296 | "20141031000040011100040095113807 ",支付宝网站 ,即时到账交易 ,*旭 ,祝福你,早日康复,加油。 ,10,收入 ,交易成功 297 | "20141031000040011100400008142204 ",支付宝网站 ,即时到账交易 ,**鹏 ,加油,好兄弟 ,500,收入 ,交易成功 298 | "20141031000040011100980096389529 ",支付宝网站 ,即时到账交易 ,**雨 ,转账 ,10,收入 ,交易成功 299 | "20141031000040011100000000783557 ",支付宝网站 ,即时到账交易 ,**麟 ,祝林东尧早日康复! ,20,收入 ,交易成功 300 | "20141031000040011100420097882368 ",支付宝网站 ,即时到账交易 ,加油东尧 ,转账 ,100,收入 ,交易成功 301 | "20141031000040011100390002412092 ",支付宝网站 ,即时到账交易 ,**祥 ,付款-转账 ,50,收入 ,交易成功 302 | "20141031000040011100840003720683 ",支付宝网站 ,即时到账交易 ,**聃 ,一点心意,祝早日康复 ,20,收入 ,交易成功 303 | "20141031000040011100200097850375 ",支付宝网站 ,即时到账交易 ,**淳 ,加油,一定要挺过去 ,20,收入 ,交易成功 304 | "20141031000040011100510000483865 ",支付宝网站 ,即时到账交易 ,**桥 ,祝早日康复~ ,50,收入 ,交易成功 305 | "20141031000040011100650003624974 ",支付宝网站 ,即时到账交易 ,**立 ,早日康复! ??一名大庆经管人 ,20,收入 ,交易成功 306 | "20141031000040011100990000663239 ",支付宝网站 ,即时到账交易 ,**永 ,东尧挺住!东尧加油! ,300,收入 ,交易成功 307 | "20141031000040011100820096525533 ",支付宝网站 ,即时到账交易 ,**茜 ,同学,加油! ,50,收入 ,交易成功 308 | "20141031000040011100810000647343 ",支付宝网站 ,即时到账交易 ,**欣 ,东尧加油! ,50,收入 ,交易成功 309 | "20141031000040011100870000403815 ",支付宝网站 ,即时到账交易 ,*惠 ,同是武大人,祝你早日康复~ ,100,收入 ,交易成功 310 | "20141031000040011100940000403699 ",支付宝网站 ,即时到账交易 ,**琴 ,微不足道的心意,望你早日打败病魔。 ,15,收入 ,交易成功 311 | "20141031000040011100280003552964 ",支付宝网站 ,即时到账交易 ,*爽 ,祝早日康复加油战胜病魔 ,100,收入 ,交易成功 312 | "20141031000040011100480000271754 ",支付宝网站 ,即时到账交易 ,*锐 ,弟弟加油!爷们儿加油! ,666.66,收入 ,交易成功 313 | "20141031000040011100110000487220 ",支付宝网站 ,即时到账交易 ,**宇 ,祝早日康复,快乐度过20周岁生日? ,20,收入 ,交易成功 314 | "20141031000040011100870096389004 ",支付宝网站 ,即时到账交易 ,clumsy ,加油〜 ,50,收入 ,交易成功 315 | "20141031000040011100930007790712 ",支付宝网站 ,即时到账交易 ,**依 ,黑龙江人挺你!!加油!! ,50,收入 ,交易成功 316 | "20141031000040011100320097570761 ",支付宝网站 ,即时到账交易 ,**兰 ,祝东尧同学早日康复 ,100,收入 ,交易成功 317 | "20141031000040011100590007774510 ",支付宝网站 ,即时到账交易 ,**军 ,付款-捐赠 ,97,收入 ,交易成功 318 | "20141031000040011100370002204967 ",支付宝网站 ,即时到账交易 ,**杰 ,加油 ,100,收入 ,交易成功 319 | "20141031000040011100160094825648 ",支付宝网站 ,即时到账交易 ,*悦 ,加油! ,100,收入 ,交易成功 320 | "20141031000040011100000094633825 ",支付宝网站 ,即时到账交易 ,**嘉 ,祝早日康复 ,20,收入 ,交易成功 321 | "20141031000040011100630001948583 ",支付宝网站 ,即时到账交易 ,**漪 ,转账 ,20,收入 ,交易成功 322 | "20141031000040011100610094585068 ",支付宝网站 ,即时到账交易 ,**康 ,尧哥,挺住,一定要回来! ,200,收入 ,交易成功 323 | "20141031000040011100450099971607 ",支付宝网站 ,即时到账交易 ,*飘 ,转账 ,20,收入 ,交易成功 324 | "20141031000040011100800003216680 ",支付宝网站 ,即时到账交易 ,**尧 ,你一定会好起来!相信自己,zhan?s ,300,收入 ,交易成功 325 | "20141031000040011100270007398422 ",支付宝网站 ,即时到账交易 ,*昱 ,转账 ,10,收入 ,交易成功 326 | "20141031000040011100640096013637 ",支付宝网站 ,即时到账交易 ,*者 ,绵薄之力,祝早日康复 ,50,收入 ,交易成功 327 | "20141031000040011100140097170619 ",支付宝网站 ,即时到账交易 ,**强 ,希望你早日康复!祝好 ,100,收入 ,交易成功 328 | "20141031000040011100690001844112 ",支付宝网站 ,即时到账交易 ,**川 ,祝早日康复,拥有坚强精彩的人生! ,20,收入 ,交易成功 329 | "20141031000040011100820007294835 ",支付宝网站 ,即时到账交易 ,**君 ,加油! ,100,收入 ,交易成功 330 | "20141031000040011100600007302387 ",支付宝网站 ,即时到账交易 ,**宽 ,战胜病魔 ,25,收入 ,交易成功 331 | "20141031000040011100790094449391 ",支付宝网站 ,即时到账交易 ,**萍 ,感恩父母功德无量。忏悔杀业吧 。 ,20,收入 ,交易成功 332 | "20141031000040011100000097146133 ",支付宝网站 ,即时到账交易 ,**臻 ,转账 ,40,收入 ,交易成功 333 | "20141031000040011100570001820065 ",支付宝网站 ,即时到账交易 ,刘? ,加油!祝早日康复! ,100,收入 ,交易成功 334 | "20141031000040011100710001716533 ",支付宝网站 ,即时到账交易 ,**成 ,加油,一切都会好起来! ,50,收入 ,交易成功 335 | "20141031000040011100170099891196 ",支付宝网站 ,即时到账交易 ,**瑞玺 ,加油!挺过去 ,100,收入 ,交易成功 336 | "20141031000040011100470003080743 ",支付宝网站 ,即时到账交易 ,*赫 ,转账 ,200,收入 ,交易成功 337 | "20141031000040011100910001684720 ",支付宝网站 ,即时到账交易 ,*强 ,加油 ,16,收入 ,交易成功 338 | "20141031000040011100580007150697 ",支付宝网站 ,即时到账交易 ,**恒 ,加油 ,100,收入 ,交易成功 339 | "20141031000040011100870095861698 ",支付宝网站 ,即时到账交易 ,**蔓 ,坚强的少年,祝早日康复。活下去就有希望 ,300,收入 ,交易成功 340 | "20141031000040011100780001692098 ",支付宝网站 ,即时到账交易 ,**婷 ,林东尧加油! ,3.86,收入 ,交易成功 341 | "20141031000040011100520007134935 ",支付宝网站 ,即时到账交易 ,*皖 ,祝早日康复〜 ,200,收入 ,交易成功 342 | "20141031000040011100400095845593 ",支付宝网站 ,即时到账交易 ,**旭 ,加油!!! ,300,收入 ,交易成功 343 | "20141031000040011100090007070555 ",支付宝网站 ,即时到账交易 ,战海? ,转账 ,10,收入 ,交易成功 344 | "20141031000040011100440001644701 ",支付宝网站 ,即时到账交易 ,**晶 ,请一定加油,好好活下去。 ,100,收入 ,交易成功 345 | "20141031000040011100350007062433 ",支付宝网站 ,即时到账交易 ,**斌 ,加油,祝你早日康复 ,100,收入 ,交易成功 346 | "20141031000040011100000094297107 ",支付宝网站 ,即时到账交易 ,**恒 ,钱不多,希望学弟能加油! ,50,收入 ,交易成功 347 | "20141031000040011100070003000367 ",支付宝网站 ,即时到账交易 ,**,你一定会好的。不要放弃,加油! ,100,收入 ,交易成功 348 | "20141031000040011100890094289430 ",支付宝网站 ,即时到账交易 ,**量 ,转账 ,20,收入 ,交易成功 349 | "20141031000040011100420001620406 ",支付宝网站 ,即时到账交易 ,**子熹 ,加油 等你回来 ,100,收入 ,交易成功 350 | "20141031000040011100310007022679 ",支付宝网站 ,即时到账交易 ,**红 ,东尧同学加油!坚强度过早日康复!武大国软,200,收入 ,交易成功 351 | "20141031000040011100020002976925 ",支付宝网站 ,即时到账交易 ,**云 ,早日康复? ,50,收入 ,交易成功 352 | "20141031000040011100840096970585 ",支付宝网站 ,即时到账交易 ,**然 ,要坚强!早日康复! ,100,收入 ,交易成功 353 | "20141031000040011100990002960937 ",支付宝网站 ,即时到账交易 ,**文 ,小学弟加油,都会好起来的! ,50,收入 ,交易成功 354 | "20141031000040011100490096938705 ",支付宝网站 ,即时到账交易 ,**雅 ,这是来自拉萨的祝福!要加油,不要放弃! ,500,收入 ,交易成功 355 | "20141031000040011100270002968577 ",支付宝网站 ,即时到账交易 ,**敏 ,加油 ,20,收入 ,交易成功 356 | "20141031000040011100580099779228 ",支付宝网站 ,即时到账交易 ,aza ,坚持下去,加油!一切都会好起来的 ,10,收入 ,交易成功 357 | "20141031000040011100070095733955 ",支付宝网站 ,即时到账交易 ,**裕 ,我能帮到的不多,但仍希望你能加油! ,50,收入 ,交易成功 358 | "20141031000040011100620099871332 ",支付宝网站 ,即时到账交易 ,**元 ,坚强下去啊〜加油! ,200,收入 ,交易成功 359 | "20141031000040011100910006934362 ",支付宝网站 ,即时到账交易 ,sunshine ,转账 ,10,收入 ,交易成功 360 | "20141031000040011100970006910970 ",支付宝网站 ,即时到账交易 ,**燕 ,东尧加油〜早日康复〜 ,300,收入 ,交易成功 361 | "20141030000040011100260094161713 ",支付宝网站 ,即时到账交易 ,**鸿 ,转账 ,110,收入 ,交易成功 362 | "2014103000001000970039921493 ",支付宝网站 ,即时到账交易 ,**燕 ,东尧加油〜早日康复 ,300,收入 ,交易成功 363 | "20141030000040011100360001500253 ",支付宝网站 ,即时到账交易 ,**均 ,付款-祝身体赶快康复 ,100,收入 ,交易成功 364 | "20141030000040011100670099691716 ",支付宝网站 ,即时到账交易 ,**祗 ,付款-转账 ,50,收入 ,交易成功 365 | "20141030000040011100640096858362 ",支付宝网站 ,即时到账交易 ,**兵 ,加油! ,20,收入 ,交易成功 366 | "20141030000040011100060096818959 ",支付宝网站 ,即时到账交易 ,**阳 ,祝早日康复! ,40,收入 ,交易成功 367 | "20141030000040011100340006878086 ",支付宝网站 ,即时到账交易 ,**凝 ,加油加油加油 ,10,收入 ,交易成功 368 | "20141030000040011100990095653124 ",支付宝网站 ,即时到账交易 ,**绪 ,早日康复! ,100,收入 ,交易成功 369 | "20141030000040011100430099675309 ",支付宝网站 ,即时到账交易 ,**曦 ,转账 ,20,收入 ,交易成功 370 | "20141030000040011100890099799600 ",支付宝网站 ,即时到账交易 ,**军 ,学弟,,祝你早日康复 ,100,收入 ,交易成功 371 | "20141030000040011100730096778760 ",支付宝网站 ,即时到账交易 ,**权 ,愿早日康复 ,21,收入 ,交易成功 372 | "20141030000040011100790006806600 ",支付宝网站 ,即时到账交易 ,**欣 ,祝你早日康复 ,50,收入 ,交易成功 373 | "20141030000040011100210099823137 ",支付宝网站 ,即时到账交易 ,**国 ,等募捐的时候再现场去捐。祝早日康复!加油,20,收入 ,交易成功 374 | "20141030000040011100430096770776 ",支付宝网站 ,即时到账交易 ,*浩 ,建议配合尝试自然疗法! ,100,收入 ,交易成功 375 | "20141030000040011100030095581717 ",支付宝网站 ,即时到账交易 ,**文 ,先把最近余额宝赚的捐了吧,加油 ,20,收入 ,交易成功 376 | "20141030000040011100500002784524 ",支付宝网站 ,即时到账交易 ,**栋 ,祝早日康复 ,200,收入 ,交易成功 377 | "20141030000040011100950096738485 ",支付宝网站 ,即时到账交易 ,**妍 ,加油加油加油!珞珈等你回来! ,50,收入 ,交易成功 378 | "20141030000040011100420006766839 ",支付宝网站 ,即时到账交易 ,*平 ,东尧加油!!! ,20,收入 ,交易成功 379 | "20141030000040011100360094049833 ",支付宝网站 ,即时到账交易 ,**琳 ,我是计量志愿者祝福加油!数量不多祝开心 ,20,收入 ,交易成功 380 | "20141030000040011100250094081267 ",支付宝网站 ,即时到账交易 ,**琰 ,加油 ,50,收入 ,交易成功 381 | "20141030000040011100240006766711 ",支付宝网站 ,即时到账交易 ,**晶 ,绵薄之力,早日康复! ,30,收入 ,交易成功 382 | "20141030000040011100950006790140 ",支付宝网站 ,即时到账交易 ,*韬 ,付款-加油同学,早日康复! ,20,收入 ,交易成功 383 | "20141030000040011100890099555579 ",支付宝网站 ,即时到账交易 ,**淳 ,转账 ,10,收入 ,交易成功 384 | "20141030000040011100180099751239 ",支付宝网站 ,即时到账交易 ,**贝 ,加油。涅?之后,定是重生。 ,50,收入 ,交易成功 385 | "20141030000040011100720002760465 ",支付宝网站 ,即时到账交易 ,**晓 ,祝早日康复!!\^O^/ ,200,收入 ,交易成功 386 | "20141030000040011100310006710625 ",支付宝网站 ,即时到账交易 ,*玲 ,转账 ,50,收入 ,交易成功 387 | "20141030000040011100310094001997 ",支付宝网站 ,即时到账交易 ,*玲 ,东尧要加油!!!! ,150,收入 ,交易成功 388 | "20141030000040011100180002760055 ",支付宝网站 ,即时到账交易 ,**旭 ,加油 哪怕能多看眼美丽的世界,你都要坚持,20,收入 ,交易成功 389 | "20141030000040011100730096690234 ",支付宝网站 ,即时到账交易 ,**双 ,东尧,加油,我们等你回家 ,100,收入 ,交易成功 390 | "20141030000040011100910006710173 ",支付宝网站 ,即时到账交易 ,WCP ,祝早日康复 ,40,收入 ,交易成功 391 | "20141030000040011100880006694525 ",支付宝网站 ,即时到账交易 ,**瑶 ,东尧 同在队里没能早点认识你 等你回来吧,200,收入 ,交易成功 392 | "20141030000040011100630006662347 ",支付宝网站 ,即时到账交易 ,**星 ,动摇学长加油!表演队的小鲜肉支持你哈! ,200,收入 ,交易成功 393 | "20141030000040011100820096682108 ",支付宝网站 ,即时到账交易 ,*雪 ,钱不多,只是寄托我美好心愿,望你早日康复,20,收入 ,交易成功 394 | "20141030000040011100150095485049 ",支付宝网站 ,即时到账交易 ,**松 ,加油!神保佑! ,100,收入 ,交易成功 395 | "20141030000040011100260001308672 ",支付宝网站 ,即时到账交易 ,**康 ,加油!早日康复! ,20,收入 ,交易成功 396 | "20141030000040011100310002712725 ",支付宝网站 ,即时到账交易 ,**贤 ,早日康复!(???) ,20,收入 ,交易成功 397 | "20141030000040011100410099679591 ",支付宝网站 ,即时到账交易 ,**康 ,转账 ,200,收入 ,交易成功 398 | "20141030000040011100610006614161 ",支付宝网站 ,即时到账交易 ,**雯 ,珍爱生命好好治疗,早日回到校园 ,50,收入 ,交易成功 399 | "20141030000040011100750099499014 ",支付宝网站 ,即时到账交易 ,**泉 ,祝你早日康复, ,50,收入 ,交易成功 400 | "20141030000040011100250093945956 ",支付宝网站 ,即时到账交易 ,*雨 ,加油,代表心意 ,20,收入 ,交易成功 401 | "20141030000040011100040099631987 ",支付宝网站 ,即时到账交易 ,**浓 ,加油 ,50,收入 ,交易成功 402 | "20141030000040011100030095397733 ",支付宝网站 ,即时到账交易 ,jh5796 ,加油 ,10,收入 ,交易成功 403 | "20141030000040011100100095381818 ",支付宝网站 ,即时到账交易 ,**刘 ,动摇加油快好起来啊!我要请你吃饭!!? ,150,收入 ,交易成功 404 | "20141030000040011100270006582347 ",支付宝网站 ,即时到账交易 ,**茜 ,转账 ,100,收入 ,交易成功 405 | "20141030000040011100840006558987 ",支付宝网站 ,即时到账交易 ,**陶 ,我是赵彦准的朋友,不是武大人,为东尧加油,50,收入 ,交易成功 406 | "20141030000040011100360099435320 ",支付宝网站 ,即时到账交易 ,**培 ,加油 ,10,收入 ,交易成功 407 | "20141030000040011100000099607261 ",支付宝网站 ,即时到账交易 ,*鹏 ,转账 ,20,收入 ,交易成功 408 | "20141030000040011100770002640845 ",支付宝网站 ,即时到账交易 ,*银 ,加油!好了一起打羽毛球哈~ ,50,收入 ,交易成功 409 | "20141030000040011100290001172939 ",支付宝网站 ,即时到账交易 ,*涛 ,谢你的学姐吧,早日康复〜 ,400,收入 ,交易成功 410 | "20141030000040011100520099591505 ",支付宝网站 ,即时到账交易 ,*可 ,祝你早日战胜病魔! ,30,收入 ,交易成功 411 | "20141030000040011100810095277227 ",支付宝网站 ,即时到账交易 ,**旺 ,加油! ,30,收入 ,交易成功 412 | "20141030000040011100780006526636 ",支付宝网站 ,即时到账交易 ,*强 ,东尧加油,早日康复! ,100,收入 ,交易成功 413 | "20141030000040011100570096458643 ",支付宝网站 ,即时到账交易 ,**宇 ,加油! ,50,收入 ,交易成功 414 | "20141030000040011100850001172087 ",支付宝网站 ,即时到账交易 ,*鹭 ,祝愿他早点好!加油! ,37,收入 ,交易成功 415 | "20141030000040011100200095229849 ",支付宝网站 ,即时到账交易 ,**丽 ,祝林东尧早日康复! ,100,收入 ,交易成功 416 | "20141030000040011100500099559046 ",支付宝网站 ,即时到账交易 ,**东 ,东尧加油,快快好起来 ,50,收入 ,交易成功 417 | "20141030000040011100230093809519 ",支付宝网站 ,即时到账交易 ,**蓓 ,加油! ,100,收入 ,交易成功 418 | "20141030000040011100560001132828 ",支付宝网站 ,即时到账交易 ,*超 ,好好加油,祝早日康复! ,100,收入 ,交易成功 419 | "20141030000040011100680099519847 ",支付宝网站 ,即时到账交易 ,**林 ,学弟加油,祝早日康复! ,50,收入 ,交易成功 420 | "20141030000040011100830006462642 ",支付宝网站 ,即时到账交易 ,**馨 ,付款-刚把得 ,49.5,收入 ,交易成功 421 | "20141030000040011100190099487609 ",支付宝网站 ,即时到账交易 ,*旭 ,虽然不多但也是心意,望康复! ,10,收入 ,交易成功 422 | "20141030000040011100800099243782 ",支付宝网站 ,即时到账交易 ,**涛 ,加油〜 ,1000,收入 ,交易成功 423 | "20141030000040011100680096378395 ",支付宝网站 ,即时到账交易 ,*宇 ,加油 ,5,收入 ,交易成功 424 | "20141030000040011100030099219935 ",支付宝网站 ,即时到账交易 ,**峰 ,东尧,加油! ,100,收入 ,交易成功 425 | "20141030000040011100560099227603 ",支付宝网站 ,即时到账交易 ,**奇 ,付款-祝早日康复! ,80,收入 ,交易成功 426 | "20141030000040011100410001108277 ",支付宝网站 ,即时到账交易 ,FreyaTian ,早日康复! ,50,收入 ,交易成功 427 | "20141030000040011100260093737529 ",支付宝网站 ,即时到账交易 ,**迎 ,转账 ,30,收入 ,交易成功 428 | "20141030000040011100870006398784 ",支付宝网站 ,即时到账交易 ,*威 ,加油!生命永不低头! ,50,收入 ,交易成功 429 | "20141030000040011100630095133755 ",支付宝网站 ,即时到账交易 ,**宇 ,转账 ,100,收入 ,交易成功 430 | "20141030000040011100840093697495 ",支付宝网站 ,即时到账交易 ,*俊 ,表达祝福,加油! ,30,收入 ,交易成功 431 | "20141030000040011100320095117710 ",支付宝网站 ,即时到账交易 ,**捷 ,转账 ,20,收入 ,交易成功 432 | "20141030000040011100250096330313 ",支付宝网站 ,即时到账交易 ,*红 ,加油,生命太宝贵,务必珍惜! ,50,收入 ,交易成功 433 | "20141030000040011100510093673685 ",支付宝网站 ,即时到账交易 ,**铭 ,转账 ,20,收入 ,交易成功 434 | "20141030000040011100350099163355 ",支付宝网站 ,即时到账交易 ,**会 ,转账 ,100,收入 ,交易成功 435 | "20141030000040011100350099123331 ",支付宝网站 ,即时到账交易 ,**南 ,东尧一定要回来 ,100,收入 ,交易成功 436 | "20141030000040011100620001028624 ",支付宝网站 ,即时到账交易 ,**琪 ,来自金津同学 ,20,收入 ,交易成功 437 | "20141030000040011100710095053951 ",支付宝网站 ,即时到账交易 ,**萍 ,转账 ,50,收入 ,交易成功 438 | "20141030000040011100230006342448 ",支付宝网站 ,即时到账交易 ,**风 ,加油! ,15,收入 ,交易成功 439 | "20141030000040011100440096298473 ",支付宝网站 ,即时到账交易 ,*健 ,湖警小健的一份心,祝愿早日康复! ,30,收入 ,交易成功 440 | "20141030000040011100040093673010 ",支付宝网站 ,即时到账交易 ,*双 ,转账 ,100,收入 ,交易成功 441 | "20141030000040011100950095045555 ",支付宝网站 ,即时到账交易 ,*飞 ,愿你乐观面对生活,早日康复!加油! ,20,收入 ,交易成功 442 | "20141030000040011100410099343508 ",支付宝网站 ,即时到账交易 ,**之 ,加油 ,50,收入 ,交易成功 443 | "20141030000040011100230001020168 ",支付宝网站 ,即时到账交易 ,*俱 ,付款-加油!祝早日康复! ,100,收入 ,交易成功 444 | "20141030000040011100340000988528 ",支付宝网站 ,即时到账交易 ,**语 ,加油! ,30,收入 ,交易成功 445 | "20141030000040011100760006270966 ",支付宝网站 ,即时到账交易 ,**悦 ,一定要好起来。 ,50,收入 ,交易成功 446 | "20141030000040011100970095037303 ",支付宝网站 ,即时到账交易 ,**栋 ,动摇加油~尼玛哥哥等你回来继续去七舍楼顶,1000,收入 ,交易成功 447 | "20141030000040011100290002272649 ",支付宝网站 ,即时到账交易 ,**蕊 ,东尧加油!(来自武大遥感1303,感恩),30,收入 ,交易成功 448 | "20141030000040011100170095045074 ",支付宝网站 ,即时到账交易 ,**哲 ,加油~ ,20,收入 ,交易成功 449 | "20141030000040011100620093617276 ",支付宝网站 ,即时到账交易 ,*科 ,加油! ,40,收入 ,交易成功 450 | "20141030000040011100190099059839 ",支付宝网站 ,即时到账交易 ,**霈 ,转账 ,150,收入 ,交易成功 451 | "20141030000040011100060002272126 ",支付宝网站 ,即时到账交易 ,**亮 ,转账 ,10,收入 ,交易成功 452 | "20141030000040011100580099083314 ",支付宝网站 ,即时到账交易 ,**真 ,付款-祝早日康复! ,16,收入 ,交易成功 453 | "20141030000040011100590099319437 ",支付宝网站 ,即时到账交易 ,*宜 ,加油啊!! ,100,收入 ,交易成功 454 | "20141030000040011100450095013566 ",支付宝网站 ,即时到账交易 ,**泽 ,加油! ,50,收入 ,交易成功 455 | "20141030000040011100280006246660 ",支付宝网站 ,即时到账交易 ,**平 ,加油,好起来。 ,4,收入 ,交易成功 456 | "20141030000040011100910000956043 ",支付宝网站 ,即时到账交易 ,**婧 ,加油加油。一切都会好起来 ,10,收入 ,交易成功 457 | "20141030000040011100130093553916 ",支付宝网站 ,即时到账交易 ,*洵 ,东尧加油! ,50,收入 ,交易成功 458 | "20141030000040011100900094997330 ",支付宝网站 ,即时到账交易 ,*溯 ,加油,我是王法栋的同学。 ,5,收入 ,交易成功 459 | "20141030000040011100660096202644 ",支付宝网站 ,即时到账交易 ,**姗 ,加油! ,20,收入 ,交易成功 460 | "20141030000040011100030096202436 ",支付宝网站 ,即时到账交易 ,**真 ,一定要加油!!不要放弃希望!! ,20,收入 ,交易成功 461 | "20141030000040011100690094941982 ",支付宝网站 ,即时到账交易 ,**杰 ,我是武汉理工的盛伦杰,希望你能康复。 ,30,收入 ,交易成功 462 | "20141030000040011100000099239797 ",支付宝网站 ,即时到账交易 ,**文 ,早日康复,学长也没钱,一点心意了。 ,20,收入 ,交易成功 463 | "20141030000040011100780093521483 ",支付宝网站 ,即时到账交易 ,*亮 ,水院一辩林东尧,亮哥在杭州为你加油! ,100,收入 ,交易成功 464 | "20141030000040011100150098971882 ",支付宝网站 ,即时到账交易 ,**川 ,加油! ,200,收入 ,交易成功 465 | "20141030000040011100890094941495 ",支付宝网站 ,即时到账交易 ,**婷 ,加油〜!我们都会默默为你祈福的 ,77,收入 ,交易成功 466 | "20141030000040011100830000876348 ",支付宝网站 ,即时到账交易 ,*箫 ,学弟,一定要加油! ,50,收入 ,交易成功 467 | "20141030000040011100250002176632 ",支付宝网站 ,即时到账交易 ,*桐 ,加油⋯虽然我也没有多少钱⋯要尽快好起来 ,30,收入 ,交易成功 468 | "20141030000040011100180096122704 ",支付宝网站 ,即时到账交易 ,*铭 ,加油!快点好起来 ,20,收入 ,交易成功 469 | "20141030000040011100550098971119 ",支付宝网站 ,即时到账交易 ,**宏 ,付款-祝康复,来自吴津津的同学 ,50,收入 ,交易成功 470 | "20141030000040011100410098971014 ",支付宝网站 ,即时到账交易 ,**元 ,每个月的支配金额有限,一份心意。 ,10,收入 ,交易成功 471 | "20141030000040011100960098947819 ",支付宝网站 ,即时到账交易 ,**立 ,祝早日康复,加油 ,100,收入 ,交易成功 472 | "20141030000040011100630002176337 ",支付宝网站 ,即时到账交易 ,**永 ,六十万不算什么,加油! ,200,收入 ,交易成功 473 | "20141030000040011100330000836474 ",支付宝网站 ,即时到账交易 ,**鸣 ,加油! ,200,收入 ,交易成功 474 | "20141030000040011100520099223827 ",支付宝网站 ,即时到账交易 ,**东 ,小小的心意,加油,学长等着你回来。 ,30,收入 ,交易成功 475 | "20141030000040011100620096082650 ",支付宝网站 ,即时到账交易 ,**彦 ,加油 ,50,收入 ,交易成功 476 | "20141030000040011100190099223623 ",支付宝网站 ,即时到账交易 ,**霈 ,转账 ,50,收入 ,交易成功 477 | "20141030000040011100460098867893 ",支付宝网站 ,即时到账交易 ,**璇 ,东尧加油! ,200,收入 ,交易成功 478 | "20141030000040011100830098851821 ",支付宝网站 ,即时到账交易 ,**钰 ,绵薄之力,学弟希望重见动摇学长风采。? ,50,收入 ,交易成功 479 | "2014103000001000610035879147 ",支付宝网站 ,即时到账交易 ,**天 ,治疗加诚心念佛或许会有奇迹 南无阿弥陀佛,20,收入 ,交易成功 480 | "20141030000040011100600095970438 ",支付宝网站 ,即时到账交易 ,**文 ,祝早日康复! ,20,收入 ,交易成功 481 | "20141030000040011100890000740167 ",支付宝网站 ,即时到账交易 ,**政 ,东尧哥加油 ,20,收入 ,交易成功 482 | "20141030000040011100430098707993 ",支付宝网站 ,即时到账交易 ,**娟 ,转账 ,5,收入 ,交易成功 483 | "20141030000040011100980099119698 ",支付宝网站 ,即时到账交易 ,**遥 ,付款-转账 ,0.7,收入 ,交易成功 484 | "20141030000040011100700002096612 ",支付宝网站 ,即时到账交易 ,**洁 ,所有的同学都会支持你的〜!加油〜! ,100,收入 ,交易成功 485 | "20141030000040011100170095914839 ",支付宝网站 ,即时到账交易 ,**田 ,付款-加油,一切都会好起来的?(^ω^)?,10,收入 ,交易成功 486 | "2014103000001000810036573761 ",支付宝网站 ,即时到账交易 ,**怡 ,校友祝早日康复 加油 ,20,收入 ,交易成功 487 | "20141030000040011100550006038205 ",支付宝网站 ,即时到账交易 ,**阳 ,转账 ,200,收入 ,交易成功 488 | "20141030000040011100360094685359 ",支付宝网站 ,即时到账交易 ,**慧 ,东尧加油,慧慧姐还要回学校看你演的话剧!,500,收入 ,交易成功 489 | "20141030000040011100780002048086 ",支付宝网站 ,即时到账交易 ,**慧 ,加油! ,50,收入 ,交易成功 490 | "20141030000040011100110095866371 ",支付宝网站 ,即时到账交易 ,**辰 ,加油,小伙子 ,200,收入 ,交易成功 491 | "20141030000040011100330006006730 ",支付宝网站 ,即时到账交易 ,**青年 ,加油!一切都会好起来的,即是不是在今天!,10,收入 ,交易成功 492 | "20141030000040011100550001984244 ",支付宝网站 ,即时到账交易 ,**阳 ,东尧加油 ,1000,收入 ,交易成功 493 | "20141030000040011100690099047057 ",支付宝网站 ,即时到账交易 ,**宇 ,付款-我还是哭了,你比我们都坚强,东尧加油!,500,收入 ,交易成功 494 | "20141030000040011100420005966600 ",支付宝网站 ,即时到账交易 ,**达 ,力量微薄请别介意 ,10,收入 ,交易成功 495 | "20141030000040011100880001928666 ",支付宝网站 ,即时到账交易 ,**薇 ,钱不多 学长加油 ,50,收入 ,交易成功 496 | "20141030000040011100750093169011 ",支付宝网站 ,即时到账交易 ,**毅 ,同学加油啊! ,100,收入 ,交易成功 497 | "20141030000040011100430005958383 ",支付宝网站 ,即时到账交易 ,*怡 ,不好意思,生活费所剩不多。祝早日康复! ,50,收入 ,交易成功 498 | "20141030000040011100490000564253 ",支付宝网站 ,即时到账交易 ,*超 ,祝早日康复,加油^_^ ,50,收入 ,交易成功 499 | "20141030000040011100010098919896 ",支付宝网站 ,即时到账交易 ,**蒙蒙 ,东尧加油 ,50,收入 ,交易成功 500 | "20141030000040011100060095778209 ",支付宝网站 ,即时到账交易 ,*欢 ,加油!!祝早日痊愈 ,100,收入 ,交易成功 501 | "20141030000040011100780094525870 ",支付宝网站 ,即时到账交易 ,**林 ,付款-转账 ,50,收入 ,交易成功 502 | "20141030000040011100160001880756 ",支付宝网站 ,即时到账交易 ,**源 ,东尧加油,辽宁汉子支持你 ,100,收入 ,交易成功 503 | "20141030000040011100580000524245 ",支付宝网站 ,即时到账交易 ,**浩 ,祝你早日康复,用毅力克服一切。 ,3.99,收入 ,交易成功 504 | "20141030000040011100120098419045 ",支付宝网站 ,即时到账交易 ,**菊 ,东尧,加油〜不许放弃 ,50,收入 ,交易成功 505 | "20141030000040011100790001864518 ",支付宝网站 ,即时到账交易 ,*娟 ,水院10级李响,祝早日康复 ,100,收入 ,交易成功 506 | "20141030000040011100890094453481 ",支付宝网站 ,即时到账交易 ,**东 ,转账 ,20,收入 ,交易成功 507 | "20141030000040011100000092985715 ",支付宝网站 ,即时到账交易 ,彭*,加油!不要放弃! ,20,收入 ,交易成功 508 | "20141030000040011100080001824493 ",支付宝网站 ,即时到账交易 ,**纯 ,东尧,大海,加油!!!妞妞等你回来!! ,100,收入 ,交易成功 509 | "20141030000040011100910094421425 ",支付宝网站 ,即时到账交易 ,**鹏 ,坚强起来,一切会好的张国鹏 ,50,收入 ,交易成功 510 | "20141030000040011100830001768811 ",支付宝网站 ,即时到账交易 ,*童 ,学弟加油,希望你可以尽快好起来! ,200,收入 ,交易成功 511 | "20141030000040011100770095698162 ",支付宝网站 ,即时到账交易 ,**璇 ,希望学长能快点好起来 ,100,收入 ,交易成功 512 | "20141030000040011100490000452127 ",支付宝网站 ,即时到账交易 ,**芸 ,华科党,偶然看到了消息,杯水车薪,加油!,100,收入 ,交易成功 513 | "20141030000040011100240000444169 ",支付宝网站 ,即时到账交易 ,*佳 ,转账 ,20,收入 ,交易成功 514 | "20141030000040011100750094397492 ",支付宝网站 ,即时到账交易 ,**云 ,林东尧加油! ,100,收入 ,交易成功 515 | "20141030000040011100530092929733 ",支付宝网站 ,即时到账交易 ,**庚 ,转账 ,50,收入 ,交易成功 516 | "20141030000040011100480098831020 ",支付宝网站 ,即时到账交易 ,**杉 ,付款-东尧加油!小学妹在默默支持你! ,100,收入 ,交易成功 517 | "20141030000040011100240005782583 ",支付宝网站 ,即时到账交易 ,*佳 ,加油⋯ ,20,收入 ,交易成功 518 | "20141030000040011100100098815201 ",支付宝网站 ,即时到账交易 ,**丽 ,付款-东尧加油,一定要好起来!!! ,57,收入 ,交易成功 519 | "20141030000040011100650094373411 ",支付宝网站 ,即时到账交易 ,**恺 ,东尧学长加油? ,140.2,收入 ,交易成功 520 | "20141030000040011100340094373272 ",支付宝网站 ,即时到账交易 ,** ,加油! ,50,收入 ,交易成功 521 | "20141030000040011100000001712636 ",支付宝网站 ,即时到账交易 ,*余 ,愿你早日康复 ,200,收入 ,交易成功 522 | "20141030000040011100960000292379 ",支付宝网站 ,即时到账交易 ,**婷 ,东尧加油,挺你到底。 ,50,收入 ,交易成功 523 | "20141030000040011100150098695642 ",支付宝网站 ,即时到账交易 ,**东 ,转账 ,50,收入 ,交易成功 524 | "20141030000040011100430092833938 ",支付宝网站 ,即时到账交易 ,**涛 ,东尧加油。 ,100,收入 ,交易成功 525 | "20141030000040011100860092857710 ",支付宝网站 ,即时到账交易 ,**远 ,东尧加油!! ,100,收入 ,交易成功 526 | "20141030000040011100140094213703 ",支付宝网站 ,即时到账交易 ,*倩 ,付款-转账 ,50,收入 ,交易成功 527 | "20141030000040011100670098235923 ",支付宝网站 ,即时到账交易 ,**昊 ,付款-望康复 ,50,收入 ,交易成功 528 | "20141030000040011100570095482249 ",支付宝网站 ,即时到账交易 ,**春 ,天将降大任于斯人 ,50,收入 ,交易成功 529 | "20141030000040011100840001648902 ",支付宝网站 ,即时到账交易 ,**章 ,东尧,学长在武汉给你加油! ,66,收入 ,交易成功 530 | "20141030000040011100240094221198 ",支付宝网站 ,即时到账交易 ,*尧 ,加油!祝早日康复! ,200,收入 ,交易成功 531 | "20141030000040011100610098615554 ",支付宝网站 ,即时到账交易 ,**越 ,东尧,我是水院的学长,等你康复回来 ,100,收入 ,交易成功 532 | "20141030000040011100330094133822 ",支付宝网站 ,即时到账交易 ,**洲 ,微薄之力,早日康复 ,5,收入 ,交易成功 533 | "20141030000040011100220000236150 ",支付宝网站 ,即时到账交易 ,**满 ,东尧加油 ,20,收入 ,交易成功 534 | "20141030000040011100030094157151 ",支付宝网站 ,即时到账交易 ,*雨? ,尽绵薄之力,祝东尧同学早日康复! ,20,收入 ,交易成功 535 | "20141030000040011100900092737820 ",支付宝网站 ,即时到账交易 ,**领 ,东尧加油! ,50,收入 ,交易成功 536 | "20141030000040011100930098575210 ",支付宝网站 ,即时到账交易 ,**丽 ,祝早日康复,14级经管院家长 ,200,收入 ,交易成功 537 | "20141030000040011100840094037859 ",支付宝网站 ,即时到账交易 ,*鑫 ,转账 ,30,收入 ,交易成功 538 | "20141030000040011100600098051449 ",支付宝网站 ,即时到账交易 ,*宇 ,加油,老乡! ,100,收入 ,交易成功 539 | "20141030000040011100370001464587 ",支付宝网站 ,即时到账交易 ,*进 ,祝早日康复! ,50,收入 ,交易成功 540 | "20141030000040011100120099980483 ",支付宝网站 ,即时到账交易 ,**楠 ,学弟加油! ,500,收入 ,交易成功 541 | "20141030000040011100400097987367 ",支付宝网站 ,即时到账交易 ,**训 ,转账 ,10,收入 ,交易成功 542 | "20141030000040011100110093909573 ",支付宝网站 ,即时到账交易 ,**雨 ,转账 ,10,收入 ,交易成功 543 | "20141030000040011100260097963501 ",支付宝网站 ,即时到账交易 ,**乐 ,祝早日康复! ,10,收入 ,交易成功 544 | "20141030000040011100560001360694 ",支付宝网站 ,即时到账交易 ,**飞 ,没什么能做的这是我余额宝里最后200加油,200,收入 ,交易成功 545 | "20141030000040011100560092465315 ",支付宝网站 ,即时到账交易 ,**云 ,转账 ,5,收入 ,交易成功 546 | "20141030000040011100590001304855 ",支付宝网站 ,即时到账交易 ,**伟 ,早日康复!兄弟加油!! ,100,收入 ,交易成功 547 | #—————————————————————————————————————————— 548 | #收入(成功的交易):541笔 549 | #导出时间:[2014-10-31 21:02:10] 用户:林东尧 550 | -------------------------------------------------------------------------------- /data/init/sample-data.csv: -------------------------------------------------------------------------------- 1 | #test data 2 | #-------- 3 | Jill,Doe 4 | Joe,Doe 5 | Justin,Doe 6 | Jane,Doe 7 | John,Doe 8 | #-------- 9 | -------------------------------------------------------------------------------- /data/init/sample-data2.csv: -------------------------------------------------------------------------------- 1 | #test data 2 | #-------- 3 | Jill2,Doe 4 | Joe2,Doe 5 | Jus2tin,Doe 6 | Jane2,Doe 7 | John2,Doe 8 | #-------- 9 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Aug 29 13:04:47 CDT 2016 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-bin.zip 7 | -------------------------------------------------------------------------------- /gs-batch-processing.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /mvnw: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # ---------------------------------------------------------------------------- 3 | # Licensed to the Apache Software Foundation (ASF) under one 4 | # or more contributor license agreements. See the NOTICE file 5 | # distributed with this work for additional information 6 | # regarding copyright ownership. The ASF licenses this file 7 | # to you under the Apache License, Version 2.0 (the 8 | # "License"); you may not use this file except in compliance 9 | # with the License. You may obtain a copy of the License at 10 | # 11 | # http://www.apache.org/licenses/LICENSE-2.0 12 | # 13 | # Unless required by applicable law or agreed to in writing, 14 | # software distributed under the License is distributed on an 15 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | # KIND, either express or implied. See the License for the 17 | # specific language governing permissions and limitations 18 | # under the License. 19 | # ---------------------------------------------------------------------------- 20 | 21 | # ---------------------------------------------------------------------------- 22 | # Maven2 Start Up Batch script 23 | # 24 | # Required ENV vars: 25 | # ------------------ 26 | # JAVA_HOME - location of a JDK home dir 27 | # 28 | # Optional ENV vars 29 | # ----------------- 30 | # M2_HOME - location of maven2's installed home dir 31 | # MAVEN_OPTS - parameters passed to the Java VM when running Maven 32 | # e.g. to debug Maven itself, use 33 | # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 34 | # MAVEN_SKIP_RC - flag to disable loading of mavenrc files 35 | # ---------------------------------------------------------------------------- 36 | 37 | if [ -z "$MAVEN_SKIP_RC" ] ; then 38 | 39 | if [ -f /etc/mavenrc ] ; then 40 | . /etc/mavenrc 41 | fi 42 | 43 | if [ -f "$HOME/.mavenrc" ] ; then 44 | . "$HOME/.mavenrc" 45 | fi 46 | 47 | fi 48 | 49 | # OS specific support. $var _must_ be set to either true or false. 50 | cygwin=false; 51 | darwin=false; 52 | mingw=false 53 | case "`uname`" in 54 | CYGWIN*) cygwin=true ;; 55 | MINGW*) mingw=true;; 56 | Darwin*) darwin=true 57 | # 58 | # Look for the Apple JDKs first to preserve the existing behaviour, and then look 59 | # for the new JDKs provided by Oracle. 60 | # 61 | if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then 62 | # 63 | # Apple JDKs 64 | # 65 | export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home 66 | fi 67 | 68 | if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then 69 | # 70 | # Apple JDKs 71 | # 72 | export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home 73 | fi 74 | 75 | if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then 76 | # 77 | # Oracle JDKs 78 | # 79 | export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home 80 | fi 81 | 82 | if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then 83 | # 84 | # Apple JDKs 85 | # 86 | export JAVA_HOME=`/usr/libexec/java_home` 87 | fi 88 | ;; 89 | esac 90 | 91 | if [ -z "$JAVA_HOME" ] ; then 92 | if [ -r /etc/gentoo-release ] ; then 93 | JAVA_HOME=`java-config --jre-home` 94 | fi 95 | fi 96 | 97 | if [ -z "$M2_HOME" ] ; then 98 | ## resolve links - $0 may be a link to maven's home 99 | PRG="$0" 100 | 101 | # need this for relative symlinks 102 | while [ -h "$PRG" ] ; do 103 | ls=`ls -ld "$PRG"` 104 | link=`expr "$ls" : '.*-> \(.*\)$'` 105 | if expr "$link" : '/.*' > /dev/null; then 106 | PRG="$link" 107 | else 108 | PRG="`dirname "$PRG"`/$link" 109 | fi 110 | done 111 | 112 | saveddir=`pwd` 113 | 114 | M2_HOME=`dirname "$PRG"`/.. 115 | 116 | # make it fully qualified 117 | M2_HOME=`cd "$M2_HOME" && pwd` 118 | 119 | cd "$saveddir" 120 | # echo Using m2 at $M2_HOME 121 | fi 122 | 123 | # For Cygwin, ensure paths are in UNIX format before anything is touched 124 | if $cygwin ; then 125 | [ -n "$M2_HOME" ] && 126 | M2_HOME=`cygpath --unix "$M2_HOME"` 127 | [ -n "$JAVA_HOME" ] && 128 | JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 129 | [ -n "$CLASSPATH" ] && 130 | CLASSPATH=`cygpath --path --unix "$CLASSPATH"` 131 | fi 132 | 133 | # For Migwn, ensure paths are in UNIX format before anything is touched 134 | if $mingw ; then 135 | [ -n "$M2_HOME" ] && 136 | M2_HOME="`(cd "$M2_HOME"; pwd)`" 137 | [ -n "$JAVA_HOME" ] && 138 | JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" 139 | # TODO classpath? 140 | fi 141 | 142 | if [ -z "$JAVA_HOME" ]; then 143 | javaExecutable="`which javac`" 144 | if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then 145 | # readlink(1) is not available as standard on Solaris 10. 146 | readLink=`which readlink` 147 | if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then 148 | if $darwin ; then 149 | javaHome="`dirname \"$javaExecutable\"`" 150 | javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" 151 | else 152 | javaExecutable="`readlink -f \"$javaExecutable\"`" 153 | fi 154 | javaHome="`dirname \"$javaExecutable\"`" 155 | javaHome=`expr "$javaHome" : '\(.*\)/bin'` 156 | JAVA_HOME="$javaHome" 157 | export JAVA_HOME 158 | fi 159 | fi 160 | fi 161 | 162 | if [ -z "$JAVACMD" ] ; then 163 | if [ -n "$JAVA_HOME" ] ; then 164 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 165 | # IBM's JDK on AIX uses strange locations for the executables 166 | JAVACMD="$JAVA_HOME/jre/sh/java" 167 | else 168 | JAVACMD="$JAVA_HOME/bin/java" 169 | fi 170 | else 171 | JAVACMD="`which java`" 172 | fi 173 | fi 174 | 175 | if [ ! -x "$JAVACMD" ] ; then 176 | echo "Error: JAVA_HOME is not defined correctly." >&2 177 | echo " We cannot execute $JAVACMD" >&2 178 | exit 1 179 | fi 180 | 181 | if [ -z "$JAVA_HOME" ] ; then 182 | echo "Warning: JAVA_HOME environment variable is not set." 183 | fi 184 | 185 | CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher 186 | 187 | # For Cygwin, switch paths to Windows format before running java 188 | if $cygwin; then 189 | [ -n "$M2_HOME" ] && 190 | M2_HOME=`cygpath --path --windows "$M2_HOME"` 191 | [ -n "$JAVA_HOME" ] && 192 | JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` 193 | [ -n "$CLASSPATH" ] && 194 | CLASSPATH=`cygpath --path --windows "$CLASSPATH"` 195 | fi 196 | 197 | # traverses directory structure from process work directory to filesystem root 198 | # first directory with .mvn subdirectory is considered project base directory 199 | find_maven_basedir() { 200 | local basedir=$(pwd) 201 | local wdir=$(pwd) 202 | while [ "$wdir" != '/' ] ; do 203 | if [ -d "$wdir"/.mvn ] ; then 204 | basedir=$wdir 205 | break 206 | fi 207 | wdir=$(cd "$wdir/.."; pwd) 208 | done 209 | echo "${basedir}" 210 | } 211 | 212 | # concatenates all lines of a file 213 | concat_lines() { 214 | if [ -f "$1" ]; then 215 | echo "$(tr -s '\n' ' ' < "$1")" 216 | fi 217 | } 218 | 219 | export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} 220 | MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" 221 | 222 | # Provide a "standardized" way to retrieve the CLI args that will 223 | # work with both Windows and non-Windows executions. 224 | MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" 225 | export MAVEN_CMD_LINE_ARGS 226 | 227 | WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain 228 | 229 | exec "$JAVACMD" \ 230 | $MAVEN_OPTS \ 231 | -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ 232 | "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ 233 | ${WRAPPER_LAUNCHER} "$@" 234 | -------------------------------------------------------------------------------- /mvnw.cmd: -------------------------------------------------------------------------------- 1 | @REM ---------------------------------------------------------------------------- 2 | @REM Licensed to the Apache Software Foundation (ASF) under one 3 | @REM or more contributor license agreements. See the NOTICE file 4 | @REM distributed with this work for additional information 5 | @REM regarding copyright ownership. The ASF licenses this file 6 | @REM to you under the Apache License, Version 2.0 (the 7 | @REM "License"); you may not use this file except in compliance 8 | @REM with the License. You may obtain a copy of the License at 9 | @REM 10 | @REM http://www.apache.org/licenses/LICENSE-2.0 11 | @REM 12 | @REM Unless required by applicable law or agreed to in writing, 13 | @REM software distributed under the License is distributed on an 14 | @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | @REM KIND, either express or implied. See the License for the 16 | @REM specific language governing permissions and limitations 17 | @REM under the License. 18 | @REM ---------------------------------------------------------------------------- 19 | 20 | @REM ---------------------------------------------------------------------------- 21 | @REM Maven2 Start Up Batch script 22 | @REM 23 | @REM Required ENV vars: 24 | @REM JAVA_HOME - location of a JDK home dir 25 | @REM 26 | @REM Optional ENV vars 27 | @REM M2_HOME - location of maven2's installed home dir 28 | @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands 29 | @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending 30 | @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven 31 | @REM e.g. to debug Maven itself, use 32 | @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 33 | @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files 34 | @REM ---------------------------------------------------------------------------- 35 | 36 | @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' 37 | @echo off 38 | @REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' 39 | @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% 40 | 41 | @REM set %HOME% to equivalent of $HOME 42 | if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") 43 | 44 | @REM Execute a user defined script before this one 45 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre 46 | @REM check for pre script, once with legacy .bat ending and once with .cmd ending 47 | if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" 48 | if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" 49 | :skipRcPre 50 | 51 | @setlocal 52 | 53 | set ERROR_CODE=0 54 | 55 | @REM To isolate internal variables from possible post scripts, we use another setlocal 56 | @setlocal 57 | 58 | @REM ==== START VALIDATION ==== 59 | if not "%JAVA_HOME%" == "" goto OkJHome 60 | 61 | echo. 62 | echo Error: JAVA_HOME not found in your environment. >&2 63 | echo Please set the JAVA_HOME variable in your environment to match the >&2 64 | echo location of your Java installation. >&2 65 | echo. 66 | goto error 67 | 68 | :OkJHome 69 | if exist "%JAVA_HOME%\bin\java.exe" goto init 70 | 71 | echo. 72 | echo Error: JAVA_HOME is set to an invalid directory. >&2 73 | echo JAVA_HOME = "%JAVA_HOME%" >&2 74 | echo Please set the JAVA_HOME variable in your environment to match the >&2 75 | echo location of your Java installation. >&2 76 | echo. 77 | goto error 78 | 79 | @REM ==== END VALIDATION ==== 80 | 81 | :init 82 | 83 | set MAVEN_CMD_LINE_ARGS=%* 84 | 85 | @REM Find the project base dir, i.e. the directory that contains the folder ".mvn". 86 | @REM Fallback to current working directory if not found. 87 | 88 | set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% 89 | IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir 90 | 91 | set EXEC_DIR=%CD% 92 | set WDIR=%EXEC_DIR% 93 | :findBaseDir 94 | IF EXIST "%WDIR%"\.mvn goto baseDirFound 95 | cd .. 96 | IF "%WDIR%"=="%CD%" goto baseDirNotFound 97 | set WDIR=%CD% 98 | goto findBaseDir 99 | 100 | :baseDirFound 101 | set MAVEN_PROJECTBASEDIR=%WDIR% 102 | cd "%EXEC_DIR%" 103 | goto endDetectBaseDir 104 | 105 | :baseDirNotFound 106 | set MAVEN_PROJECTBASEDIR=%EXEC_DIR% 107 | cd "%EXEC_DIR%" 108 | 109 | :endDetectBaseDir 110 | 111 | IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig 112 | 113 | @setlocal EnableExtensions EnableDelayedExpansion 114 | for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a 115 | @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% 116 | 117 | :endReadAdditionalConfig 118 | 119 | SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" 120 | 121 | set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar"" 122 | set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain 123 | 124 | %MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% 125 | if ERRORLEVEL 1 goto error 126 | goto end 127 | 128 | :error 129 | set ERROR_CODE=1 130 | 131 | :end 132 | @endlocal & set ERROR_CODE=%ERROR_CODE% 133 | 134 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost 135 | @REM check for post script, once with legacy .bat ending and once with .cmd ending 136 | if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" 137 | if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" 138 | :skipRcPost 139 | 140 | @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' 141 | if "%MAVEN_BATCH_PAUSE%" == "on" pause 142 | 143 | if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% 144 | 145 | exit /B %ERROR_CODE% -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework 7 | bill-spring-batch 8 | 0.1.0 9 | 10 | 11 | org.springframework.boot 12 | spring-boot-starter-parent 13 | 1.5.8.RELEASE 14 | 15 | 16 | 17 | 1.8 18 | 19 | 20 | 21 | 22 | org.springframework.boot 23 | spring-boot-starter 24 | 25 | 26 | org.springframework.boot 27 | spring-boot-starter-batch 28 | 29 | 30 | 31 | org.springframework.boot 32 | spring-boot-starter-jdbc 33 | 34 | 35 | mysql 36 | mysql-connector-java 37 | 5.1.2 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | org.springframework.boot 46 | spring-boot-maven-plugin 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/BatchApplication.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.scheduling.annotation.EnableScheduling; 6 | 7 | /** 8 | * @author: feiweiwei 9 | * @description: 10 | * @created Date: 15:09 17/11/27. 11 | * @modify by: 12 | */ 13 | @SpringBootApplication 14 | @EnableScheduling 15 | public class BatchApplication { 16 | 17 | public static void main(String[] args) throws Exception { 18 | SpringApplication.run(BatchApplication.class, args); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/BillScheduler.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch; 2 | 3 | import com.monkey01.batch.config.BillBatchConfig; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.scheduling.annotation.Scheduled; 8 | import org.springframework.stereotype.Component; 9 | 10 | import java.text.SimpleDateFormat; 11 | import java.util.Date; 12 | 13 | /** 14 | * @author: feiweiwei 15 | * @description: 16 | * @created Date: 15:31 17/11/30. 17 | * @modify by: 18 | */ 19 | @Component 20 | public class BillScheduler { 21 | @Autowired 22 | private BillBatchConfig billBatchConfig; 23 | 24 | private static final Logger log = LoggerFactory.getLogger(BillScheduler.class); 25 | 26 | private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); 27 | 28 | @Scheduled(initialDelay=10000, fixedRate = 10000) 29 | public void fixedBillBatch() { 30 | log.info("job begin {}", dateFormat.format(new Date())); 31 | billBatchConfig.run(); 32 | log.info("job end {}", dateFormat.format(new Date())); 33 | } 34 | 35 | @Scheduled(cron="0 15 10 ? * *") 36 | public void fixedTimePerDayBillBatch() { 37 | log.info("job begin {}", dateFormat.format(new Date())); 38 | billBatchConfig.run(); 39 | log.info("job end {}", dateFormat.format(new Date())); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/bean/AlipayTranDO.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.bean; 2 | 3 | /** 4 | * @author: feiweiwei 5 | * @description: 6 | * @created Date: 15:11 17/11/27. 7 | * @modify by: 8 | */ 9 | public class AlipayTranDO { 10 | private String tranId; 11 | private String channel; 12 | private String tranType; 13 | private String counterparty; 14 | private String goods; 15 | private String amount; 16 | private String isDebitCredit; 17 | private String state; 18 | 19 | public String getTranId() { 20 | return tranId; 21 | } 22 | 23 | public void setTranId(String tranId) { 24 | this.tranId = tranId; 25 | } 26 | 27 | public String getChannel() { 28 | return channel; 29 | } 30 | 31 | public void setChannel(String channel) { 32 | this.channel = channel; 33 | } 34 | 35 | public String getTranType() { 36 | return tranType; 37 | } 38 | 39 | public void setTranType(String tranType) { 40 | this.tranType = tranType; 41 | } 42 | 43 | public String getCounterparty() { 44 | return counterparty; 45 | } 46 | 47 | public void setCounterparty(String counterparty) { 48 | this.counterparty = counterparty; 49 | } 50 | 51 | public String getGoods() { 52 | return goods; 53 | } 54 | 55 | public void setGoods(String goods) { 56 | this.goods = goods; 57 | } 58 | 59 | public String getAmount() { 60 | return amount; 61 | } 62 | 63 | public void setAmount(String amount) { 64 | this.amount = amount; 65 | } 66 | 67 | public String getIsDebitCredit() { 68 | return isDebitCredit; 69 | } 70 | 71 | public void setIsDebitCredit(String isDebitCredit) { 72 | this.isDebitCredit = isDebitCredit; 73 | } 74 | 75 | public String getState() { 76 | return state; 77 | } 78 | 79 | public void setState(String state) { 80 | this.state = state; 81 | } 82 | 83 | @Override 84 | public String toString() { 85 | return "AlipayTranDO{" + 86 | "tranId='" + tranId + '\'' + 87 | ", channel='" + channel + '\'' + 88 | ", tranType='" + tranType + '\'' + 89 | ", counterparty='" + counterparty + '\'' + 90 | ", goods='" + goods + '\'' + 91 | ", amount='" + amount + '\'' + 92 | ", isDebitCredit='" + isDebitCredit + '\'' + 93 | ", state='" + state + '\'' + 94 | '}'; 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/bean/HopPayTranDO.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.bean; 2 | 3 | /** 4 | * @author: feiweiwei 5 | * @description: 6 | * @created Date: 15:19 17/11/27. 7 | * @modify by: 8 | */ 9 | public class HopPayTranDO { 10 | private String tranId; 11 | private String channel; 12 | private String tranType; 13 | private String counterparty; 14 | private String goods; 15 | private String amount; 16 | private String isDebitCredit; 17 | private String state; 18 | private String tranDate; 19 | private String merId; 20 | 21 | public String getTranId() { 22 | return tranId; 23 | } 24 | 25 | public void setTranId(String tranId) { 26 | this.tranId = tranId; 27 | } 28 | 29 | public String getChannel() { 30 | return channel; 31 | } 32 | 33 | public void setChannel(String channel) { 34 | this.channel = channel; 35 | } 36 | 37 | public String getTranType() { 38 | return tranType; 39 | } 40 | 41 | public void setTranType(String tranType) { 42 | this.tranType = tranType; 43 | } 44 | 45 | public String getCounterparty() { 46 | return counterparty; 47 | } 48 | 49 | public void setCounterparty(String counterparty) { 50 | this.counterparty = counterparty; 51 | } 52 | 53 | public String getGoods() { 54 | return goods; 55 | } 56 | 57 | public void setGoods(String goods) { 58 | this.goods = goods; 59 | } 60 | 61 | public String getAmount() { 62 | return amount; 63 | } 64 | 65 | public void setAmount(String amount) { 66 | this.amount = amount; 67 | } 68 | 69 | public String getIsDebitCredit() { 70 | return isDebitCredit; 71 | } 72 | 73 | public void setIsDebitCredit(String isDebitCredit) { 74 | this.isDebitCredit = isDebitCredit; 75 | } 76 | 77 | public String getState() { 78 | return state; 79 | } 80 | 81 | public void setState(String state) { 82 | this.state = state; 83 | } 84 | 85 | public String getTranDate() { 86 | return tranDate; 87 | } 88 | 89 | public void setTranDate(String tranDate) { 90 | this.tranDate = tranDate; 91 | } 92 | 93 | public String getMerId() { 94 | return merId; 95 | } 96 | 97 | public void setMerId(String merId) { 98 | this.merId = merId; 99 | } 100 | 101 | @Override 102 | public String toString() { 103 | return "HopPayTranDO{" + 104 | "tranId='" + tranId + '\'' + 105 | ", channel='" + channel + '\'' + 106 | ", tranType='" + tranType + '\'' + 107 | ", counterparty='" + counterparty + '\'' + 108 | ", goods='" + goods + '\'' + 109 | ", amount='" + amount + '\'' + 110 | ", isDebitCredit='" + isDebitCredit + '\'' + 111 | ", state='" + state + '\'' + 112 | ", tranDate='" + tranDate + '\'' + 113 | ", merId='" + merId + '\'' + 114 | '}'; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/config/BillBatchConfig.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.config; 2 | 3 | import com.monkey01.batch.bean.AlipayTranDO; 4 | import com.monkey01.batch.bean.HopPayTranDO; 5 | import com.monkey01.batch.fault.UnresolveAlipayTranException; 6 | import com.monkey01.batch.listener.AlipaySkipListener; 7 | import com.monkey01.batch.listener.JobCompletionNotificationListener; 8 | import com.monkey01.batch.processor.AlipayItemProcessor; 9 | import com.monkey01.batch.processor.AlipayValidateProcessor; 10 | import com.monkey01.batch.reader.AlipayFileItemReader; 11 | import com.monkey01.batch.writer.AlipayDBItemWriter; 12 | import com.monkey01.batch.writer.AlipayFileItemWriter; 13 | import org.springframework.batch.core.*; 14 | import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; 15 | import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; 16 | import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; 17 | import org.springframework.batch.core.launch.JobLauncher; 18 | import org.springframework.batch.core.launch.support.RunIdIncrementer; 19 | import org.springframework.batch.item.file.FlatFileParseException; 20 | import org.springframework.batch.item.support.CompositeItemProcessor; 21 | import org.springframework.beans.factory.annotation.Autowired; 22 | import org.springframework.context.annotation.Bean; 23 | import org.springframework.context.annotation.Configuration; 24 | import org.springframework.core.task.TaskExecutor; 25 | import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 26 | import org.springframework.stereotype.Service; 27 | 28 | import java.util.ArrayList; 29 | import java.util.Date; 30 | import java.util.List; 31 | 32 | /** 33 | * @author: feiweiwei 34 | * @description: 35 | * @created Date: 13:36 17/11/28. 36 | * @modify by: 37 | */ 38 | 39 | @Configuration 40 | @EnableBatchProcessing 41 | public class BillBatchConfig { 42 | @Autowired 43 | public JobLauncher jobLauncher; 44 | 45 | @Autowired 46 | public JobBuilderFactory jobBuilderFactory; 47 | 48 | @Autowired 49 | public StepBuilderFactory stepBuilderFactory; 50 | 51 | @Autowired 52 | private AlipayFileItemReader alipayFileItemReader; 53 | 54 | @Autowired 55 | private AlipayItemProcessor alipayItemProcessor; 56 | 57 | @Autowired 58 | private AlipayFileItemWriter alipayFileItemWriter; 59 | 60 | @Autowired 61 | private AlipayDBItemWriter alipayDBItemWriter; 62 | 63 | @Autowired 64 | private AlipaySkipListener listener; 65 | 66 | public void run() { 67 | try { 68 | String dateParam = new Date().toString(); 69 | JobParameters param = new JobParametersBuilder().addString("date", dateParam).toJobParameters(); 70 | System.out.println(dateParam); 71 | JobExecution execution = jobLauncher.run(importAliJob(), param); //执行job 72 | System.out.println("Exit Status : " + execution.getStatus()); 73 | 74 | } catch (Exception e) { 75 | e.printStackTrace(); 76 | } 77 | } 78 | 79 | @Bean 80 | public Job importAliJob() { 81 | return jobBuilderFactory.get("importAliJob") 82 | .incrementer(new RunIdIncrementer()) 83 | .flow(step1()) 84 | // .next(step2()) 85 | .end() 86 | .build(); 87 | } 88 | 89 | @Bean 90 | public Step step1() { 91 | return stepBuilderFactory.get("step1") 92 | . chunk(10) 93 | .reader(alipayFileItemReader.getMultiAliReader()) 94 | .processor(alipayItemProcessor) 95 | .writer(alipayFileItemWriter.getAlipayItemWriter()) 96 | .build(); 97 | } 98 | 99 | 100 | @Bean 101 | public Step step2() { 102 | return stepBuilderFactory.get("step2") 103 | . chunk(10) 104 | .reader(alipayFileItemReader.getMultiAliReader()) 105 | .writer(alipayDBItemWriter) 106 | .faultTolerant() 107 | .skipLimit(20) 108 | .skip(Exception.class) 109 | .listener(listener) 110 | .retryLimit(3) 111 | .retry(RuntimeException.class) 112 | .build(); 113 | } 114 | 115 | @Bean 116 | public Step step3() { 117 | CompositeItemProcessor compositeItemProcessor = new CompositeItemProcessor(); 118 | List compositeProcessors = new ArrayList(); 119 | compositeProcessors.add(new AlipayValidateProcessor()); 120 | compositeProcessors.add(new AlipayItemProcessor()); 121 | compositeItemProcessor.setDelegates(compositeProcessors); 122 | return stepBuilderFactory.get("step3") 123 | . chunk(10) 124 | .reader(alipayFileItemReader.getMultiAliReader()) 125 | .processor(compositeItemProcessor) 126 | .writer(alipayFileItemWriter.getAlipayItemWriter()) 127 | .build(); 128 | } 129 | 130 | @Bean 131 | public TaskExecutor taskExecutor() { 132 | ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); 133 | taskExecutor.setMaxPoolSize(4); 134 | taskExecutor.afterPropertiesSet(); 135 | return taskExecutor; 136 | } 137 | 138 | @Bean 139 | public Step step4() { 140 | return stepBuilderFactory.get("step3") 141 | . chunk(10) 142 | .reader(alipayFileItemReader.getMultiAliReader()) 143 | .processor(alipayItemProcessor) 144 | .writer(alipayFileItemWriter.getAlipayItemWriter()) 145 | .taskExecutor(taskExecutor()) 146 | .throttleLimit(4) 147 | .build(); 148 | } 149 | 150 | } 151 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/config/MySQLDataSourceConfig.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.config; 2 | 3 | import org.springframework.beans.factory.annotation.Qualifier; 4 | import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; 5 | import org.springframework.boot.context.properties.ConfigurationProperties; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.jdbc.core.JdbcTemplate; 9 | 10 | import javax.sql.DataSource; 11 | 12 | /** 13 | * @author: feiweiwei 14 | * @description: 15 | * @created Date: 14:24 17/11/29. 16 | * @modify by: 17 | */ 18 | @Configuration 19 | public class MySQLDataSourceConfig { 20 | @Bean(name = "mysqlDataSource") 21 | @Qualifier("mysqlDataSource") 22 | @ConfigurationProperties(prefix="spring.datasource") 23 | public DataSource mysqlDataSource() { 24 | return DataSourceBuilder.create().build(); 25 | } 26 | 27 | @Bean(name = "mysqldbcTemplate") 28 | public JdbcTemplate mysqlJdbcTemplate( 29 | @Qualifier("mysqlDataSource") DataSource dataSource) { 30 | return new JdbcTemplate(dataSource); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/fault/UnresolveAlipayTranException.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.fault; 2 | 3 | import org.springframework.batch.core.step.skip.SkipLimitExceededException; 4 | import org.springframework.batch.core.step.skip.SkipPolicy; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.jdbc.core.JdbcTemplate; 7 | 8 | /** 9 | * @author: feiweiwei 10 | * @description: 11 | * @created Date: 16:39 17/11/29. 12 | * @modify by: 13 | */ 14 | public class UnresolveAlipayTranException extends Exception { 15 | private static final String INSERT_ALYPAY_ERROR = 16 | "insert into alipay_tran_error(error) values(?)"; 17 | 18 | @Autowired 19 | private JdbcTemplate jdbcTemplate; 20 | 21 | public UnresolveAlipayTranException(){ 22 | super(); 23 | } 24 | 25 | public UnresolveAlipayTranException(String message, Throwable cause){ 26 | super(message, cause); 27 | jdbcTemplate.update(INSERT_ALYPAY_ERROR, message); 28 | } 29 | 30 | public UnresolveAlipayTranException(String message){ 31 | super(message); 32 | jdbcTemplate.update(INSERT_ALYPAY_ERROR, message); 33 | } 34 | 35 | public UnresolveAlipayTranException(Throwable cause){ 36 | super(cause); 37 | jdbcTemplate.update(INSERT_ALYPAY_ERROR, cause.getMessage()); 38 | 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/listener/AlipaySkipListener.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.listener; 2 | 3 | import com.monkey01.batch.bean.AlipayTranDO; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.batch.core.SkipListener; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * @author: feiweiwei 11 | * @description: 12 | * @created Date: 17:50 17/11/29. 13 | * @modify by: 14 | */ 15 | @Service 16 | public class AlipaySkipListener implements SkipListener { 17 | private static final Logger log = LoggerFactory.getLogger(AlipaySkipListener.class); 18 | 19 | @Override 20 | public void onSkipInProcess(AlipayTranDO alipayTranDO, Throwable throwable) { 21 | log.info("AlipayTran was skipped in process: "+alipayTranDO); 22 | } 23 | @Override 24 | public void onSkipInRead(Throwable arg0) { 25 | } 26 | @Override 27 | public void onSkipInWrite(AlipayTranDO alipayTranDO, Throwable throwable) { 28 | log.info("AlipayTran was skipped in process: "+alipayTranDO); 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/listener/JobCompletionNotificationListener.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.listener; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.batch.core.BatchStatus; 6 | import org.springframework.batch.core.JobExecution; 7 | import org.springframework.batch.core.listener.JobExecutionListenerSupport; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.jdbc.core.JdbcTemplate; 10 | import org.springframework.jdbc.core.RowMapper; 11 | import org.springframework.stereotype.Component; 12 | 13 | import java.sql.ResultSet; 14 | import java.sql.SQLException; 15 | import java.util.List; 16 | 17 | @Component 18 | public class JobCompletionNotificationListener extends JobExecutionListenerSupport { 19 | 20 | private static final Logger log = LoggerFactory.getLogger(JobCompletionNotificationListener.class); 21 | 22 | private final JdbcTemplate jdbcTemplate; 23 | 24 | @Autowired 25 | public JobCompletionNotificationListener(JdbcTemplate jdbcTemplate) { 26 | this.jdbcTemplate = jdbcTemplate; 27 | } 28 | 29 | @Override 30 | public void afterJob(JobExecution jobExecution) { 31 | if(jobExecution.getStatus() == BatchStatus.COMPLETED) { 32 | log.info("!!! JOB FINISHED! Time to verify the results"); 33 | 34 | // List results = jdbcTemplate.query("SELECT first_name, last_name FROM people", new RowMapper() { 35 | // @Override 36 | // public Person mapRow(ResultSet rs, int row) throws SQLException { 37 | // return new Person(rs.getString(1), rs.getString(2)); 38 | // } 39 | // }); 40 | // 41 | // for (Person person : results) { 42 | // log.info("Found <" + person + "> in the database."); 43 | // } 44 | 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/processor/AlipayItemProcessor.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.processor; 2 | 3 | 4 | import com.monkey01.batch.bean.AlipayTranDO; 5 | import com.monkey01.batch.bean.HopPayTranDO; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | import org.springframework.batch.item.ItemProcessor; 9 | import org.springframework.stereotype.Service; 10 | 11 | import java.text.SimpleDateFormat; 12 | import java.util.Date; 13 | 14 | /** 15 | * @author: feiweiwei 16 | * @description: 17 | * @created Date: 15:19 17/11/27. 18 | * @modify by: 19 | */ 20 | @Service 21 | public class AlipayItemProcessor implements ItemProcessor { 22 | 23 | private static final Logger log = LoggerFactory.getLogger(AlipayItemProcessor.class); 24 | 25 | @Override 26 | public HopPayTranDO process(AlipayTranDO alipayTranDO) throws Exception { 27 | HopPayTranDO hopPayTranDO = new HopPayTranDO(); 28 | hopPayTranDO.setTranId(alipayTranDO.getTranId()); 29 | hopPayTranDO.setChannel(alipayTranDO.getChannel()); 30 | hopPayTranDO.setTranType(alipayTranDO.getTranType()); 31 | hopPayTranDO.setCounterparty(alipayTranDO.getCounterparty()); 32 | hopPayTranDO.setGoods(alipayTranDO.getGoods()); 33 | hopPayTranDO.setAmount(alipayTranDO.getAmount()); 34 | hopPayTranDO.setIsDebitCredit(alipayTranDO.getIsDebitCredit()); 35 | hopPayTranDO.setState(alipayTranDO.getState()); 36 | 37 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 38 | String dateNowStr = sdf.format(new Date()); 39 | hopPayTranDO.setTranDate(dateNowStr); 40 | hopPayTranDO.setMerId("00000001"); 41 | log.info(alipayTranDO.toString()); 42 | return hopPayTranDO; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/processor/AlipayValidateProcessor.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.processor; 2 | 3 | import com.monkey01.batch.bean.AlipayTranDO; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.batch.item.ItemProcessor; 7 | 8 | /** 9 | * @author: feiweiwei 10 | * @description: 11 | * @created Date: 14:05 17/11/30. 12 | * @modify by: 13 | */ 14 | public class AlipayValidateProcessor implements ItemProcessor { 15 | private static final Logger log = LoggerFactory.getLogger(AlipayValidateProcessor.class); 16 | 17 | @Override 18 | public AlipayTranDO process(AlipayTranDO alipayTranDO) throws Exception { 19 | if(Double.parseDouble(alipayTranDO.getAmount()) < 0){ 20 | log.info("validate error: " + alipayTranDO.toString()); 21 | throw new Exception(); 22 | }else{ 23 | return alipayTranDO; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/reader/AlipayFileItemReader.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.reader; 2 | 3 | import com.monkey01.batch.bean.AlipayTranDO; 4 | import org.springframework.batch.item.ItemReader; 5 | import org.springframework.batch.item.NonTransientResourceException; 6 | import org.springframework.batch.item.ParseException; 7 | import org.springframework.batch.item.UnexpectedInputException; 8 | import org.springframework.batch.item.file.FlatFileItemReader; 9 | import org.springframework.batch.item.file.MultiResourceItemReader; 10 | import org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper; 11 | import org.springframework.batch.item.file.mapping.DefaultLineMapper; 12 | import org.springframework.batch.item.file.transform.DelimitedLineTokenizer; 13 | import org.springframework.core.io.FileSystemResource; 14 | import org.springframework.core.io.Resource; 15 | import org.springframework.stereotype.Service; 16 | 17 | /** 18 | * @author: feiweiwei 19 | * @description: 20 | * @created Date: 14:23 17/11/28. 21 | * @modify by: 22 | */ 23 | @Service 24 | public class AlipayFileItemReader { 25 | 26 | private FlatFileItemReader reader; 27 | 28 | public FlatFileItemReader getAlipayFileItemReader() { 29 | reader = new FlatFileItemReader(); 30 | reader.setLineMapper(new DefaultLineMapper() {{ 31 | setLineTokenizer(new DelimitedLineTokenizer() {{ 32 | setNames(new String[] { "tranId", "channel", "tranType", "counterparty", "goods", "amount", "isDebitCredit", "state" }); 33 | }}); 34 | setFieldSetMapper(new BeanWrapperFieldSetMapper() {{ 35 | setTargetType(AlipayTranDO.class); 36 | }}); 37 | }}); 38 | reader.setLinesToSkip(1); 39 | return reader; 40 | } 41 | 42 | public MultiResourceItemReader getMultiAliReader() { 43 | //TODO: 获取所有当天待加载的支付宝账单, 44 | // 这里只是简单的放了两个csv账单文件, 45 | // 实际处理过程中,肯定是从数据库或者接口获取需要加载的账单文件路径 46 | MultiResourceItemReader reader = new MultiResourceItemReader(); 47 | Resource[] files = new Resource[]{new FileSystemResource("data/alipay/208012345_20141030.csv"), 48 | new FileSystemResource("data/alipay/208054321_20141030.csv")}; 49 | reader.setResources(files); 50 | reader.setDelegate(this.getAlipayFileItemReader()); 51 | 52 | return reader; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/writer/AlipayDBItemWriter.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.writer; 2 | 3 | import com.monkey01.batch.bean.AlipayTranDO; 4 | import org.springframework.batch.item.ItemWriter; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.jdbc.core.JdbcTemplate; 7 | import org.springframework.stereotype.Service; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author: feiweiwei 13 | * @description: 14 | * @created Date: 14:28 17/11/29. 15 | * @modify by: 16 | */ 17 | @Service 18 | public class AlipayDBItemWriter implements ItemWriter { 19 | private static final String INSERT_ALYPAY_TRAN = 20 | "insert into alipay_tran_today(tran_id, channel, tran_type, counter_party, goods, amount, is_debit_credit, state) values(?,?,?,?,?,?,?,?)"; 21 | 22 | @Autowired 23 | private JdbcTemplate jdbcTemplate; 24 | 25 | @Override 26 | public void write(List list) throws Exception { 27 | for(AlipayTranDO alipayTran : list){ 28 | jdbcTemplate.update(INSERT_ALYPAY_TRAN, 29 | alipayTran.getTranId(), 30 | alipayTran.getChannel(), 31 | alipayTran.getTranType(), 32 | alipayTran.getCounterparty(), 33 | alipayTran.getGoods(), 34 | alipayTran.getAmount(), 35 | alipayTran.getIsDebitCredit(), 36 | alipayTran.getState()); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/monkey01/batch/writer/AlipayFileItemWriter.java: -------------------------------------------------------------------------------- 1 | package com.monkey01.batch.writer; 2 | 3 | import com.monkey01.batch.bean.HopPayTranDO; 4 | import org.springframework.batch.item.ItemWriter; 5 | import org.springframework.batch.item.file.FlatFileItemWriter; 6 | import org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor; 7 | import org.springframework.batch.item.file.transform.DelimitedLineAggregator; 8 | import org.springframework.core.io.FileSystemResource; 9 | import org.springframework.stereotype.Service; 10 | 11 | /** 12 | * @author: feiweiwei 13 | * @description: 14 | * @created Date: 14:46 17/11/28. 15 | * @modify by: 16 | */ 17 | @Service 18 | public class AlipayFileItemWriter { 19 | 20 | public FlatFileItemWriter getAlipayItemWriter() { 21 | FlatFileItemWriter txtItemWriter = new FlatFileItemWriter(); 22 | txtItemWriter.setAppendAllowed(true); 23 | txtItemWriter.setShouldDeleteIfExists(true); 24 | txtItemWriter.setEncoding("UTF-8"); 25 | txtItemWriter.setResource(new FileSystemResource("data/sample-data.txt")); 26 | txtItemWriter.setLineAggregator(new DelimitedLineAggregator() {{ 27 | setDelimiter(","); 28 | setFieldExtractor(new BeanWrapperFieldExtractor() {{ 29 | setNames(new String[]{"tranId", "channel", "tranType", "counterparty", "goods", "amount", "isDebitCredit", "state", "tranDate", "merId" }); 30 | }}); 31 | }}); 32 | return txtItemWriter; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:mysql://localhost:3306/test 2 | spring.datasource.username=root 3 | spring.datasource.password=198509 4 | spring.datasource.driver-class-name=com.mysql.jdbc.Driver -------------------------------------------------------------------------------- /target/classes/application.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:mysql://localhost:3306/test 2 | spring.datasource.username=root 3 | spring.datasource.password=198509 4 | spring.datasource.driver-class-name=com.mysql.jdbc.Driver -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/BatchApplication.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/BatchApplication.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/BillScheduler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/BillScheduler.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/bean/AlipayTranDO.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/bean/AlipayTranDO.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/bean/HopPayTranDO.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/bean/HopPayTranDO.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/config/BillBatchConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/config/BillBatchConfig.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/config/MySQLDataSourceConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/config/MySQLDataSourceConfig.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/fault/UnresolveAlipayTranException.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/fault/UnresolveAlipayTranException.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/listener/AlipaySkipListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/listener/AlipaySkipListener.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/listener/JobCompletionNotificationListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/listener/JobCompletionNotificationListener.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/processor/AlipayItemProcessor.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/processor/AlipayItemProcessor.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/processor/AlipayValidateProcessor.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/processor/AlipayValidateProcessor.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/reader/AlipayFileItemReader$1$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/reader/AlipayFileItemReader$1$1.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/reader/AlipayFileItemReader$1$2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/reader/AlipayFileItemReader$1$2.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/reader/AlipayFileItemReader$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/reader/AlipayFileItemReader$1.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/reader/AlipayFileItemReader.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/reader/AlipayFileItemReader.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/writer/AlipayDBItemWriter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/writer/AlipayDBItemWriter.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/writer/AlipayFileItemWriter$1$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/writer/AlipayFileItemWriter$1$1.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/writer/AlipayFileItemWriter$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/writer/AlipayFileItemWriter$1.class -------------------------------------------------------------------------------- /target/classes/com/monkey01/batch/writer/AlipayFileItemWriter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feiweiwei/BillSpringBatch/c612c3f3be8ed0cf07519ce395d4c6f007d7ce73/target/classes/com/monkey01/batch/writer/AlipayFileItemWriter.class --------------------------------------------------------------------------------