uni-app 基于uni-id的任务积分插件

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app 基于uni-id的任务积分插件

希望官方能出个通用的,任务发布、签到积分什么的

3 回复

专业团队承接双端(Android,iOS)原生插件开发,uni-app外包开发。
团队接受uni-app付费技术咨询,可远程调试。
QQ:1559653449 微信:fan-rising

在uni-app中,基于uni-id实现任务积分插件可以方便地进行用户积分管理和任务完成记录。下面是一个简单的示例代码,展示如何搭建一个基本的任务积分系统。

1. 安装uni-id

首先,确保你已经安装了uni-id,这是DCloud官方提供的用户身份识别与鉴权服务。如果还没有安装,可以通过以下命令安装:

npm install @dcloudio/uni-id

2. 初始化uni-id

在你的main.js中初始化uni-id:

import uniId from '@dcloudio/uni-id';

uniId.initialize({
    client_id: 'your-client-id', // 替换为你的uni-id应用的client_id
    server_url: 'https://uni-id.dcloud.io.net', // 替换为你的uni-id服务端地址
    ...
});

3. 创建任务积分数据库

在uni-app项目中,你可以使用uniCloud的数据库来存储任务信息和用户积分。以下是一个简单的数据库表结构示例:

// tasks 表
{
    "collection": "tasks",
    "fields": [
        {
            "name": "_id",
            "type": "string",
            "primary": true
        },
        {
            "name": "title",
            "type": "string"
        },
        {
            "name": "points",
            "type": "number"
        }
    ]
}

// users 表
{
    "collection": "users",
    "fields": [
        {
            "name": "_id",
            "type": "string",
            "primary": true
        },
        {
            "name": "uni_id",
            "type": "string"
        },
        {
            "name": "points",
            "type": "number"
        }
    ]
}

4. 实现任务积分逻辑

以下是一个简单的示例,展示如何完成任务并更新用户积分:

// 云函数:completeTask
const db = uniCloud.database();

exports.main = async (event, context) => {
    const { taskId, userId } = event;
    
    // 获取任务信息
    const task = await db.collection('tasks').doc(taskId).get();
    if (!task.result.data[0]) {
        return { success: false, message: 'Task not found' };
    }
    
    // 更新用户积分
    const user = await db.collection('users').doc(userId).get();
    if (user.result.data[0]) {
        await db.collection('users').doc(userId).update({
            data: {
                points: db.command.inc(task.result.data[0].points)
            }
        });
    } else {
        await db.collection('users').add({
            data: {
                _id: userId,
                uni_id: userId,
                points: task.result.data[0].points
            }
        });
    }
    
    return { success: true, message: 'Task completed successfully' };
};

以上代码展示了如何在uni-app中基于uni-id和uniCloud数据库实现一个简单的任务积分插件。你可以根据实际需求进一步扩展和优化这个系统。

回到顶部