@staff_bl.route('/list', methods=['GET'])
def staff_list():
page = request.args.get('page', 1, type=int)
page_size = request.args.get('pageSize', 10, type=int)
department_id = request.args.get('department_id')
realname = request.args.get('realname')
date_joined = request.args.get('date_joined')
filter_attr = {}
if department_id:
filter_attr['department_id'] = department_id
if realname:
filter_attr['realname'] = realname
try:
query = User.query.filter_by(**filter_attr)
# 过滤日期范围
if date_joined:
try:
# 将字符串日期转换为 datetime 对象
# list(eval(date_joined)将字符串转化为list
start_date = datetime.strptime(list(eval(date_joined))[0], '%Y-%m-%d')
end_date = datetime.strptime(list(eval(date_joined))[1], '%Y-%m-%d')
# 设置 end_date 为当天的 23:59:59
end_date = end_date.replace(hour=23, minute=59, second=59)
# 过滤 date_joined 在指定日期范围内的记录
query = query.filter(User.date_joined.between(start_date, end_date))
except ValueError as e:
print(e)
return my_response(code=400, msg="日期格式错误,正确格式为 YYYY-MM-DD")
paginated_query = query.paginate(page=page, per_page=page_size, error_out=False)
# 序列化数据
staffs_list = staff_out_schema.dump(paginated_query.items, many=True)
# 返回分页信息
return my_response(
code=200,
msg='获取员工列表成功!',
data={
'items': staffs_list, # 当前页数据
'total': paginated_query.total, # 总记录数
'pages': paginated_query.pages, # 总页数
'current_page': paginated_query.page, # 当前页
}
)
except Exception as e:
return my_response(code=500, msg=str(e))
04-28
2980
09-21
1699