| | |
| | | import com.doumee.dao.business.model.ShopInfo; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.WithdrawalOrders; |
| | | import com.doumee.dao.dto.RevenueQueryDTO; |
| | | import com.doumee.dao.vo.RevenueStatisticsVO; |
| | | import com.doumee.dao.vo.RevenueSummaryVO; |
| | | import com.doumee.service.business.RevenueService; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | return vo; |
| | | } |
| | | |
| | | @Override |
| | | public PageData<Revenue> findDriverRevenuePage(PageWrap<RevenueQueryDTO> pageWrap, Integer memberId) { |
| | | IPage<Revenue> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | QueryWrapper<Revenue> qw = buildRevenueQueryWrapper(pageWrap.getModel(), memberId); |
| | | PageData<Revenue> result = PageData.from(revenueMapper.selectPage(page, qw)); |
| | | if (result != null && result.getRecords() != null) { |
| | | for (Revenue model : result.getRecords()) { |
| | | model.setAmountInfo(Constants.getFormatMoney(model.getAmount())); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | public PageData<Revenue> findShopRevenuePage(PageWrap<RevenueQueryDTO> pageWrap, Integer shopId) { |
| | | ShopInfo shop = shopInfoMapper.selectById(shopId); |
| | | if (shop == null || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | IPage<Revenue> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | QueryWrapper<Revenue> qw = buildRevenueQueryWrapper(pageWrap.getModel(), shop.getRegionMemberId()); |
| | | PageData<Revenue> result = PageData.from(revenueMapper.selectPage(page, qw)); |
| | | if (result != null && result.getRecords() != null) { |
| | | for (Revenue model : result.getRecords()) { |
| | | model.setAmountInfo(Constants.getFormatMoney(model.getAmount())); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | public RevenueSummaryVO getDriverRevenueSummary(RevenueQueryDTO queryDTO, Integer memberId) { |
| | | return buildRevenueSummary(queryDTO, memberId); |
| | | } |
| | | |
| | | @Override |
| | | public RevenueSummaryVO getShopRevenueSummary(RevenueQueryDTO queryDTO, Integer shopId) { |
| | | ShopInfo shop = shopInfoMapper.selectById(shopId); |
| | | if (shop == null || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | return buildRevenueSummary(queryDTO, shop.getRegionMemberId()); |
| | | } |
| | | |
| | | private QueryWrapper<Revenue> buildRevenueQueryWrapper(RevenueQueryDTO query, Integer memberId) { |
| | | QueryWrapper<Revenue> qw = new QueryWrapper<>(); |
| | | qw.lambda().eq(Revenue::getDeleted, Constants.ZERO); |
| | | qw.lambda().eq(Revenue::getMemberId, memberId); |
| | | if (query != null) { |
| | | if (query.getOptType() != null) { |
| | | qw.lambda().eq(Revenue::getOptType, query.getOptType()); |
| | | } |
| | | if (query.getType() != null) { |
| | | qw.lambda().eq(Revenue::getType, query.getType()); |
| | | } |
| | | if (query.getStartTime() != null) { |
| | | qw.lambda().ge(Revenue::getCreateTime, query.getStartTime()); |
| | | } |
| | | if (query.getEndTime() != null) { |
| | | qw.lambda().le(Revenue::getCreateTime, Utils.Date.getEnd(query.getEndTime())); |
| | | } |
| | | } |
| | | qw.lambda().orderByDesc(Revenue::getCreateTime); |
| | | return qw; |
| | | } |
| | | |
| | | private RevenueSummaryVO buildRevenueSummary(RevenueQueryDTO queryDTO, Integer memberId) { |
| | | // 收入 |
| | | QueryWrapper<Revenue> incomeQw = new QueryWrapper<>(); |
| | | incomeQw.eq("DELETED", Constants.ZERO); |
| | | incomeQw.eq("MEMBER_ID", memberId); |
| | | incomeQw.eq("OPT_TYPE", Constants.ONE); |
| | | if (queryDTO != null) { |
| | | if (queryDTO.getType() != null) { |
| | | incomeQw.eq("TYPE", queryDTO.getType()); |
| | | } |
| | | if (queryDTO.getStartTime() != null) { |
| | | incomeQw.ge("CREATE_TIME", queryDTO.getStartTime()); |
| | | } |
| | | if (queryDTO.getEndTime() != null) { |
| | | incomeQw.le("CREATE_TIME", Utils.Date.getEnd(queryDTO.getEndTime())); |
| | | } |
| | | } |
| | | incomeQw.select("IFNULL(SUM(AMOUNT), 0) as amount"); |
| | | Map<String, Object> incomeResult = revenueMapper.selectMaps(incomeQw).stream().findFirst().orElse(null); |
| | | long totalIncome = incomeResult != null && incomeResult.get("amount") != null |
| | | ? Long.parseLong(incomeResult.get("amount").toString()) : 0L; |
| | | // 支出 |
| | | QueryWrapper<Revenue> expenseQw = new QueryWrapper<>(); |
| | | expenseQw.eq("DELETED", Constants.ZERO); |
| | | expenseQw.eq("MEMBER_ID", memberId); |
| | | expenseQw.eq("OPT_TYPE", -Constants.ONE); |
| | | if (queryDTO != null) { |
| | | if (queryDTO.getType() != null) { |
| | | expenseQw.eq("TYPE", queryDTO.getType()); |
| | | } |
| | | if (queryDTO.getStartTime() != null) { |
| | | expenseQw.ge("CREATE_TIME", queryDTO.getStartTime()); |
| | | } |
| | | if (queryDTO.getEndTime() != null) { |
| | | expenseQw.le("CREATE_TIME", Utils.Date.getEnd(queryDTO.getEndTime())); |
| | | } |
| | | } |
| | | expenseQw.select("IFNULL(SUM(AMOUNT), 0) as amount"); |
| | | Map<String, Object> expenseResult = revenueMapper.selectMaps(expenseQw).stream().findFirst().orElse(null); |
| | | long totalExpense = expenseResult != null && expenseResult.get("amount") != null |
| | | ? Long.parseLong(expenseResult.get("amount").toString()) : 0L; |
| | | |
| | | RevenueSummaryVO vo = new RevenueSummaryVO(); |
| | | vo.setTotalIncome(totalIncome); |
| | | vo.setTotalExpense(totalExpense); |
| | | return vo; |
| | | } |
| | | |
| | | } |