平台管理后台已有账单管理页面(Billing/billing/index),但商家前端(foodie-store)缺少账单功能。需要为商家前端新增"财务管理"模块,包含账单查询功能。
| userType | 角色 | 账单可见范围 |
|---|---|---|
| 1 | 商家 | 自己名下所有门店的账单(user_id 查询,可选按 mdId 筛选) |
| 4 | 摊位主/门店 | 仅自己关联门店的账单(md_id 过滤) |
| 5 | 商家分管账号 | 所属主账号下当前授权门店的账单,列表与汇总范围一致 |
已有 md_id 字段,账单记录创建时会写入门店 ID。
| type | 含义 |
|---|---|
| 0 | 分成(收入) |
| 1 | 充值 |
| 2 | 提现 |
| 3 | 消费 |
| 4 | 金额冻结 |
| 5 | 金额解冻 |
| 6 | 抽成返还 |
| state | 含义 |
|---|---|
| 0 | 完成 |
| 1 | 退回 |
| 2 | 作废 |
| 3 | 未支付 |
参数:
mdId(可选)— 按门店筛选type(可选)— 账单类型startDate / endDate(可选)— 时间范围pageNum / pageSize — 分页权限逻辑:
user_billing WHERE user_id = 当前用户,可选按 mdId 筛选info_user.store_id 获取门店 → 查 user_billing WHERE md_id = 门店ID返回:分页账单列表 + 门店信息
参数同上。
返回:{ totalAmount, totalDivvy, netIncome }
现有 getzddaylist、getzdmeeklist、getzdmatlist 查询需增加 mdId 可选过滤条件。
新增参数:
mdId(可选)— 按门店筛选影响范围:
UserBillingMapper.getdaylist — SQL 增加 (#{mdId} IS NULL OR md_id = #{mdId})UserBillingMapper.getdaysum — SQL 增加 (#{mdId} IS NULL OR md_id = #{mdId})UserBillingMapper.getShDaysum — SQL 增加 (#{mdId} IS NULL OR b.md_id = #{mdId})新增参数:
mdId(可选)— 按门店筛选影响范围:
UserBillingMapper.getmeeklist — SQL 增加 (#{mdId} IS NULL OR md_id = #{mdId})UserBillingMapper.getmeeksum — SQL 增加 (#{mdId} IS NULL OR md_id = #{mdId})UserBillingMapper.getShMeeksum — SQL 增加 (#{mdId} IS NULL OR b.md_id = #{mdId})新增参数:
mdId(可选)— 按门店筛选影响范围:
UserBillingMapper.getmatlist — SQL 增加 (#{mdId} IS NULL OR md_id = #{mdId})UserBillingMapper.getmatsum — SQL 增加 (#{mdId} IS NULL OR md_id = #{mdId})UserBillingMapper.getshMonthsum — SQL 增加 (#{mdId} IS NULL OR b.md_id = #{mdId})财务管理
└── 账单管理
筛选条件
汇总区域
账单列表表格
权限区分
E:\QtwCode\foodie\foodie-storeE:\QtwCode\foodie\foodie-admin-vue\src\views\Billing\billing\index.vue| 接口 | 状态 | 说明 |
|---|---|---|
GET /billing/storeBillingList |
已完成 | 商家端账单列表,分页、筛选、权限逻辑 |
GET /billing/storeBillingSummary |
已完成 | 账单汇总,返回 totalAmount/totalDivvy/netIncome |
GET /billing/getzddaylist |
已完成 | 日账单,支持 mdId 可选过滤 |
GET /billing/getzdmeeklist |
已完成 | 周账单,支持 mdId 可选过滤 |
GET /billing/getzdmatlist |
已完成 | 月账单,支持 mdId 可选过滤 |
ruoyi-admin/src/main/java/com/ruoyi/app/pay/UserBillingController.java — 控制器ruoyi-system/src/main/java/com/ruoyi/system/mapper/UserBillingMapper.java — Mapper SQLmdId 过滤采用 (#{mdId} IS NULL OR md_id = #{mdId}) 模式,mdId 不传时查询全部数据,传入时按门店过滤。涉及 join 查询的方法使用表别名前缀 b.md_id。
sys_qs_freight_bl 扣税费。旧的用户抽成比例、商家分成配置和骑手税率配置不参与本次结算。amount - customerDeliveryFee;旧订单按原商品金额及商家优惠口径。该金额全额入账,摊位仍入摊位钱包。freight 全额入账,到付代收金额和账单防重复规则保持。闪送含小费全额收入、自配送运费全额收入沿用现有实现。divvy=0、divvyRate=0;骑手另记 tax=0、taxRate="0"。商家账单响应当前 commissionRate=0,骑手响应当前 taxRate="0"。历史明细及汇总仍读取原账单,不抹除历史扣款事实。新增 GET /app/dict/data?dictType=sys_billing_type,商家及用户端共用 token 请求头,使用现有客户端会话认证。用户明确确认允许已登录客户端查询任意字典类型,不增加类型白名单。只返回启用项,复用现有缓存及排序;返回 dictLabel、dictValue、dictSort、isDefault,不返回后台审计字段。缺失、空白或超过100字符的类型返回国际化业务错误;不存在或无启用项返回空数组。标签使用后台维护原文,不自动翻译或改写类型5的业务含义。本增量仅提供共用接口,不改商家页面或字典数据。
GET /Billing/billing/storeBillingList 和 /storeBillingSummary 支持商家分管账号 userType=5,token 和请求/响应字段不变。MerchantStoreAccessService.resolve 校验分管账号、主账号状态及当前门店授权;账单限定 user_id=ownerUserId 且 md_id 在授权门店内。传入 mdId 必须属于授权集合;未传时仅汇总/查询授权门店。getzddaylist/getzdmeeklist/getzdmatlist 对 userType=5 解析主账号及实时授权门店;不传 mdId 查询全部授权门店,指定未授权门店拒绝。明细、金额/商品汇总、取消订单列表及数量使用相同范围,空授权查询零行。原普通商家/夜市/摊主/骑手路径不变,无数据库迁移。
/Billing/billing/riderIncome 与 /Billing/billing/riderIncome/{billId},旧共用账单接口保持不变。