TdCAcctSourceServiceImpl.java 7.11 KB
package com.zteits.pay.biz;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.clouds.common.cache.park.ParkingLotCacheUtil;
import com.zteits.clouds.api.apibase.constants.BasicEnum;
import com.zteits.clouds.api.apibase.constants.PayOrderTypeEnum;
import com.zteits.clouds.api.dto.order.parkorder.dto.OrderParkQueryDTO;
import com.zteits.clouds.api.dto.order.parkorder.param.QueryParkOrderByOrderIdRequest;
import com.zteits.clouds.api.dto.order.payorder.dto.PayOrderDTO;
import com.zteits.clouds.api.dto.order.payorder.param.QueryPayOrderByPayOrderIdRequest;
import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO;
import com.zteits.clouds.api.dto.pay.*;
import com.zteits.clouds.api.dto.pay.param.QueryRechargeByPhoneNumOrCustIdReq;
import com.zteits.clouds.api.service.order.backorder.query.BackOrderQueryService;
import com.zteits.clouds.api.service.order.parkorder.query.PubParkOrderQueryService;
import com.zteits.clouds.api.service.order.payorder.query.PubPayOrderQueryService;
import com.zteits.pay.dao.TdCAcctPayoutDao;
import com.zteits.pay.domain.TdCAcctPayout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;

import com.github.pagehelper.PageInfo;
import com.xiaoleilu.hutool.util.CollectionUtil;
import com.zteits.clouds.api.apibase.bean.BizResult;
import com.zteits.clouds.api.apibase.bean.PageBean;
import com.zteits.clouds.api.dto.pay.param.AcctPayoutForPageRequest;
import com.zteits.clouds.api.dto.pay.param.AcctSourceRequest;
import com.zteits.clouds.api.dto.pay.param.QueryAcctSourceStaticRequest;
import com.zteits.clouds.api.service.pay.TdCAcctSourceService;
import com.zteits.pay.dao.TdCAcctSourceDao;
import com.zteits.pay.domain.TdCAcctSource;
import com.zteits.pay.pagepager.PageBeanUtil;
import org.springframework.stereotype.Service;

@Service("com.zteits.pay.biz.TdCAcctSourceServiceImpl")
public class TdCAcctSourceServiceImpl implements TdCAcctSourceService{

	private static final Logger logger = LoggerFactory.getLogger(TdCAcctPayoutServiceImpl.class);
	@Autowired
	private TdCAcctSourceDao  tdCAcctSourceDao;

	@Autowired
	private TdCAcctPayoutDao tdCAcctPayoutDao;

	@Autowired
	private PubParkOrderQueryService pubParkOrderQueryService;
	@Autowired
	private PubPayOrderQueryService pubPayOrderQueryService;
	
	@Override
	public BizResult<Boolean> insertAcctSource(AcctSourceRequest request) {
		TdCAcctSource  acctSourceDO = new TdCAcctSource();
		BeanUtils.copyProperties(request, acctSourceDO);
		Integer flg = tdCAcctSourceDao.insertAcctSource(acctSourceDO);
		return new BizResult<Boolean>(flg > 0?true:false);
	}
	@Override
	public BizResult<List<AcctSourceDTO>> queryAcctSource(AcctSourceRequest request) {
		List<AcctSourceDTO> dtoList  = new ArrayList<>();
		TdCAcctSource acctSourceDo = new TdCAcctSource();
		BeanUtils.copyProperties(request, acctSourceDo);
		List<TdCAcctSource> list = tdCAcctSourceDao.getAcctSource(acctSourceDo);
		if(CollectionUtil.isNotEmpty(list)) {
			for(TdCAcctSource acctSourceDO:list) {
				AcctSourceDTO acctSourceDTO  = new AcctSourceDTO();	
				BeanUtils.copyProperties(acctSourceDO, acctSourceDTO);
				dtoList.add(acctSourceDTO);
			}
		}
		return new BizResult<List<AcctSourceDTO>>(dtoList);
	}

	@Override
	public Long queryShareBerthActFee(AcctSourceRequest acctSourceRequest) {
		TdCAcctSource  acctSourceDO = new TdCAcctSource();
		BeanUtils.copyProperties(acctSourceRequest, acctSourceDO);
		Long actFee = tdCAcctSourceDao.queryShareBerthActFee(acctSourceDO);
		return actFee;
	}

	@Override
	public BizResult<PageBean<AcctSourceQueryRechargeStaticDTO>> queryCustRechargeFeeStatic(QueryAcctSourceStaticRequest request) {
		PageInfo<AcctSourceQueryRechargeStaticDTO> pageInfo = tdCAcctSourceDao.queryCustRechargeFeeStatic(request);
		PageBean<AcctSourceQueryRechargeStaticDTO> pageBean = new PageBean<>();
		PageBeanUtil.copyProperties(pageInfo, pageBean, AcctSourceQueryRechargeStaticDTO.class);
		return new BizResult<>(pageBean);
	}

	@Override
	public BizResult<PageBean<AcctSourceQueryRechargeDetailDTO>> queryCustRechargeFeeStaticMsg(QueryAcctSourceStaticRequest request) {
		PageInfo<AcctSourceQueryRechargeDetailDTO> pageInfo = tdCAcctSourceDao.queryCustRechargeFeeStaticMsg(request);
		PageBean<AcctSourceQueryRechargeDetailDTO> pageBean = new PageBean<>();
		PageBeanUtil.copyProperties(pageInfo, pageBean, AcctSourceQueryRechargeDetailDTO.class);
		return new BizResult<>(pageBean);
	}
	@Override
	public BizResult<PageBean<AcctSourceDTO>> queryAcctRechargeForPage(AcctPayoutForPageRequest request) {
		PageInfo<TdCAcctSource> pageInfo = tdCAcctSourceDao.queryAcctRechargeForPage(request);
		PageBean<AcctSourceDTO> pageBean = new PageBean<>();
		PageBeanUtil.copyProperties(pageInfo, pageBean, AcctSourceDTO.class);
		/**
		 * 2.查询最近一条支出记录
		 */
		if(null != pageBean && CollectionUtil.isNotEmpty(pageBean.getDataList())){
			for(AcctSourceDTO acctSourceDTO :pageBean.getDataList()){
				if(null == acctSourceDTO ){
					continue;
				}

				/**
				 * 1.查询最近一条支出记录
				 */
				TdCAcctPayout tdCAcctPayout = tdCAcctPayoutDao.queryAcctPayoutRltOrderId(acctSourceDTO.getRechargeTime(), acctSourceDTO.getAcctId());
				logger.info("最新一条支出记录结果={}", JSONObject.toJSON(tdCAcctPayout));
				/**
				 * 通过订单 ID 查询订单的停车场
				 */
				if(null != tdCAcctPayout && StringUtils.isNotEmpty(tdCAcctPayout.getRltOrderId())){
					QueryPayOrderByPayOrderIdRequest  payOrderDTOBizResult = new QueryPayOrderByPayOrderIdRequest(tdCAcctPayout.getRltPayorderId(),BasicEnum.SYS_CODE.getValue());
					BizResult<PayOrderDTO>  bizResult = pubPayOrderQueryService.queryPayOrderByPayOrderId(payOrderDTOBizResult);
					if(bizResult.isSuccess()&&bizResult.getData() != null){
						PayOrderDTO payOrderDTO = bizResult.getData();
						acctSourceDTO.setPayOutTime(payOrderDTO.getPayFinishTime());
						if(StringUtils.isNotEmpty(payOrderDTO.getPlNo())){
							ParkingLotDTO parkingLotDTO = ParkingLotCacheUtil.getParkLotByPlNo(payOrderDTO.getPlNo());
							if(parkingLotDTO != null){
								acctSourceDTO.setPlName(parkingLotDTO.getPlName());
							}
							acctSourceDTO.setPlNo(payOrderDTO.getPlNo());
						}

					}
				}
			}
		}

		return new BizResult<>(pageBean);
	}

	@Override
	public BizResult<AcctRechargeStatisticDTO> statisticAcctRecharge(AcctPayoutForPageRequest request) {
		AcctRechargeStatisticDTO dto = tdCAcctSourceDao.statisticAcctRecharge(request);
		return new BizResult<>(dto);
	}

	/**
	 * 通过手机号、cust_id 查询用户充值明细记录
	 * @Auther: wangfs
	 * @param
	 * @return
	 */
	@Override
	public BizResult<PageBean<QueryRechargeByPhoneNumOrCustIdDTO>> queryCustRechargeByPhoneNumOrCustId(QueryRechargeByPhoneNumOrCustIdReq request) {
		PageBean<QueryRechargeByPhoneNumOrCustIdDTO> pageBean = new PageBean<>();
		PageInfo<QueryRechargeByPhoneNumOrCustIdDTO> pageInfo = tdCAcctSourceDao.queryCustRechargeByPhoneNumOrCustId(request);
		PageBeanUtil.copyProperties(pageInfo, pageBean, QueryRechargeByPhoneNumOrCustIdDTO.class);
		return new BizResult<>(pageBean);
	}

}