| | |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.RevenueMapper; |
| | | import com.doumee.dao.business.WithdrawalOrdersMapper; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.ShopInfoMapper; |
| | | import com.doumee.dao.business.model.Revenue; |
| | | 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.vo.RevenueStatisticsVO; |
| | | import com.doumee.service.business.RevenueService; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | |
| | | |
| | | @Autowired |
| | | private RevenueMapper revenueMapper; |
| | | |
| | | @Autowired |
| | | private WithdrawalOrdersMapper withdrawalOrdersMapper; |
| | | |
| | | @Autowired |
| | | private ShopInfoMapper shopInfoMapper; |
| | | |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | |
| | | @Override |
| | | public Integer create(Revenue revenue) { |
| | |
| | | return revenueMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | @Override |
| | | public RevenueStatisticsVO getShopRevenueStatistics(Integer shopId) { |
| | | ShopInfo shop = shopInfoMapper.selectById(shopId); |
| | | if (shop == null || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "门店不存在"); |
| | | } |
| | | Integer memberId = shop.getRegionMemberId(); |
| | | return buildRevenueStatistics(memberId, Constants.TWO, shop.getBalance()); |
| | | } |
| | | |
| | | @Override |
| | | public RevenueStatisticsVO getDriverRevenueStatistics(Integer memberId) { |
| | | Member member = memberMapper.selectById(memberId); |
| | | if (member == null) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "用户不存在"); |
| | | } |
| | | return buildRevenueStatistics(memberId, Constants.ONE, member.getAmount()); |
| | | } |
| | | |
| | | /** |
| | | * 构建收益统计 |
| | | * |
| | | * @param memberId 会员主键 |
| | | * @param memberType 会员类型:1=司机;2=门店 |
| | | * @param balance 当前余额(分) |
| | | */ |
| | | private RevenueStatisticsVO buildRevenueStatistics(Integer memberId, Integer memberType, Long balance) { |
| | | RevenueStatisticsVO vo = new RevenueStatisticsVO(); |
| | | vo.setBalance(balance != null ? balance : 0L); |
| | | |
| | | // 待结算金额:revenue中 vaildStatus=0 且 type=0(完成订单)的收入之和 |
| | | QueryWrapper<Revenue> pendingWrapper = new QueryWrapper<>(); |
| | | pendingWrapper.select("IFNULL(SUM(AMOUNT), 0) as amount") |
| | | .eq("MEMBER_ID", memberId) |
| | | .eq("MEMBER_TYPE", memberType) |
| | | .eq("VAILD_STATUS", Constants.ZERO) |
| | | .eq("TYPE", Constants.ZERO) |
| | | .eq("OPT_TYPE", Constants.ONE) |
| | | .eq("DELETED", Constants.ZERO); |
| | | Map<String, Object> pendingResult = revenueMapper.selectMaps(pendingWrapper).stream().findFirst().orElse(null); |
| | | vo.setPendingAmount(pendingResult != null && pendingResult.get("amount") != null |
| | | ? Long.parseLong(pendingResult.get("amount").toString()) : 0L); |
| | | |
| | | // 累计提现金额:withdrawal_orders中 status=1(提现成功)且 type=0(提现) |
| | | QueryWrapper<WithdrawalOrders> successWrapper = new QueryWrapper<>(); |
| | | successWrapper.select("IFNULL(SUM(AMOUNT), 0) as amount") |
| | | .eq("MEMBER_ID", memberId) |
| | | .eq("MEMBER_TYPE", memberType) |
| | | .eq("STATUS", Constants.ONE) |
| | | .eq("TYPE", Constants.ZERO) |
| | | .eq("DELETED", Constants.ZERO); |
| | | Map<String, Object> successResult = withdrawalOrdersMapper.selectMaps(successWrapper).stream().findFirst().orElse(null); |
| | | vo.setTotalWithdrawn(successResult != null && successResult.get("amount") != null |
| | | ? Long.parseLong(successResult.get("amount").toString()) : 0L); |
| | | |
| | | // 提现中金额:withdrawal_orders中 status=0(提现申请中)且 type=0(提现) |
| | | QueryWrapper<WithdrawalOrders> progressWrapper = new QueryWrapper<>(); |
| | | progressWrapper.select("IFNULL(SUM(AMOUNT), 0) as amount") |
| | | .eq("MEMBER_ID", memberId) |
| | | .eq("MEMBER_TYPE", memberType) |
| | | .eq("STATUS", Constants.ZERO) |
| | | .eq("TYPE", Constants.ZERO) |
| | | .eq("DELETED", Constants.ZERO); |
| | | Map<String, Object> progressResult = withdrawalOrdersMapper.selectMaps(progressWrapper).stream().findFirst().orElse(null); |
| | | vo.setWithdrawingAmount(progressResult != null && progressResult.get("amount") != null |
| | | ? Long.parseLong(progressResult.get("amount").toString()) : 0L); |
| | | |
| | | return vo; |
| | | } |
| | | |
| | | } |