family.js
8.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
/*
* @Date: 2024-01-01 00:00:00
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-09-03 16:51:51
* @FilePath: /lls_program/src/api/family.js
* @Description: 家庭相关接口
*/
import { fn, fetch } from './fn';
const Api = {
SEARCH_BY_PASSPHRASE: '/srv/?a=family&t=search_by_passphrase',
LIST_MY_FAMILIES: '/srv/?a=family&t=list_my_families',
GET_DASHBOARD: '/srv/?a=family&t=get_dashboard',
ADD_FAMILY: '/srv/?a=family&t=add',
EDIT_FAMILY: '/srv/?a=family&t=edit',
JOIN_FAMILY: '/srv/?a=family&t=join',
GET_FAMILY_INFO: '/srv/?a=family&t=get_my_family',
SWITCH_CURRENT_FAMILY: '/srv/?a=family&t=switch_current',
DEL_MEMBER: '/srv/?a=family&t=del_member',
}
/**
* @description: 根据口令搜索家庭
* @param {Object} params - 请求参数
* @param {string} params.passphrase - 家训口令
* @param {number} [params.page=0] - 页码,从0开始
* @param {number} [params.limit=10] - 每页数量
* @returns {Promise} 返回匹配的家庭列表
* @returns {Object} response - 响应对象
* @returns {number} response.code - 响应状态码
* @returns {string} response.msg - 响应消息
* @returns {Array} response.data - 家庭列表
* @returns {number} response.data[].id - 家庭ID
* @returns {string} response.data[].name - 家庭名称
* @returns {string} response.data[].avatar_url - 家庭头像
*/
export const searchFamilyByPassphraseAPI = (params) => fn(fetch.get(Api.SEARCH_BY_PASSPHRASE, params));
/**
* @description: 获取我的家庭列表
* @returns {Promise} 返回当前用户创建和加入的所有家庭列表
* @returns {Object} response - 响应对象
* @returns {string} response.code - 响应状态码
* @returns {string} response.msg - 响应消息
* @returns {Array} response.data - 家庭列表
* @returns {number} response.data[].id - 家庭ID
* @returns {string} response.data[].name - 家庭名称
* @returns {string} response.data[].avatar_url - 家庭头像
* @returns {boolean} response.data[].is_my - 是否是我创建的家庭
* @returns {string} response.data[].created_by_nickname - 创建者昵称
* @returns {string} response.data[].is_current_family - 是否是当前家庭
* @returns {Array} response.data[].users - 家庭成员列表
* @returns {string} response.data[].users[].user_id - 用户ID
* @returns {string} response.data[].users[].role - 角色
* @returns {string} response.data[].users[].avatar_url - 头像
* @returns {string} response.data[].users[].nickname - 昵称
*/
export const getMyFamiliesAPI = () => fn(fetch.get(Api.LIST_MY_FAMILIES));
/**
* @description: 获取家庭首页数据
* @returns {Promise} 返回家庭首页聚合数据
* @returns {Object} response - 响应对象
* @returns {number} response.code - 响应状态码
* @returns {string} response.msg - 响应消息
* @returns {Object} response.data - 家庭首页数据
* @returns {Object} response.data.family - 家庭信息
* @returns {number} response.data.family.id - 家庭ID
* @returns {string} response.data.family.name - 家庭名称
* @returns {string} response.data.family.note - 家庭描述
* @returns {string} response.data.family.avatar_url - 家庭头像
* @returns {number} response.data.family.total_points - 家庭总积分
* @returns {number} response.data.family_today_step - 家庭今日总步数
* @returns {number} response.data.my_today_step - 我今天的步数
* @returns {Array} response.data.pending_points - 等待汇总到家庭的积分
* @returns {number} response.data.pending_points[].id - 积分ID
* @returns {string} response.data.pending_points[].title - 积分标题
* @returns {string} response.data.pending_points[].points - 积分数量
* @returns {string} response.data.pending_points[].source_type - 积分来源 (WALKING=步数, CHECK_IN=参与一次活动打卡, CHECK_IN_COUNT=完成活动打卡次数, FAMILY_SIZE=家庭成员达5人, COMPANION_PHOTO=陪伴拍照, WHEELCHAIR_COMPANION=陪伴轮椅拍照)
* @returns {string} response.data.pending_points[].note - 积分说明
* @returns {Array} response.data.step_ranking - 步数排名
* @returns {string} response.data.step_ranking[].user_id - 用户ID
* @returns {string} response.data.step_ranking[].role - 角色
* @returns {string} response.data.step_ranking[].avatar_url - 头像
* @returns {string} response.data.step_ranking[].today_step - 用户今日步数
*/
export const getFamilyDashboardAPI = (options = {}) => fn(fetch.get(Api.GET_DASHBOARD), options);
/**
* @description: 创建家庭
* @param {Object} params - 请求参数
* @param {string} params.name - 家庭名称
* @param {string} params.county - 所在区县
* @param {string} params.passphrase - 家训口令
* @param {string} params.avatar_url - 家庭头像
* @param {string} params.note - 家庭介绍
* @returns {Promise} 返回创建的家庭ID
* @returns {Object} response - 响应对象
* @returns {string} response.code - 响应状态码
* @returns {string} response.msg - 响应消息
* @returns {Object} response.data - 响应数据
* @returns {number} response.data.family_id - 家庭ID
*/
export const createFamilyAPI = (params) => fn(fetch.post(Api.ADD_FAMILY, params));
/**
* @description: 编辑家庭
* @param {Object} params - 请求参数
* @param {number} params.id - 家庭ID
* @param {string} params.name - 家庭名称
* @param {string} params.county - 所在区县
* @param {string} params.passphrase - 家训口令
* @param {string} params.avatar_url - 家庭头像
* @param {string} params.note - 家庭介绍
* @returns {Promise} 返回编辑结果
* @returns {Object} response - 响应对象
* @returns {string} response.code - 响应状态码
* @returns {string} response.msg - 响应消息
* @returns {Object} response.data - 响应数据
* @returns {number} response.data.family_id - 家庭ID
*/
export const editFamilyAPI = (params) => fn(fetch.post(Api.EDIT_FAMILY, params));
/**
* @description: 加入家庭
* @param {Object} params - 请求参数
* @param {number} params.family_id - 家庭ID
* @param {string} params.role - 角色(如:儿子、女儿等)
* @returns {Promise} 返回加入结果
* @returns {Object} response - 响应对象
* @returns {string} response.code - 响应状态码
* @returns {string} response.msg - 响应消息
*/
export const joinFamilyAPI = (params) => fn(fetch.post(Api.JOIN_FAMILY, params));
/**
* @description: 获取家庭信息
* @returns {Promise} 返回家庭信息
* @returns {Object} response - 响应对象
* @returns {string} response.code - 响应状态码
* @returns {string} response.msg - 响应消息
* @returns {Object} response.data - 响应数据
* @returns {number} response.data.id - 家庭ID
* @returns {string} response.data.name - 家庭名称
* @returns {string} response.data.note - 家庭描述
* @returns {string} response.data.county - 所在区县
* @returns {string} response.data.avatar_url - 家庭头像
* @returns {string} response.data.passphrase - 家庭口令
*/
export const getFamilyInfoAPI = (params) => fn(fetch.post(Api.GET_FAMILY_INFO, params));
/**
* @description: 切换当前家庭
* @param {Object} params - 请求参数
* @param {number} params.family_id - 家庭ID
* @returns {Promise} 返回切换结果
* @returns {Object} response - 响应对象
* @returns {string} response.code - 响应状态码
* @returns {string} response.msg - 响应消息
* @returns {Object} response.data - 响应数据
* @returns {number} response.data.family_id - 家庭ID
*/
export const switchCurrentFamilyAPI = (params) => fn(fetch.post(Api.SWITCH_CURRENT_FAMILY, params));
/**
* @description: 退出或移出家庭成员
* @param {Object} params - 请求参数
* @param {number} params.family_id - 家庭ID
* @param {number|Array} [params.user_ids] - 成员用户ID(主动退出时不传,创建者移出时传递)
* @returns {Promise} 返回操作结果
* @returns {Object} response - 响应对象
* @returns {string} response.code - 响应状态码
* @returns {string} response.msg - 响应消息
*/
export const deleteFamilyMemberAPI = (params) => fn(fetch.post(Api.DEL_MEMBER, params));