GeoController.php
3.5 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
<?php
/**
* Created by PhpStorm.
* User: zhl
* Date: 2025/10/23
* Time: 17:29
*/
namespace App\Http\Controllers\Api;
use App\Models\Geo\GeoConfirm;
use App\Models\Geo\GeoWritings;
use App\Models\Project\Project;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
/**
* GEO相关
* Class GeoController
* @package App\Http\Controllers\Api
*/
class GeoController extends BaseController
{
/**
* 获取确认文章列表
* @param Request $request
* @return false|string
*/
public function getWritingsList(Request $request)
{
try {
$token = trim($request->input('token'));
$param = Crypt::decrypt($token);
if ($param['send_at'] + 86400 < time()) {}
$project_id = $param['project_id'];
} catch (\Exception $e) {
return $this->error('非法请求');
}
$project = Project::select('title', 'version')->where(['project_id' => $this->param['project_id']])->first();
$list = GeoWritings::select(['title', 'status', 'uniqid', 'confirm_at'])->where(['project_id' => $project_id, 'is_del' => GeoWritings::IS_DEL_FALSE])->get();
$result = [
'project' => $project,
'list' => $list
];
return $this->success($result);
}
/**
* 获取详情
* @param Request $request
* @return false|string
*/
public function getWritingsDetail(Request $request)
{
$token = trim($request->input('token'));
$detail = GeoWritings::select(['title', 'content', 'status'])->where(['uniqid' => $token])->first();
return $this->success($detail);
}
/**
* 确认核心文章数据
* @param Request $request
* @return false|string
*/
public function confirmWritings(Request $request)
{
$request->validate([
'token' => 'required',
'title' => 'required|max:120',
'content' => 'required|max:5000'
], [
'token.required' => '非法请求',
'title.required' => '标题不能为空',
'title.max' => '最大长度不能超过120字符',
'content.required' => '内容不能为空',
'content.max' => '内容过长保存失败',
]);
$token = trim($request->input('token'));
$data = GeoWritings::where(['uniqid' => $token])->first();
if (empty($data))
return $this->error('非法请求');
if ($data->status != GeoWritings::STATUS_RUNNING)
return $this->error('当前文章已确认,不可再次确认');
// FIXME 验证完成,保存数据,计算内容长度,处理内容中的资源, IP 确认时间 状态
return $data;
}
/**
* 获取确认数据
* @param Request $request
* @return false|string
*/
public function getConfirm(Request $request)
{
$token = trim($request->input('token'));
$data = GeoConfirm::where(['uniqid' => $token])->first();
if (empty($data))
return $this->error('当前授权已失效');
$content = explode("\n", $data->content);
$confirm = explode("\n", $data->confirm);
$type = $data->type;
$status = $data->status;
$result = compact('content', 'confirm', 'type', 'status');
return $this->success($result);
}
/**
* 保存确认数据
* 验证当前确认数据状态, 不可重复确认
* @param Request $request
*/
public function saveConfirm(Request $request)
{}
}