spring MVC关闭自动提交事务改为手动提交

package com.wanrong.distribution.server.impl;

import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.util.StringUtils;
import com.wanrong.distribution.dao.AppUserDao;
import com.wanrong.distribution.share.dto.UserDTO;
import com.wanrong.distribution.share.interfaces.AppUserHierarchyService;
import com.wanrong.distribution.share.interfaces.AppUserService;
import com.wanrong.distribution.share.query.UserQuery;
import com.wanrong.module.commons.QueryResult;
import com.wanrong.module.commons.Result;
import com.wanrong.module.commons.SingleResult;
import com.wanrong.web.share.dto.EvidenceInfoDTO;
import com.wanrong.web.share.dto.MerchantInfoDTO;
import com.wanrong.web.share.dto.MerchantProudctDTO;
import com.wanrong.web.share.query.MerchantInfoQuery;
import com.wanrong.web.share.query.MerchantProudctQuery;

@Service("appUserService")
public class AppUserServiceImpl implements AppUserService {
    protected Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    AppUserDao appUserDao;
    @Autowired
    AppUserHierarchyService appUserHierarchyService;
    @Resource(name = "transactionManager")
    private PlatformTransactionManager platformTransactionManager;
   
    /**
     * 新增AppUser
     */
    public Result insertAppUser(UserDTO info){
        Result result = new Result();
        
        //关闭事务自动提交
        DefaultTransactionDefinition def = new DefaultTransactionDefinition();
        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
        TransactionStatus status = platformTransactionManager.getTransaction(def);
        
        try {
            //插入用户
            appUserDao.insertAppUser(info);   
            
            //查询商户的父UserId
            int fatherUserId = 0;
            UserDTO userFather = appUserDao.queryAppUserBySpid(info.getParentSpId());
            if(!StringUtils.isEmpty(userFather)){
                fatherUserId = userFather.getId();
            }
            
            //插入商户层级关系
            Result rest = appUserHierarchyService.insertAppUserHierarchy(false,info.getId(),fatherUserId);
            if(!rest.isSuccess()){
                platformTransactionManager.rollback(status);    // 添加失败 回滚事务;
                result.setSuccess(false);
            }else{
                result.setSuccess(true);
                platformTransactionManager.commit(status);      //提交事务
            }
        } catch (Exception e) {
            result.setSuccess(false);
            platformTransactionManager.rollback(status);      //添加失败 回滚事务;
            logger.error("",e);
        }
        return result;
    }

    @Override
    public SingleResult<UserDTO> queryAppUser(UserQuery userQuery) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public SingleResult<UserDTO> queryAppUserBySpid(String spId) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public QueryResult<UserDTO> queryAppUserList(UserQuery query) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int queryMyAppUserCount(UserQuery query) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public Result updateAppUser(UserDTO userDTO) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Result uploadFile(EvidenceInfoDTO evidenceInfoDTO) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public QueryResult<MerchantProudctDTO> queryMerchantProductList(MerchantProudctQuery query) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public SingleResult<MerchantInfoDTO> queryMerchantInfo(MerchantInfoQuery query) {
        // TODO Auto-generated method stub
        return null;
    }
}

猜你喜欢

转载自x125858805.iteye.com/blog/2369243