bruce

优化oracle事务

......@@ -14,6 +14,8 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
import com.cjs.site.biz.ServiceException;
......@@ -38,7 +40,11 @@ import com.cjs.site.util.redis.JedisTemplate;
import com.cjs.site.util.t2.T2Result;
import com.cjs.site.util.t2.T2Util;
import com.cjs.site.util.web.ActionUtil;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.transaction.support.DefaultTransactionDefinition;
/**
* 提货
......@@ -78,7 +84,9 @@ public class PickBiz {
private InventoryDao inventoryDao;
@Autowired
private PickPackDao pickPackDao;
@Autowired
@Qualifier("transactionManagerOracle")
private DataSourceTransactionManager transactionManager;
/**
* 封装费用汇总
*/
......@@ -181,6 +189,7 @@ public class PickBiz {
/* if (resultInfo.getCode() == 0) {
return resultInfo;
}*/
ResultInfo resultInfo;
if (pickInfo.getInsuranceType() == null) {
return new ResultInfo(0, "请选择投保方式");
}
......@@ -189,6 +198,10 @@ public class PickBiz {
return new ResultInfo(0, "投保金额不能低于1000元");
}
}
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
try{
HttpSession session = ActionUtil.getRequest().getSession();
UserAddressInfo addressInfo = userAddressDao.queryById(addressId);
OutpropApplyInfo applyInfo = new OutpropApplyInfo();
......@@ -219,7 +232,13 @@ public class PickBiz {
pickInfo.setMerge(true);
}
}
return this.pick(pickInfo, applyInfo);
resultInfo = this.pick(pickInfo, applyInfo);
transactionManager.commit(status);
}catch (Exception e){
transactionManager.rollback(status);
return new ResultInfo(0, "数据异常,请联系客服!");
}
return resultInfo;
}
/**转赵涌在线拍卖*/
......@@ -254,7 +273,6 @@ public class PickBiz {
* @return code(0:全部失败;1:成功;2:部分失败)
*/
@SuppressWarnings("unchecked")
@Transactional
public ResultInfo pick(OutpropApplyPickInfo pickInfo, OutpropApplyInfo applyInfo) {
UserInfo user = ActionUtil.getUser();
HttpSession session = ActionUtil.getRequest().getSession();
......
......@@ -186,6 +186,10 @@
<property name="dataSource" ref="dataSourceMySql" />
</bean>
<bean id="transactionManagerOracle" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSourceOracle" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
</beans>
......