之前我们做的拼图小游戏,一直都没有增加排行榜这个功能,很多小游戏都有这个功能,今天我们就来增加下这个小功能。废话少说,下面直接开始。
1. 要在后台提供一个接口来显示排名靠前的数据。
(1)先建一个数据表用来存储用户最好成绩。登录服务器终端。
(2)进入后台项目的根目录。
(3)创建迁移工具文件
php think migrate:create UserScore
(4)在database/migrations 文件夹下找到刚才创建的迁移文件
20230630045005_user_score.php进行编辑
` public function change()
{
$table = $this->table('user_score',array('engine'=>'MyISAM'));
$table->addColumn('nickname','string',array('limit'=>15,'default'=>'','comment'=>'昵称'))
->addColumn('avatar', 'string',array('default'=>'','comment'=>'用户头像'))
->addColumn('openid', 'string',array('default'=>'','comment'=>'openid'))
->addColumn('score', 'string',array('default'=>'','comment'=>'分数'))
->addColumn('updated_at', 'datetime',array('default'=>0,'comment'=>'更新时间'))
->addColumn('created_at', 'datetime',array('default'=>0,'comment'=>'创建时间'))
->create();
}`
(5)执行迁移工具 php think migrate:run
(6)在数据库里可以看到我们刚才创建的数据表了
2. (1)我们打开后台的项目。在model文件夹下新建一个UserScore模型文件
(2)增加rules和attrLabels方法
`<?php
declare (strict_types = 1);
namespace app\admin\model;
use quick\admin\http\model\Model;
/**
* Class UserScore
*
*
* @package app\admin\model
*/
class UserScore extends Model
{
/**
* 验证规则
* @return array
*/
protected function rules(): array
{
return [
'id' => 'integer',
'nickname' => 'require|max:255',
'score' => 'require',
'is_delete' => 'require|integer',
];
}
/**
* @return array
*/
protected function attrLabels(): array
{
return [
'id' => 'id',
'nickname' => '昵称',
'avatar' => '头像',
'openid' => 'openid',
'score' => '分数',
'updated_at' => '更新时间',
'created_at' => '创建时间',
'is_delete' => '删除状态,1已删除',
];
}
}`
(2)打开api控制器,引入UserScore模型。
(3)增加addscore方法
` /**
* @AdminAuth(auth=false,menu=false,login=false,title="Index")
*/
public function addscore(){
try {
$res = request();
// 添加合适的验证逻辑
$model = new UserScore();
$model->nickname = $res['nickname'];
$model->score = $res['score'];
$model->openid = $res['openid'];
$model->is_delete = 0;
$model->save();
return json([
'code' => 0,
'data' => $model->toArray(),
]);
} catch (Exception $e) {
// 处理异常,返回合适的错误信息
return json([
'code' => -1,
'message' => $e->getMessage()
]);
}
}`
(4)在接口测试工具测试下,没问题
好了,今天就先介绍到这里了。只是简单地添加了一个接口,没有做安全认证,后面有时间再加上。可能写的过程中还有很多不好的地方,希望大家能指出来,在此,谢谢大家