该云函数用于处理用户积分的操作,包括积分的增加、扣减,以及相关操作的记录。主要应用场景包括购物赠送积分、退货扣除积分、以及其他积分变动操作。
openid
(string): 用户的 OpenID,用于标识唯一用户。number
(number): 积分变动的数量,可以为正值或负值。mark
(string): 操作类型的标识,例如 “购物赠送”、”退货扣除积分” 等。module
(string): 模块名称,用于标识积分变动的来源模块。moduleId
(string): 模块 ID,配合 module
一起使用。orderId
(string): 订单 ID,必须在 mark
为 “购物赠送” 或 “退货扣除积分” 时提供。id
(string): 用户 ID。如果未提供,则根据 openid
从数据库中获取。success
(boolean): 操作是否成功。error
(string, optional): 错误信息,仅在 success
为 false
时返回。resId
(string, optional): 积分记录的 ID,仅在 success
为 true
时返回。以下情况将导致 success
为 false
并返回相应的 error
信息:
module
和 moduleId
未同时提供或仅提供其一。mark
为 “购物赠送” 或 “退货扣除积分” 时未提供 orderId
。openid
无法找到用户。根据 openid
或 id
确定用户,更新用户的积分余额。
在成功更新用户积分后,记录此次积分操作。
通过数据库事务 (transaction
) 确保用户积分更新和记录添加的一致性。如果任何一步操作失败,整个事务将回滚。
在成功操作后,尝试发送订阅消息通知用户积分变动情况。
touser
: 接收消息的用户 openid
。thing1
: 消息内容描述。number2
: 积分余额。thing3
: 消息提示。character_string8
: 积分变动数量。templateId
: 模板 ID,用于发送订阅消息。page
: 跳转的页面路径。miniprogramState
: 小程序的状态 (如 formal
表示正式版)。cloud.callFunction({
name: 'token',
data: {
openid: 'user-openid',
number: 10,
mark: '购物赠送',
orderId: 'order-123',
module: 'moduleName',
moduleId: 'moduleId-123'
},
success: res => {
console.log('积分操作成功:', res);
},
fail: err => {
console.error('积分操作失败:', err);
}
});