MrShi
8 小时以前 59bfd0b8bbbf0ee94ec68e4a3a1a6e536d0ad8fd
server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java
@@ -19,6 +19,7 @@
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.MultifileMapper;
import com.doumee.dao.business.OrdersMapper;
import com.doumee.dao.business.OtherOrdersMapper;
import com.doumee.dao.business.PricingRuleMapper;
import com.doumee.dao.business.RevenueMapper;
import com.doumee.dao.business.ShopInfoMapper;
@@ -27,6 +28,7 @@
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Multifile;
import com.doumee.dao.business.model.Orders;
import com.doumee.dao.business.model.OtherOrders;
import com.doumee.dao.business.model.PricingRule;
import com.doumee.dao.business.model.Revenue;
import com.doumee.dao.business.model.ShopInfo;
@@ -122,6 +124,9 @@
    @Autowired
    private CategoryMapper categoryMapper;
    @Autowired
    private OtherOrdersMapper otherOrdersMapper;
    @Override
    public Integer create(ShopInfo shopInfo) {
@@ -342,6 +347,8 @@
            newChange.setCreateTime(now);
            newChange.setUpdateTime(now);
            newChange.setRegionMemberId(member.getId());
            newChange.setRevenueShareConfig(changeVersion.getRevenueShareConfig());
            newChange.setDeliveryArea(changeVersion.getDeliveryArea());
            setDepositAmountFromPricingRule(newChange);
            shopInfoMapper.insert(newChange);
@@ -564,6 +571,7 @@
                changeVersion.setAuditUserId(auditDTO.getAuditUser());
                changeVersion.setRevenueShareConfig(revenueShareConfig);
                changeVersion.setUpdateTime(now);
                setDefaultDeliveryRange(changeVersion);
                shopInfoMapper.updateById(changeVersion);
                // 标记历史的变更版本为删除
@@ -1213,8 +1221,20 @@
            vo.setTagId(tag.getId());
            vo.setTagName(tag.getName());
            vo.setShopCount(count != null ? count.intValue() : 0);
            vo.setSortnum(tag.getSortnum());
            result.add(vo);
        }
        // 按门店数量倒序,相同时按排序码降序
        result.sort((a, b) -> {
            int cmp = Integer.compare(
                    b.getShopCount() != null ? b.getShopCount() : 0,
                    a.getShopCount() != null ? a.getShopCount() : 0);
            if (cmp != 0) return cmp;
            return Integer.compare(
                    b.getSortnum() != null ? b.getSortnum() : 0,
                    a.getSortnum() != null ? a.getSortnum() : 0);
        });
        // 总数放在列表第一个
        Long totalCount = shopInfoMapper.selectCount(baseQw);
@@ -1396,6 +1416,7 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        ShopCenterVO vo = new ShopCenterVO();
        vo.setId(shop.getId());
        vo.setShopName(shop.getName());
        vo.setLinkName(shop.getLinkName());
        vo.setCompanyType(shop.getCompanyType());
@@ -1597,14 +1618,34 @@
                .count();
        vo.setFinishedOrderCount((int) finishedCount);
        // 总营收金额 = sum(totalAmount - refundAmount)
        long totalRevenue = orders.stream()
        // 总营收金额 = sum(支付金额 - 退款金额) + 逾期金额
        long baseRevenue = orders.stream()
                .mapToLong(o -> {
                    long total = o.getTotalAmount() != null ? o.getTotalAmount() : 0L;
                    long pay = o.getPayAmount() != null ? o.getPayAmount() : 0L;
                    long refund = o.getRefundAmount() != null ? o.getRefundAmount() : 0L;
                    return total - refund;
                    return pay - refund;
                }).sum();
        vo.setTotalRevenue(totalRevenue);
        // 查询该门店参与的逾期费用(从other_orders表获取,type=2已支付)
        QueryWrapper<OtherOrders> overdueQw = new QueryWrapper<>();
        overdueQw.lambda()
                .eq(OtherOrders::getDeleted, Constants.ZERO)
                .eq(OtherOrders::getType, Constants.TWO)
                .eq(OtherOrders::getPayStatus, Constants.ONE)
                .inSql(OtherOrders::getOrderId,
                        "SELECT id FROM orders WHERE DELETED = 0 AND (DEPOSIT_SHOP_ID = " + shopId + " OR TAKE_SHOP_ID = " + shopId + ")");
        if (query.getStartDate() != null) {
            overdueQw.lambda().ge(OtherOrders::getCreateTime, query.getStartDate());
        }
        if (query.getEndDate() != null) {
            overdueQw.lambda().le(OtherOrders::getCreateTime, Utils.Date.getEnd(query.getEndDate()));
        }
        List<OtherOrders> overdueOrders = otherOrdersMapper.selectList(overdueQw);
        long overdueTotal = overdueOrders.stream()
                .mapToLong(o -> o.getPayAccount() != null ? o.getPayAccount() : 0L)
                .sum();
        vo.setTotalRevenue(baseRevenue + overdueTotal);
        // 门店分成金额
        long shopFee = 0L;