`

一个service管理多个service

 
阅读更多

global.dao.dbcp.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 全局数据访问模型 -->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
	http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<!-- =================== G4Studio平台数据源配置 ================== -->
	<!-- Apache Commons DBCP 数据源   
	<bean id="dataSourceG4" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${pmpf.jdbc.driverClassName}" />
		<property name="url" value="${pmpf.jdbc.url}" />
		<property name="username" value="${pmpf.jdbc.username}" />
		<property name="password" value="${pmpf.jdbc.password}" />
		<property name="initialSize" value="10" />
		<property name="maxActive" value="30" />
		<property name="maxIdle" value="15" />
		<property name="minIdle" value="5" />
		<property name="removeAbandoned" value="true" />
		<property name="removeAbandonedTimeout" value="60" />
		<property name="maxWait" value="10000" />
		<property name="logAbandoned" value="true" />
	</bean>
	--> 
	<!-- Alibaba Druid 数据源 -->
	<bean id="dataSourceG4" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
		<property name="url" value="${pmpf.jdbc.url}" />
		<property name="username" value="${pmpf.jdbc.username}" />
		<property name="password" value="${pmpf.jdbc.password}" />
		<!-- 配置初始化大小、最小、最大 -->
		<property name="initialSize" value="${pmpf.jdbc.initialSize}" />
		<property name="maxActive" value="${pmpf.jdbc.maxActive}" />
		<property name="minIdle" value="${pmpf.jdbc.minIdle}" />
		<!-- 配置获取连接等待超时的时间 -->
		<property name="maxWait" value="${pmpf.jdbc.maxWait}" />
		<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
		<property name="minEvictableIdleTimeMillis" value="${pmpf.jdbc.minEvictableIdleTimeMillis}" />
		<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
		<property name="timeBetweenEvictionRunsMillis" value="${pmpf.jdbc.timeBetweenEvictionRunsMillis}" />

		<property name="validationQuery" value="${pmpf.jdbc.validationQuery}" />
		<property name="testWhileIdle" value="${pmpf.jdbc.testWhileIdle}" />
		<property name="testOnBorrow" value="${pmpf.jdbc.testOnBorrow}" />
		<property name="testOnReturn" value="${pmpf.jdbc.testOnReturn}" />
		<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
		<property name="poolPreparedStatements" value="${pmpf.jdbc.poolPreparedStatements}" />
		<property name="maxPoolPreparedStatementPerConnectionSize" value="${pmpf.jdbc.maxPoolPreparedStatementPerConnectionSize}" />

		<!-- 配置监控统计拦截的filters -->
		<property name="filters" value="${pmpf.jdbc.filters}" /> 
		<!-- 关闭长时间不使用的连接超时时间,单位秒 -->
		<property name="removeAbandoned" value="${pmpf.jdbc.removeAbandoned}" />
		<property name="removeAbandonedTimeout" value="${pmpf.jdbc.removeAbandonedTimeout}" />
		<property name="logAbandoned" value="${pmpf.jdbc.logAbandoned}" />
	</bean>
	
	<!-- JNDI 数据源 
	<bean id="dataSourceG4" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName">
			<value>${global.datasource}</value>
		</property>
	</bean>
	-->
	
	 <!-- 配置平台层面的qlmapClientFactory -->
	<bean id="sqlMapClientG4" class="org.g4studio.core.orm.xibatis.support.SqlMapClientFactoryBean">
		<property name="configLocations">
			<list>
				<value>config/g4/g4.sqlmap.xml</value>
				<value>classpath*:config/app/*.sqlmap.xml</value>
			</list>
		</property>
		<property name="dataSource" ref="dataSourceG4" />
	</bean>
	<!-- 配置平台层面的G4Reader -->
	<bean id="g4Reader" class="org.g4studio.core.model.dao.impl.ReaderImpl">
		<property name="sqlMapClient" ref="sqlMapClientG4" />
	</bean>
	<!-- 配置平台层面的G4Dao -->
	<bean id="g4Dao" class="org.g4studio.core.model.dao.impl.DaoImpl">
		<property name="sqlMapClient" ref="sqlMapClientG4" />
	</bean>

	<!-- JDBC事务管理器配置 -->
	<bean id="transactionManagerG4" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref bean="dataSourceG4" />
		</property>
	</bean>
	<!-- 配置事务代理的基类 -->
	<bean id="baseTransactionProxyG4" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
		<property name="transactionManager">
			<ref bean="transactionManagerG4" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="do*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="del*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="drop*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="edit*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="modify*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="call*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="get*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="query*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="batch*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="*">PROPAGATION_SUPPORTS,-Exception</prop>
			</props>
		</property>
	</bean>

</beans>

pmpf.service.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

	
	<!-- 退款处理-->
	<bean id="refundManageService" parent="baseTransactionProxyG4">
		<property name="target">
			<bean class="com.saicfc.pmpf.internal.manage.service.impl.RefundManageServiceImpl">
				<property name="g4Dao" ref="g4Dao" />
				<property name="refundInfoExpServiceMap">
					<map>
						<entry key="ICBC"  value-ref="icbcRefundManageService"/>
						<entry key="CEB" value-ref="cebRefundManageService"/>
						<entry key="BOC" value-ref="bocRefundManageService"/>
						<entry key="CCB" value-ref="ccbRefundManageService"/>
						<entry key="BOCOM" value-ref="bocomRefundManageService"/>
						<entry key="CIB" value-ref="cibRefundManageService"/>
						<entry key="CMB" value-ref="cmbRefundManageService"/>
						<entry key="CITIC" value-ref="citicRefundManageService"/>
					</map>
				</property>
			</bean>
		</property>
	</bean>
	
	<!-- 工商银行退款导出管理-->
	<bean id="icbcRefundManageService" parent="baseTransactionProxyG4">
		<property name="target">
			<bean class="com.saicfc.pmpf.internal.manage.renfund.impl.ICBCRefundInfoExportServiceImpl">
				<property name="g4Dao" ref="g4Dao" />
			</bean>
		</property>
	</bean>
	
	<!-- 光大银行退款导出管理-->
	<bean id="cebRefundManageService" parent="baseTransactionProxyG4">
		<property name="target">
			<bean class="com.saicfc.pmpf.internal.manage.renfund.impl.CEBRefundInfoExportServiceImpl">
				<property name="g4Dao" ref="g4Dao" />
			</bean>
		</property>
	</bean>
	
	<!-- 中国银行退款导出管理-->
	<bean id="bocRefundManageService" parent="baseTransactionProxyG4">
		<property name="target">
			<bean class="com.saicfc.pmpf.internal.manage.renfund.impl.BOCRefundInfoExportServiceImpl">
				<property name="g4Dao" ref="g4Dao" />
			</bean>
		</property>
	</bean>
	
	<!-- 建设银行退款导出管理-->
	<bean id="ccbRefundManageService" parent="baseTransactionProxyG4">
		<property name="target">
			<bean class="com.saicfc.pmpf.internal.manage.renfund.impl.CCBRefundInfoExportServiceImpl">
				<property name="g4Dao" ref="g4Dao" />
			</bean>
		</property>
	</bean>
	
	<!-- 交通银行退款导出管理-->
	<bean id="bocomRefundManageService" parent="baseTransactionProxyG4">
		<property name="target">
			<bean class="com.saicfc.pmpf.internal.manage.renfund.impl.BOCOMRefundInfoExportServiceImpl">
				<property name="g4Dao" ref="g4Dao" />
			</bean>
		</property>
	</bean>
	
	<!-- 兴业银行退款导出管理-->
	<bean id="cibRefundManageService" parent="baseTransactionProxyG4">
		<property name="target">
			<bean class="com.saicfc.pmpf.internal.manage.renfund.impl.CIBRefundInfoExportServiceImpl">
				<property name="g4Dao" ref="g4Dao" />
			</bean>
		</property>
	</bean>
	
	<!-- 招商银行退款导出管理-->
	<bean id="cmbRefundManageService" parent="baseTransactionProxyG4">
		<property name="target">
			<bean class="com.saicfc.pmpf.internal.manage.renfund.impl.CMBRefundInfoExportServiceImpl">
				<property name="g4Dao" ref="g4Dao" />
			</bean>
		</property>
	</bean>
	
	<!-- 中信银行退款导出管理-->
	<bean id="citicRefundManageService" parent="baseTransactionProxyG4">
		<property name="target">
			<bean class="com.saicfc.pmpf.internal.manage.renfund.impl.CITICRefundInfoExportServiceImpl">
				<property name="g4Dao" ref="g4Dao" />
			</bean>
		</property>
	</bean>
	
</beans>


RefundManageService.java

/**
 * 
 */
package com.saicfc.pmpf.internal.manage.service;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;

import org.g4studio.core.metatype.Dto;

/**
 * 退款处理
 * @author lizhiyong
 * @version $Id: RefundManageService.java, v 0.1
		2014年7月7日 下午1:33:34 Exp $
 */
public interface RefundManageService {

    
    /**
     * 配置导出的详细信息
     * @param channelCode
     *                 渠道代码
     * @param paymentMap
     *                 订单信息
     * @param map
     *           退款信息
     * @return
     * @throws Exception 
     */
    @SuppressWarnings("rawtypes")
    public LinkedHashMap getExportDetailInfo(String channelCode, HashMap paymentMap, HashMap refundMap) throws Exception;

    /**
     * 设置导出文件头部信息
     * @param channelCode  渠道代码
     * @return
     * @throws Exception 
     */
    @SuppressWarnings("rawtypes")
    public LinkedHashMap getExportTile(String channelCode) throws Exception;
    
    /**
     * 上传网银格式文件的最大数目
     * @param channelCode
     * @return
     */
    public int maxCount(String channelCode);
    
    
}

RefundManageServiceImpl.java

/**
 * 
 */
package com.saicfc.pmpf.internal.manage.service.impl;

import java.sql.SQLException;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.g4studio.core.metatype.Dto;
import org.g4studio.core.metatype.impl.BaseDto;
import org.g4studio.core.model.service.impl.BizServiceImpl;

import com.saicfc.pmpf.internal.manage.renfund.RefundInfoExportService;
import com.saicfc.pmpf.internal.manage.service.RefundManageService;
import com.saicfc.pmpf.internal.manage.utils.CommonUtils;
import com.saicfc.pmpf.internal.manage.utils.Contants;
import com.saicfc.pmpf.internal.manage.utils.DateUtil;

/**
 * 退款处理
 * @author lizhiyong
 * @version $Id: RefundManageServiceImpl.java, v 0.1
		2014年7月7日 下午1:33:49 Exp $
 */
public class RefundManageServiceImpl extends BizServiceImpl implements RefundManageService {

    private Log                                  logger = LogFactory.getLog(getClass());

    private Map<String, RefundInfoExportService> refundInfoExpServiceMap;

    public void setRefundInfoExpServiceMap(Map<String, RefundInfoExportService> refundInfoExpServiceMap) {
        this.refundInfoExpServiceMap = refundInfoExpServiceMap;
    }

    @SuppressWarnings("rawtypes")
    @Override
    public LinkedHashMap getExportDetailInfo(String channelCode, HashMap paymentMap, HashMap refundMap)
                                                                                                 throws Exception {
        try {
            return this.refundInfoExpServiceMap.get(channelCode).getExportDetailInfo(paymentMap,
                refundMap);
        } catch (Exception e) {
            throw e;
        }
    }

    @SuppressWarnings("rawtypes")
    @Override
    public LinkedHashMap getExportTile(String channelCode) throws Exception {
        try {
            return this.refundInfoExpServiceMap.get(channelCode).getExportTile();
        } catch (Exception e) {
            throw e;
        }
    }

    @Override
    public int maxCount(String channelCode) {
        return this.refundInfoExpServiceMap.get(channelCode).maxCount();
    }
}


RefundInfoExportService.java

package com.saicfc.pmpf.internal.manage.renfund;

import java.util.HashMap;
import java.util.LinkedHashMap;

/**
 * 退款导出网银格式文件service
 * @author lizhiyong
 * @version $Id: RefundInfoExportService.java, v 0.1
		2014年9月10日 下午4:06:26 Exp $
 */
public interface RefundInfoExportService {

    /**
     * 配置导出的详细信息
     * @param channelCode
     *                 渠道代码
     * @param paymentMap
     *                 订单信息
     * @param map
     *           退款信息
     * @return
     */
    @SuppressWarnings("rawtypes")
    public LinkedHashMap getExportDetailInfo(HashMap paymentMap, HashMap refundMap);

    /**
     * 设置导出文件头部信息
     * @param channelCode  渠道代码
     * @return
     */
    @SuppressWarnings("rawtypes")
    public LinkedHashMap getExportTile();

    /**
     * 设置最大导出条数
     * @param channelCode
     * @return
     */
    int maxCount();

    
}

ICBCRefundInfoExportServiceImpl.java

package com.saicfc.pmpf.internal.manage.renfund.impl;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;

import org.g4studio.core.model.service.impl.BizServiceImpl;

import com.saicfc.pmpf.internal.manage.renfund.RefundInfoExportService;
import com.saicfc.pmpf.internal.manage.utils.DateUtil;

public class ICBCRefundInfoExportServiceImpl extends BizServiceImpl implements
                                                                   RefundInfoExportService {

    /**
     * 配置工商银行导出的详细信息
     * @param channelCode
     * @param paymentMap
     * @param map
     * @return 
     * @see com.saicfc.pmpf.internal.manage.renfund.RefundInfoExportService#getExportDetailInfo(java.lang.String, java.util.HashMap, java.util.HashMap)
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    @Override
    public LinkedHashMap getExportDetailInfo(HashMap paymentMap, HashMap refundMap) {
        LinkedHashMap datamMap = new LinkedHashMap();
        String orderTime = DateUtil.convertDateToString("yyyyMMdd",
            (Date) paymentMap.get("orderTime"));
        String channelOrderNo = (String) paymentMap.get("channelOrderNo");
        datamMap.put("1", channelOrderNo);
        datamMap.put("2", orderTime);
        BigDecimal amount = (BigDecimal) refundMap.get("amount");
        String amountString = amount.divide(new BigDecimal(10)).toPlainString();
        datamMap.put("3", amountString);
        datamMap.put("4", refundMap.get("remark") != null ? refundMap.get("remark") : "");
        datamMap.put("5", "");
        return datamMap;
    }

    /**
     * 设置工商银行导出文件头部信息
     * @param channelCode
     * @return 
     * @see com.saicfc.pmpf.internal.manage.renfund.RefundInfoExportService#getExportTile(java.lang.String)
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    @Override
    public LinkedHashMap getExportTile() {
        LinkedHashMap map = new LinkedHashMap();
        map.put("1", "订单号");
        map.put("2", "支付日期");
        map.put("3", "退货现金金额(整数金额 单位:分)");
        map.put("4", "退货原因");
        map.put("5", "退货积分商户金额(整数金额  单位 : 分)");
        return map;
    }

    @Override
    public int maxCount() {
        return 0;
    }

}


分享到:
评论

相关推荐

    android多个activity和一个service通信

    service在后台下载,与前台多个activity通信,结果发现有一个坑,找到原因后,跟大家一起分享。

    Android 多个service的action 相同冲突 验证demo

    Android 多个service的action 相同冲突 验证demo,对应博客地址是http://blog.csdn.net/czlove110/article/details/50791390

    5. 多个service实现同一个接口 或者抽象类 1

    }}3.利用配置接口类实现上述功能/** * Copyright:http://www.chinalife.com.cn All rights reserved

    Service与多个Activity交互

    Service与多个Activity通过Broadcast进行交互

    安卓开发观察者模式应用-一个service通知多个activity更新ui的实现

    安卓开发观察者模式应用-一个service通知多个activity更新ui的实现, service与activity的交互: 1.接口回调 2.自定义广播 3.观察者模式

    service-worker-express.rar

    Service Worker 是 Chrome 团队提出和力推的一个 WEB API,用于给 web 应用提供高级的可持续的后台处理能力。 service worker 能够操作的缓存是有别于浏览器内部的 memory cache 或者 disk cache。它是独立于当前...

    Android 双进程守护service

    它是利用系统的漏洞来启动一个前台的Service进程,与普通的启动方式区别在于,它不会在系统通知栏处出现一个Notification,看起来就如同运行着一个后台Service进程一样。这样做带来的好处就是,用户无法察觉到你运行...

    编写一个简单的Web Service

    编写一个简单的Web Service下面是写的步骤: 一、打开VS。NET的集成开发环境,FILE菜单上选择New,新建一个C#的ASP.NET Web Service工程,工程名为WebServiceDemo(完整的是http://localhost/WebServiceDemo)。这...

    Microsoft Visual Studio 2008 Service Pack 1 (iso)

    版本: Version: SP1 File Name: VS2008SP1ENUX1512962.iso Date Published: 8/11/2008 File Size: ... 此下载文件安装 Visual Studio 2008 SP1 和 .NET Framework 3.5 Service Pack 1 (SP1)。... 如果安装了多个

    QT for Android下Service的创建

    QT for Android下多个 Service的创建启动,包括Service通过Jni外调QT信号槽实现,对研究QT在安卓下的跨平台开发很有帮助

    EMC存储使用Unisphere Service Manager解析存储原厂日志手册.docx

    Unisphere Service Manager(USM)是一个基于Java的桌面应用程序,是EMC VNX中端产品系列维护的重要工具之一,主要用途是:升级、安装和维护存储系统的硬件和软件,以前的软件叫做 Navisphere Service Taskbar,简称...

    ServiceBroker基本用法

    结果发现他们几乎所有的应用程序中都有一个或多个操作是以异步排队方式执行的。股票交易系统中的结算活动是排队的,这样可以在后台进行结算,在前端处理其他交易。订单输入系统中的发货信息放在一个排队中,稍后将由...

    Service Unavailable-网站被CC攻击的症状

    一般情况下为多个站共用一个程序池,这个程序池可以简单理解为资源库,即这些站点共用这块资源;内存限制为500M物理内存(服务器为8G内存)。如果这个资源被其中一个站用完,则程序池就会停止,所有使用这个程序池的...

    Service通过广播向多个Activity传值

    Service通过广播向Activity传值,也可以多个Activity接收

    Web Map Service (WMS) 网络地图服务

    OGC® Web Map Service (WMS) 接口标准是一套简单的 HTTP 接口,用于从一个或多个地理信息数据库传输有地理定位的地图图像数据。

    Nginx配置多个访问路径

    Nginx配置多个service 多个访问路径 找到conf/nginx.conf修改配置文件 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid ...

    service mesh 学习实践笔记.zip

    02 | 注册中心:如何搭建一个高可用、健壮的注册中心? 03 | 负载均衡器:服务发现后如何实现节点保护? 04 | 负载均衡器:如何实现染色和地域优先? (关注【云世】公众号,免费获取课程全部内容。) 05 | 路由器...

    Windows Service Wrapper

    Windows Service Wrapper是一款开源的,可以实现nginx注册为Windows服务的软件工具,非常实用。可以解决nginx每次配置需要手动重启不方便的弊端。

    SpringMVC中一个Controller多个方法

    SpringMVC4.0 一个Controller多个方法

    multiple-service-workers:查看是否可以为不同的路径注册多个 Service Worker

    看看是否可以为不同的路径注册多个服务工作者。 结论 注册多个不同范围的 SW 是完全可以的。 (使用 Chrome Canary 验证 - 43.0.2357.2) // Registering multiple SWs with different scopes. navigator.service...

Global site tag (gtag.js) - Google Analytics