package com.zteits.pay.biz; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.zteits.clouds.api.dto.pay.AcctRechargeStatisticDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.apache.commons.lang3.StringUtils; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.xiaoleilu.hutool.date.DateField; import com.xiaoleilu.hutool.date.DateUtil; import com.zteits.clouds.api.apibase.bean.BizResult; import com.zteits.clouds.api.apibase.bean.PageBean; import com.zteits.clouds.api.apibase.constants.ErrorType; import com.zteits.clouds.api.apibase.exception.BizException; import com.zteits.clouds.api.dto.owner.dto.OwnerPayOutDTO; import com.zteits.clouds.api.dto.owner.param.OwnerRequest; import com.zteits.clouds.api.dto.pay.AcctPayoutDTO; import com.zteits.clouds.api.dto.pay.param.AcctPayoutForPageRequest; import com.zteits.clouds.api.dto.pay.param.AcctPayoutRequest; import com.zteits.clouds.api.dto.pay.param.QueryAcctPayoutByPayOrderIdReq; import com.zteits.clouds.api.service.pay.TdCAcctPayoutService; import com.zteits.pay.dao.TdCAcctPayoutDao; import com.zteits.pay.domain.TdCAcctPayout; import com.zteits.pay.pagepager.PageBeanUtil; @Service("com.zteits.pay.biz.TdCAcctPayoutServiceImpl") public class TdCAcctPayoutServiceImpl implements TdCAcctPayoutService{ @Autowired private TdCAcctPayoutDao tdCAcctPayoutDao; @Override public BizResult insertPayout(AcctPayoutRequest request) { TdCAcctPayout acctPayoutDO = new TdCAcctPayout(); BeanUtils.copyProperties(request, acctPayoutDO); Long flg = tdCAcctPayoutDao.insertPayout(acctPayoutDO); return new BizResult(flg > 0?true:false); } /** * 通过支付单id查询个人账户支出表.
* @param request * @return * 2018年4月12日 wangfs.
*/ @Override public BizResult> queryAcctPayoutByPayOrderId(QueryAcctPayoutByPayOrderIdReq request) { List acctPayoutDTOList = new ArrayList<>(); List tdCAcctPayouts = tdCAcctPayoutDao.queryAcctPayoutByPayOrderId(request.getPayOrderId()); if(!CollectionUtils.isEmpty(tdCAcctPayouts)){ for(TdCAcctPayout acctPayout : tdCAcctPayouts) { AcctPayoutDTO acctPayoutDTO = new AcctPayoutDTO(); BeanUtils.copyProperties(acctPayout, acctPayoutDTO); acctPayoutDTOList.add(acctPayoutDTO); } } return new BizResult>(acctPayoutDTOList); } @Override public BizResult> queryAcctPayoutForPage(AcctPayoutForPageRequest request) { PageInfo pageInfo = tdCAcctPayoutDao.queryAcctPayoutForPage(request , request.getBaseRequest().getPageNum(), request.getBaseRequest().getPageSize()); PageBean pageBean = new PageBean(); PageBeanUtil.copyProperties(pageInfo, pageBean, AcctPayoutDTO.class); return new BizResult<>(pageBean); } @Override public BizResult statisticAcctPayOut(AcctPayoutForPageRequest request) { AcctRechargeStatisticDTO dto = tdCAcctPayoutDao.statisticAcctPayOut(request); return new BizResult<>(dto); } @Override public BizResult updatePayout(AcctPayoutRequest request) { TdCAcctPayout acctPayoutDO = new TdCAcctPayout(); BeanUtils.copyProperties(request, acctPayoutDO); Integer flg = tdCAcctPayoutDao.updatePayout(acctPayoutDO); return new BizResult(flg > 0?true:false); } @Override public BizResult> queryOwnerPayOutByMonth(OwnerRequest request) { if (request.getBeginTime() == null || request.getEndTime() == null) { request.setBeginTime(DateUtil.offset(new Date(), DateField.YEAR, -1)); request.setEndTime(DateUtil.endOfMonth(new Date())); } if (StringUtils.isEmpty(request.getCustId())) { throw new BizException(ErrorType.PARAMM_NULL, "custId为空!"); } List list = tdCAcctPayoutDao.queryOwnerPayOutByMonth(request); //填充数据为null的数据 Date beginTimes = request.getBeginTime(); Date endTimes = request.getEndTime(); list = fillDatas(list, request, beginTimes, endTimes); return new BizResult<>(list); } /** * 填充为空的数据 * * @param list * @param request * @return 2018年7月30日 wangfei */ private List fillDatas(List list, OwnerRequest request, Date beginTimes, Date endTimes) { List result = new ArrayList<>(); DateFormat monthformat = new SimpleDateFormat("yyyy-MM"); Date time = beginTimes; //先遍历放入result所有为零的数据 while (time.getTime() < (endTimes.getTime())) { OwnerPayOutDTO dto = new OwnerPayOutDTO(); dto.setDateStr(DateUtil.format(time, monthformat)); dto.setFee(0L); result.add(dto); time = DateUtil.offsetMonth(time, 1); } //再替换有结果的数据 for (OwnerPayOutDTO r : result) { for (OwnerPayOutDTO l : list) { if (r.getDateStr().equals(l.getDateStr())) { BeanUtils.copyProperties(l, r); } } } return result; } }