TdCAcctPersonDaoImpl.java 7.71 KB
/**
 * 
 */
package com.zteits.pay.dao.impl;

import org.apache.commons.collections4.CollectionUtils;
import com.clouds.common.utils.DateUtil;
import com.clouds.common.utils.SequenceUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.apibase.constants.ErrorType;
import com.zteits.clouds.api.apibase.constants.SequenceTypeEnum;
import com.zteits.clouds.api.apibase.exception.BizException;
import com.zteits.clouds.api.dto.pay.AcctPersonDTO;
import com.zteits.clouds.api.dto.pay.account.dto.AccountInOutDetailForPageDTO;
import com.zteits.clouds.api.dto.pay.account.param.AccoutRecordDetailRequest;
import com.zteits.clouds.api.dto.pay.account.param.AcctInOutDetailForPageRequest;
import com.zteits.clouds.api.dto.pay.dto.AcctPersonForStoreCarDTO;
import com.zteits.clouds.api.dto.pay.param.*;
import com.zteits.pay.domain.TdCAcctPerson;
import com.zteits.pay.domain.TdCAcctPersonExample;
import com.zteits.pay.mapper.TdCAcctPersonMapper;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.zteits.pay.dao.TdCAcctPersonDao;
import com.zteits.pay.mapper.smapper.TdCAcctPersonSMapper;

/**
 * @author hxz
 *
 */
@Component
public class TdCAcctPersonDaoImpl implements TdCAcctPersonDao {

	@Autowired
	private TdCAcctPersonSMapper tdCAcctPersonSMapper;

	@Autowired
	private TdCAcctPersonMapper tdCAcctPersonMapper;


	@Override
	public Integer  insertAcctPerson(TdCAcctPerson acctPersonDo) {
		if(acctPersonDo.getOrgId() == null){
			throw new BizException(ErrorType.APP_ERROR,"区域编码为空",false);
		}
		return tdCAcctPersonMapper.insertSelective(acctPersonDo);
	}

	@Override
	public Boolean updateAcctPerson(TdCAcctPerson acctPersonDo) {
		try {  
			int updateResult = tdCAcctPersonSMapper.updateAcctPerson(acctPersonDo);  
            if (updateResult > 0) {  
                return true;  
            }
            return false;  
        } catch (Exception e) {  
            return false;  
        } 
	}

	@Override
	public TdCAcctPerson getAcctPerson(TdCAcctPerson acctPersonDo) {
		return tdCAcctPersonSMapper.getAcctPerson(acctPersonDo);
	}



	@Override
	public List<TdCAcctPerson> queryAcctPersonByCustIdAndAcctType(QueryAcctPersonByCustIdsAndAcctTypeReq request) {
		return tdCAcctPersonSMapper.queryAcctPersonByCustIdAndAcctType(request);
	}

	@Override
	public List<AcctPersonDTO> getAcctPersonGroupByOrgId(QueryAcctPersonByCustIdsAndAcctTypeReq request) {
		return tdCAcctPersonSMapper.getAcctPersonGroupByOrgId(request);
	}

	@Override
	public List<TdCAcctPerson> getAcctPersonGroupByAcctType(QueryAcctPersonByCustIdsAndAcctTypeReq request) {
		return tdCAcctPersonSMapper.getAcctPersonGroupByAcctType(request);
	}

	@Override
	public TdCAcctPerson addFeeForCustPresentAcct(Long orgId, Long rechargeFee, int accType, String custId) {
		TdCAcctPerson acctPersonDTO = new TdCAcctPerson();
		//查询是否已经有该类型的账户了
		QueryAcctPersonByCustIdsAndAcctTypeReq queryAcctPersonByCustIdAndAcctTypeReq = new QueryAcctPersonByCustIdsAndAcctTypeReq();
		List<Integer> list = new ArrayList<>();
		list.add(accType);
		queryAcctPersonByCustIdAndAcctTypeReq.setCustId(custId);
		queryAcctPersonByCustIdAndAcctTypeReq.setAcctTypeList(list);
		queryAcctPersonByCustIdAndAcctTypeReq.setOrgId(orgId);
		List<TdCAcctPerson> rsAccPerson = this.queryAcctPersonByCustIdAndAcctType(queryAcctPersonByCustIdAndAcctTypeReq);
		if(CollectionUtils.isEmpty(rsAccPerson)) {
			//创建对应账户
			acctPersonDTO.setCustId(custId);
			acctPersonDTO.setAcctType(accType);
			acctPersonDTO.setAcctBalance(new BigDecimal(rechargeFee));
			acctPersonDTO.setAcctId(SequenceUtil.getNextId(SequenceTypeEnum.ACCOUNT_ID_P_SQE));
			acctPersonDTO.setAcctOrder(1);
			/**设置单位: 1:分,2:张,3:次,4:小时,5:天,6:个'*/
			acctPersonDTO.setAcctTypeUnit(1);
			/**设置是否是主账户 1:是,0:否 -目前现金账户为主账户'*/
			acctPersonDTO.setMainFlg(0);
			acctPersonDTO.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
			acctPersonDTO.setCreateDate(DateUtil.getSysDate());
			acctPersonDTO.setModfiyDate(DateUtil.getSysDate());
			acctPersonDTO.setOrgId(orgId);
			int innum = this.insertAcctPerson(acctPersonDTO);
			if(innum<=0){
				throw new BizException(ErrorType.APP_ERROR,"创建赠款账户失败",false);
			}
		}else{
			//更新账户余额
			acctPersonDTO = rsAccPerson.get(0);
			TdCAcctPerson upAcctPersonDO = new TdCAcctPerson();
			upAcctPersonDO.setCustId(custId);
			upAcctPersonDO.setOrgId(orgId);
			upAcctPersonDO.setAcctType(accType);
			upAcctPersonDO.setAcctBalance(acctPersonDTO.getAcctBalance().add(new BigDecimal(rechargeFee)));
			Boolean upBoolean = this.updateAcctPerson(upAcctPersonDO);
			if(!upBoolean){
				throw new BizException(ErrorType.APP_ERROR,"更新赠款账户失败",false);
			}
			//回填金额
			acctPersonDTO.setAcctBalance(upAcctPersonDO.getAcctBalance());

		}
		return acctPersonDTO;
	}

	@Override
	public PageInfo<AccountInOutDetailForPageDTO> queryAccountInOutDetailsForPage(AcctInOutDetailForPageRequest request) {
		PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize());
		List<AccountInOutDetailForPageDTO> resultList = tdCAcctPersonSMapper.queryAccountInOutDetailsForPage(request);
		PageInfo<AccountInOutDetailForPageDTO> pageInfo = new PageInfo<>(resultList);
		if(pageInfo.getPages()<request.getBaseRequest().getPageNum()){
			if(!org.springframework.util.CollectionUtils.isEmpty(resultList)){
				resultList.removeAll(resultList);
			}
		}
		return new PageInfo<>(resultList);
	}

	/**
	 * 通过账户 ID 查询个人账户信息
	 * @Auther: wangfs
	 * @param
	 * @return
	 */
	@Override
	public TdCAcctPerson getAcctPersonByAcctId(String acctId) {
		TdCAcctPersonExample example = new TdCAcctPersonExample();
		example.createCriteria().andDataStateEqualTo(1)
				.andAcctIdEqualTo(acctId);
		List<TdCAcctPerson> list = tdCAcctPersonMapper.selectByExample(example);
		return CollectionUtils.isNotEmpty(list)?list.get(0) : new TdCAcctPerson() ;
	}

	@Override
	public TdCAcctPerson getAcctPersonByAcctIdAndAcctType(String acctId, List<Integer> acctTypes) {
		TdCAcctPersonExample example = new TdCAcctPersonExample();
		TdCAcctPersonExample.Criteria sql = example.createCriteria();
		if(CollectionUtils.isNotEmpty(acctTypes)){
			  sql.andAcctTypeIn(acctTypes);
		}
		sql.andDataStateEqualTo(1);
		sql.andAcctIdEqualTo(acctId);
		List<TdCAcctPerson> list = tdCAcctPersonMapper.selectByExample(example);
		return CollectionUtils.isNotEmpty(list)?list.get(0) : new TdCAcctPerson() ;
	}

	/**
	 * 个人账户金额加或者减操作
	 * @Auther: wangfs
	 * @param
	 * @return
	 */
	@Override
	public Integer addOrsubAcctPersonFeeByAcctId(AddOrsubAcctPersonFeeByAcctIdReq req) {
		return tdCAcctPersonSMapper.addOrsubAcctPersonFeeByAcctId(req);
	}

	@Override
	public PageInfo<AcctPersonForStoreCarDTO> queryAcctPersonStoreCarForPage(QueryAcctPersonForPageReq request) {
		PageHelper.startPage(request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize());
		List<AcctPersonForStoreCarDTO> resultList = tdCAcctPersonSMapper.queryAcctPersonStoreCarForPage(request);
		PageInfo<AcctPersonForStoreCarDTO> pageInfo = new PageInfo<>(resultList);
		if(pageInfo.getPages()<request.getBaseRequest().getPageNum()){
			if(!org.springframework.util.CollectionUtils.isEmpty(resultList)){
				resultList.removeAll(resultList);
			}
		}
		return new PageInfo<>(resultList);
	}

	@Override
	public List<AccountInOutDetailForPageDTO> queryAccountRecordDetails(AccoutRecordDetailRequest req) {
		return tdCAcctPersonSMapper.queryAccountRecordDetails(req);
	}

}