fix(borrow,outbound): 普通用户记录只看本人——按领用人/借用人姓名(不含账号前缀)匹配
- 出库记录/借还记录:非管理者视角时按 领用人(consumer_name)/借用人(borrower_name) 过滤 - 匹配取登录名 username.split(/)[0] 的姓名;兼容库里存“姓名/xiaolongxia”全名(姓名+/前缀) - 修复:管理员替员工创建、领用人=员工 的单,员工登录可见
This commit is contained in:
@ -410,7 +410,7 @@ class TransService:
|
||||
raise e
|
||||
|
||||
@staticmethod
|
||||
def get_records(page=1, limit=10, status='all', keyword=None, search_type='all'):
|
||||
def get_records(page=1, limit=10, status='all', keyword=None, search_type='all', borrower_name=None):
|
||||
"""
|
||||
获取借还记录列表(按单号 borrow_no 维度分页,避免明细撑爆 pageSize)
|
||||
|
||||
@ -648,6 +648,22 @@ class TransService:
|
||||
# ====================================================================
|
||||
borrow_no_q = db.session.query(order_subq.c.borrow_no)
|
||||
|
||||
# ★ 数据权限:普通用户只看“借用人=本人姓名(不含账号前缀)”的借还记录;
|
||||
# 兼容库里存成“姓名/xiaolongxia”全名(姓名 + '/' 前缀)的情况
|
||||
if borrower_name:
|
||||
own_borrow_nos_subq = (
|
||||
db.session.query(TransBorrow.borrow_no)
|
||||
.filter(or_(
|
||||
TransBorrow.borrower_name == borrower_name,
|
||||
TransBorrow.borrower_name.like(f"{borrower_name}/%")
|
||||
))
|
||||
.distinct()
|
||||
.subquery()
|
||||
)
|
||||
borrow_no_q = borrow_no_q.filter(
|
||||
order_subq.c.borrow_no.in_(own_borrow_nos_subq)
|
||||
)
|
||||
|
||||
# 关键词过滤
|
||||
if keyword_borrow_nos_subq is not None:
|
||||
borrow_no_q = borrow_no_q.filter(
|
||||
|
||||
Reference in New Issue
Block a user