feat(light): 添加获取用户脚本及回答数据的接口
新增获取用户LightPanel脚本数据并填充回答值的接口,用于展示用户在各脚本中的回答情况
This commit is contained in:
@@ -61,3 +61,53 @@ async def get_answers_by_user(user_id: str):
|
|||||||
return success_response(data={}, message=f"未找到用户{user_id}的灯牌数据")
|
return success_response(data={}, message=f"未找到用户{user_id}的灯牌数据")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return error_response(message=f"获取用户灯牌数据失败: {str(e)}", code=500)
|
return error_response(message=f"获取用户灯牌数据失败: {str(e)}", code=500)
|
||||||
|
|
||||||
|
|
||||||
|
@light_router.get("/user-scripts/{user_id}", response_model=ResponseModel[List[Dict[str, Any]]])
|
||||||
|
async def get_user_scripts_with_answers(user_id: str):
|
||||||
|
"""
|
||||||
|
获取所有LightPanel脚本数据,并根据用户的回答数据填充每个指标的值
|
||||||
|
|
||||||
|
Args:
|
||||||
|
user_id (str): 用户的customer_wechat_id
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
ResponseModel: 包含所有脚本数据及用户回答的统一响应格式
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# 获取所有脚本数据
|
||||||
|
scripts = fetch_all_lightpanel_scripts()
|
||||||
|
|
||||||
|
# 获取用户回答数据
|
||||||
|
user_answers = get_answers_by_user_id(user_id)
|
||||||
|
|
||||||
|
# 如果没有用户回答数据,初始化为空字典
|
||||||
|
if user_answers is None:
|
||||||
|
user_answers = {}
|
||||||
|
|
||||||
|
# 构建结果数据
|
||||||
|
result = []
|
||||||
|
for script in scripts:
|
||||||
|
# 复制脚本数据
|
||||||
|
script_data = script.copy()
|
||||||
|
|
||||||
|
# 获取该脚本的code
|
||||||
|
code = script_data.get("code")
|
||||||
|
|
||||||
|
# 如果用户有该脚本的回答数据,则填充;否则设置为空字符串
|
||||||
|
if code in user_answers and user_answers[code]:
|
||||||
|
answer_data = user_answers[code]
|
||||||
|
script_data["value"] = answer_data.get("value", "")
|
||||||
|
script_data["collected_at"] = answer_data.get("collected_at", "")
|
||||||
|
script_data["source"] = answer_data.get("source", "")
|
||||||
|
else:
|
||||||
|
# 如果没有对应的回答数据,设置为空字符串
|
||||||
|
script_data["value"] = ""
|
||||||
|
script_data["collected_at"] = ""
|
||||||
|
script_data["source"] = ""
|
||||||
|
|
||||||
|
result.append(script_data)
|
||||||
|
|
||||||
|
return success_response(data=result, message=f"成功获取用户{user_id}的脚本数据")
|
||||||
|
except Exception as e:
|
||||||
|
return error_response(message=f"获取用户脚本数据失败: {str(e)}", code=500)
|
||||||
|
|||||||
Reference in New Issue
Block a user