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 insertAcctSource(AcctSourceRequest request) { TdCAcctSource acctSourceDO = new TdCAcctSource(); BeanUtils.copyProperties(request, acctSourceDO); Integer flg = tdCAcctSourceDao.insertAcctSource(acctSourceDO); return new BizResult(flg > 0?true:false); } @Override public BizResult> queryAcctSource(AcctSourceRequest request) { List dtoList = new ArrayList<>(); TdCAcctSource acctSourceDo = new TdCAcctSource(); BeanUtils.copyProperties(request, acctSourceDo); List 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>(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> queryCustRechargeFeeStatic(QueryAcctSourceStaticRequest request) { PageInfo pageInfo = tdCAcctSourceDao.queryCustRechargeFeeStatic(request); PageBean pageBean = new PageBean<>(); PageBeanUtil.copyProperties(pageInfo, pageBean, AcctSourceQueryRechargeStaticDTO.class); return new BizResult<>(pageBean); } @Override public BizResult> queryCustRechargeFeeStaticMsg(QueryAcctSourceStaticRequest request) { PageInfo pageInfo = tdCAcctSourceDao.queryCustRechargeFeeStaticMsg(request); PageBean pageBean = new PageBean<>(); PageBeanUtil.copyProperties(pageInfo, pageBean, AcctSourceQueryRechargeDetailDTO.class); return new BizResult<>(pageBean); } @Override public BizResult> queryAcctRechargeForPage(AcctPayoutForPageRequest request) { PageInfo pageInfo = tdCAcctSourceDao.queryAcctRechargeForPage(request); PageBean 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 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 statisticAcctRecharge(AcctPayoutForPageRequest request) { AcctRechargeStatisticDTO dto = tdCAcctSourceDao.statisticAcctRecharge(request); return new BizResult<>(dto); } /** * 通过手机号、cust_id 查询用户充值明细记录 * @Auther: wangfs * @param * @return */ @Override public BizResult> queryCustRechargeByPhoneNumOrCustId(QueryRechargeByPhoneNumOrCustIdReq request) { PageBean pageBean = new PageBean<>(); PageInfo pageInfo = tdCAcctSourceDao.queryCustRechargeByPhoneNumOrCustId(request); PageBeanUtil.copyProperties(pageInfo, pageBean, QueryRechargeByPhoneNumOrCustIdDTO.class); return new BizResult<>(pageBean); } }