Skip to content

Commit

Permalink
project and question api develop
Browse files Browse the repository at this point in the history
  • Loading branch information
guoshijiang committed Mar 13, 2024
1 parent 14e907c commit c99dd29
Show file tree
Hide file tree
Showing 6 changed files with 217 additions and 16 deletions.
18 changes: 16 additions & 2 deletions airdrop/admin.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,29 @@
#encoding=utf-8
# encoding=utf-8

from django.contrib import admin
from airdrop.models import (
AirdropUser,
PointsRecord
PointsRecord,
ProjectInterAction,
Questions
)


@admin.register(AirdropUser)
class AddressAmountStatAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'address', 'points')


@admin.register(PointsRecord)
class ChainAdmin(admin.ModelAdmin):
list_display = ('id', 'address', 'type', 'points')


@admin.register(ProjectInterAction)
class ChainAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'describe', 'language', 'type', 'max_points')


@admin.register(Questions)
class ChainAdmin(admin.ModelAdmin):
list_display = ('id', 'question', 'answer', 'language')
38 changes: 36 additions & 2 deletions airdrop/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated by Django 4.1.1 on 2024-03-13 05:36
# Generated by Django 4.1.1 on 2024-03-13 08:28

from django.db import migrations, models
import django.db.models.deletion
Expand Down Expand Up @@ -36,15 +36,49 @@ class Migration(migrations.Migration):
'verbose_name_plural': 'User',
},
),
migrations.CreateModel(
name='ProjectInterAction',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('uuid', models.CharField(blank=True, max_length=100, null=True, unique=True)),
('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
('updated_at', models.DateTimeField(auto_now=True, db_index=True)),
('name', models.CharField(max_length=100, unique=True, verbose_name='交互名称')),
('describe', models.CharField(max_length=200, unique=True, verbose_name='交互描述')),
('language', models.CharField(choices=[('zh', 'zh'), ('en', 'en')], default='en', max_length=100, verbose_name='语言')),
('type', models.CharField(choices=[('Social', 'Social'), ('Project', 'Project')], default='Project', max_length=100, verbose_name='项目类型')),
('max_points', models.PositiveIntegerField(default=0, verbose_name='最大积分数')),
],
options={
'verbose_name': 'ProjectInterAction',
'verbose_name_plural': 'ProjectInterAction',
},
),
migrations.CreateModel(
name='Questions',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('uuid', models.CharField(blank=True, max_length=100, null=True, unique=True)),
('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
('updated_at', models.DateTimeField(auto_now=True, db_index=True)),
('question', models.CharField(max_length=200, unique=True, verbose_name='交互名称')),
('answer', models.CharField(max_length=500, unique=True, verbose_name='交互名称')),
('language', models.CharField(choices=[('zh', 'zh'), ('en', 'en')], default='en', max_length=100, verbose_name='语言')),
],
options={
'verbose_name': 'Questions',
'verbose_name_plural': 'Questions',
},
),
migrations.CreateModel(
name='PointsRecord',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('uuid', models.CharField(blank=True, max_length=100, null=True, unique=True)),
('created_at', models.DateTimeField(auto_now_add=True, db_index=True)),
('updated_at', models.DateTimeField(auto_now=True, db_index=True)),
('type', models.CharField(choices=[('Invite', 'Invite'), ('BridgeTransfer', 'BridgeTransfer'), ('BridgeStaking', 'BridgeStaking')], default='BridgeTransfer', max_length=100, verbose_name='积分类型')),
('address', models.CharField(max_length=100, verbose_name='用户地址')),
('type', models.CharField(choices=[('Invite', 'Invite'), ('BridgeTransfer', 'BridgeTransfer'), ('BridgeStaking', 'BridgeStaking')], default='BridgeTransfer', max_length=100, verbose_name='交易类别')),
('points', models.PositiveIntegerField(default=0, verbose_name='积分数量')),
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='airdrop_user', to='airdrop.airdropuser', verbose_name='收藏的商家')),
],
Expand Down
97 changes: 90 additions & 7 deletions airdrop/models.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
from django.db import models
from common.models import BaseModel, Asset


TypeChoice = [(x, x) for x in ['Invite', 'BridgeTransfer', 'BridgeStaking']]

LanguageChoice = [(x, x) for x in ['zh', 'en']]

ProjectChoice = [(x, x) for x in ['Social', 'Project']]


class AirdropUser(BaseModel):
name = models.CharField(
Expand Down Expand Up @@ -102,16 +105,16 @@ class PointsRecord(BaseModel):
null=True,
verbose_name="收藏的商家",
)
address = models.CharField(
max_length=100,
unique=False,
verbose_name='用户地址'
)
type = models.CharField(
max_length=100,
choices=TypeChoice,
default="BridgeTransfer",
verbose_name='交易类别'
verbose_name='积分类型'
)
address = models.CharField(
max_length=100,
unique=False,
verbose_name='用户地址'
)
points = models.PositiveIntegerField(
default=0,
Expand All @@ -132,3 +135,83 @@ def as_dict(self):
'type': self.type,
'points': self.points
}


class ProjectInterAction(BaseModel):
name = models.CharField(
max_length=100,
unique=True,
verbose_name='交互名称'
)
describe = models.CharField(
max_length=200,
unique=True,
verbose_name='交互描述'
)
language = models.CharField(
max_length=100,
choices=LanguageChoice,
default="en",
verbose_name='语言'
)
type = models.CharField(
max_length=100,
choices=ProjectChoice,
default="Project",
verbose_name='项目类型'
)
max_points = models.PositiveIntegerField(
default=0,
verbose_name="最大积分数"
)

class Meta:
verbose_name = 'ProjectInterAction'
verbose_name_plural = verbose_name

def __str__(self):
return self.name

def as_dict(self):
return {
'id': self.id,
'name': self.name,
'describe': self.describe,
'type': self.type,
'language': self.language,
'points': self.max_points,
}


class Questions(BaseModel):
question = models.CharField(
max_length=200,
unique=True,
verbose_name='交互名称'
)
answer = models.CharField(
max_length=500,
unique=True,
verbose_name='交互名称'
)
language = models.CharField(
max_length=100,
choices=LanguageChoice,
default="en",
verbose_name='语言'
)

class Meta:
verbose_name = 'Questions'
verbose_name_plural = verbose_name

def __str__(self):
return self.question

def as_dict(self):
return {
'id': self.id,
'question': self.question,
'answer': self.answer,
'language': self.language
}
48 changes: 48 additions & 0 deletions airdrop_api.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,5 +107,53 @@ curl --location 'http://127.0.0.1:8000/api/get_points_record_by_address' \
}
```

## 5. 获取项目信息

接口请求
```
curl --location --request POST 'http://127.0.0.1:8000/api/get_project_interactions' \
--data ''
```
返回值

```
{
"ok": true,
"code": 200,
"result": [
{
"id": 1,
"name": "SavourLabs",
"describe": "SavourLabsSavourLabsSavourLabsSavourLabs",
"type": "Project",
"language": "en",
"points": 0
}
]
}
```

## 6. 获取问答

接口请求
```
curl --location --request POST 'http://127.0.0.1:8000/api/get_questions' \
--data ''
```
返回值

```
{
"ok": true,
"code": 200,
"result": [
{
"id": 1,
"question": "啊啊啊",
"answer": "a a a",
"language": "en"
}
]
}
```

24 changes: 21 additions & 3 deletions api/airdrop/api_v1.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,36 @@
import json
import uuid


from common.helpers import (
ok_json,
error_json
)
from airdrop.models import (
AirdropUser,
PointsRecord
PointsRecord,
ProjectInterAction,
Questions
)


# @check_api_token
def get_project_interactions(request):
pi_lists = ProjectInterAction.objects.all()
pi_ret_lists = []
for pl in pi_lists:
pi_ret_lists.append(pl.as_dict())
return ok_json(pi_ret_lists)


# @check_api_token
def get_questions(request):
question_lists = Questions.objects.all()
question_ret_lists = []
for ql in question_lists:
question_ret_lists.append(ql.as_dict())
return ok_json(question_ret_lists)


# @check_api_token
def get_invite_code_by_address(request):
params = json.loads(request.body.decode())
Expand Down Expand Up @@ -91,4 +110,3 @@ def get_points_record_by_address(request):
"points": point_list,
}
return ok_json(data)

8 changes: 6 additions & 2 deletions api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@
get_points_by_address,
get_points_record_by_address,
get_invite_code_by_address,
submit_invite_info
submit_invite_info,
get_project_interactions,
get_questions
)

urlpatterns = [
Expand Down Expand Up @@ -99,14 +101,16 @@
path(r'get_arcticle_detail', get_arcticle_detail, name='get_arcticle_detail'),
path(r'like_article', like_article, name='like_article'),

# wallethead module
# wallet head module
path(r'get_head', get_head, name='get_head'),
path(r'save_head', save_head, name='save_head'),
path(r'get_recovery_key', get_recovery_key, name='get_recovery_key'),
path(r'set_recovery_key', set_recovery_key, name='set_recovery_key'),
path(r'get_tokens', get_tokens, name='get_tokens'),

# airdrop
path(r'get_project_interactions', get_project_interactions, name='get_project_interactions'),
path(r'get_questions', get_questions, name='get_questions'),
path(r'get_invite_code_by_address', get_invite_code_by_address, name='get_invite_code_by_address'),
path(r'submit_invite_info', submit_invite_info, name='submit_invite_info'),
path(r'get_points_by_address', get_points_by_address, name='get_points_by_address'),
Expand Down

0 comments on commit c99dd29

Please sign in to comment.