2.4 KiB
2.4 KiB
Implementation — 修改登录并新增后台统计接口
已完成改动
- 登录逻辑:
WxCheckMvc/Controllers/LoginController.cs
- 修改点:在
Login方法中,原来的存在用户分支不做更改;现在在判断count != 0(用户存在)分支下新增:
using (MySqlCommand updateCmd = new MySqlCommand("UPDATE xcx_users SET UpdateTime = NOW() WHERE UserKey = @UserKey", _connection))
{
updateCmd.Parameters.AddWithValue("@UserKey", openId);
await updateCmd.ExecuteNonQueryAsync();
}
- 目的:显式写入
UpdateTime,表示用户在本次登录调用中活跃。
- 新增统计接口:
WxCheckMvc/Controllers/AdminController.cs
-
新增方法
QueryStats()(GET):- ActiveUsers:SELECT COUNT(1) FROM xcx_users WHERE UpdateTime >= DATE_SUB(NOW(), INTERVAL 7 DAY) AND UserKey <> '' AND PhoneNumber <> ''
- TotalConversations:SELECT COUNT(1) FROM xcx_conversation
- TodayNewConversations:SELECT COUNT(1) FROM xcx_conversation WHERE CreateTime >= CURDATE() AND CreateTime < DATE_ADD(CURDATE(), INTERVAL 1 DAY)
- TotalUsers:SELECT COUNT(1) FROM xcx_users WHERE UserKey <> '' AND PhoneNumber <> ''
-
返回 DTO:
AdminStatsResponse { long ActiveUsers, long TotalConversations, long TodayNewConversations, long TotalUsers }。
- 前端首页统计卡片改造:
admin-web/src/views/Home.vue
- 修改点:首页不再通过
QueryUsers/QueryConversations拉全量数据后在前端计算统计值;改为直接调用GET /api/Admin/QueryStats。 - 映射关系:
- 活跃用户卡片:
ActiveUsers - 会话记录卡片:
TotalConversations - 总用户数卡片:
TotalUsers - 今日新增会话卡片:
TodayNewConversations
- 活跃用户卡片:
测试与验证建议
- 本地运行
dotnet build:确认编译通过。 - 使用 Postman / curl 调用
POST /api/Login/Login(传入可换取 openid 的code或在测试中直接模拟 openid),确认在用户存在时UpdateTime被修改。 - 调用
GET /api/Admin/QueryStats验证返回结构并和数据库结果比对。 - 访问管理端首页,确认四张统计卡片展示值与接口返回一致。
备注
xcx_users.UpdateTime已在数据库 schema 中定义为DEFAULT current_timestamp() ON UPDATE CURRENT_TIMESTAMP,因此显式UPDATE是可行且语义明确的(无迁移需求)。- 建议后续将统计接口限制为管理员访问(加入
[Authorize(Roles = "Admin")]或使用策略)。