From 18904ebbaad75c3a3fa533edb1e69bc99e79460a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9F=A6=E8=8D=A3=E8=B6=85?= <302645122@qq.com>
Date: Fri, 21 Jan 2022 14:26:17 +0800
Subject: [PATCH] =?UTF-8?q?perf:=20=E8=A7=84=E8=8C=83=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/Http/Controllers/Api/ReportController.php | 147 +++++++++++++-----
app/Models/Report.php | 16 +-
2 files changed, 119 insertions(+), 44 deletions(-)
diff --git a/app/Http/Controllers/Api/ReportController.php b/app/Http/Controllers/Api/ReportController.php
index 46fca857..fd8dc5f1 100755
--- a/app/Http/Controllers/Api/ReportController.php
+++ b/app/Http/Controllers/Api/ReportController.php
@@ -29,8 +29,8 @@ class ReportController extends AbstractController
* @apiGroup report
* @apiName my
*
- * @apiParam {Number} [user] 会员ID
* @apiParam {String} [type] 汇报类型,weekly:周报,daily:日报
+ * @apiParam {Array} [created_at] 汇报时间
* @apiParam {Number} [page] 当前页,默认:1
* @apiParam {Number} [pagesize] 每页显示数量,默认:20,最大:50
*
@@ -63,8 +63,21 @@ class ReportController extends AbstractController
}
/**
- * 我接收的汇报
- * @return array
+ * @api {get} api/report/receive 02. 我接收的汇报
+ *
+ * @apiVersion 1.0.0
+ * @apiGroup report
+ * @apiName receive
+ *
+ * @apiParam {String} [username] 会员名
+ * @apiParam {String} [type] 汇报类型,weekly:周报,daily:日报
+ * @apiParam {Array} [created_at] 汇报时间
+ * @apiParam {Number} [page] 当前页,默认:1
+ * @apiParam {Number} [pagesize] 每页显示数量,默认:20,最大:50
+ *
+ * @apiSuccess {Number} ret 返回状态码(1正确、0错误)
+ * @apiSuccess {String} msg 返回信息(错误描述)
+ * @apiSuccess {Object} data 返回数据
*/
public function receive(): array
{
@@ -99,8 +112,22 @@ class ReportController extends AbstractController
}
/**
- * 保存并发送工作汇报
- * @return array
+ * @api {get} api/report/store 03. 保存并发送工作汇报
+ *
+ * @apiVersion 1.0.0
+ * @apiGroup report
+ * @apiName store
+ *
+ * @apiParam {Number} [id] 汇报ID
+ * @apiParam {String} [title] 汇报标题
+ * @apiParam {Array} [type] 汇报类型,weekly:周报,daily:日报
+ * @apiParam {Number} [content] 内容
+ * @apiParam {Number} [receive] 汇报对象
+ * @apiParam {Number} [offset] 偏移量
+ *
+ * @apiSuccess {Number} ret 返回状态码(1正确、0错误)
+ * @apiSuccess {String} msg 返回信息(错误描述)
+ * @apiSuccess {Object} data 返回数据
*/
public function store(): array
{
@@ -135,12 +162,12 @@ class ReportController extends AbstractController
$user = User::auth();
// 接收人
- if ( is_array($input["receive"]) ) {
+ if (is_array($input["receive"])) {
// 删除当前登录人
$input["receive"] = array_diff($input["receive"], [$user->userid]);
// 查询用户是否存在
- if ( count($input["receive"]) !== User::whereIn("userid", $input["receive"])->count() )
+ if (count($input["receive"]) !== User::whereIn("userid", $input["receive"])->count())
return Base::retError("用户不存在");
foreach ($input["receive"] as $userid) {
@@ -153,7 +180,7 @@ class ReportController extends AbstractController
}
// 在事务中运行
- Report::transaction( function () use ($input, $user) {
+ Report::transaction(function () use ($input, $user) {
$id = $input["id"];
if ($id) {
// 编辑
@@ -188,37 +215,48 @@ class ReportController extends AbstractController
$report->Receives()->createMany($input["receive_content"]);
}
- } );
+ });
return Base::retSuccess('保存成功');
}
/**
- * 生成汇报模板
- * @return array
+ * @api {get} api/report/template 04. 生成汇报模板
+ *
+ * @apiVersion 1.0.0
+ * @apiGroup report
+ * @apiName template
+ *
+ * @apiParam {Array} [type] 汇报类型,weekly:周报,daily:日报
+ * @apiParam {Number} [offset] 偏移量
+ * @apiParam {String} [date] 时间
+ *
+ * @apiSuccess {Number} ret 返回状态码(1正确、0错误)
+ * @apiSuccess {String} msg 返回信息(错误描述)
+ * @apiSuccess {Object} data 返回数据
*/
public function template(): array
{
$user = User::auth();
- $type = trim( Request::input("type") );
- $offset = abs( intval( Request::input("offset", 0) ) );
- $now_dt = trim( Request::input("date") ) ? Carbon::parse( Request::input("date") ) : Carbon::now();
+ $type = trim(Request::input("type"));
+ $offset = abs(intval(Request::input("offset", 0)));
+ $now_dt = trim(Request::input("date")) ? Carbon::parse(Request::input("date")) : Carbon::now();
// 获取开始时间
if ($type === Report::DAILY) {
$start_time = Carbon::today();
- if ( $offset > 0 ) {
+ if ($offset > 0) {
// 将当前时间调整为偏移量当天结束
- $now_dt->subDays( $offset )->endOfDay();
+ $now_dt->subDays($offset)->endOfDay();
// 开始时间偏移量计算
- $start_time->subDays( $offset );
+ $start_time->subDays($offset);
}
$end_time = Carbon::instance($start_time)->endOfDay();
} else {
$start_time = Carbon::now();
- if ( $offset > 0 ) {
+ if ($offset > 0) {
// 将当前时间调整为偏移量当周结束
- $now_dt->subWeeks( $offset )->endOfDay();
+ $now_dt->subWeeks($offset)->endOfDay();
// 开始时间偏移量计算
- $start_time->subWeeks( $offset );
+ $start_time->subWeeks($offset);
}
$start_time->startOfWeek();
$end_time = Carbon::instance($start_time)->endOfWeek();
@@ -270,14 +308,14 @@ class ReportController extends AbstractController
if ($unfinished_task->isNotEmpty()) {
foreach ($unfinished_task as $task) {
empty($task->end_at) || $end_at = Carbon::parse($task->end_at);
- $pre = ( !empty( $end_at ) && $end_at->lt($now_dt) ) ? '[' . Base::Lang('超期') . '] ' : '';
+ $pre = (!empty($end_at) && $end_at->lt($now_dt)) ? '[' . Base::Lang('超期') . '] ' : '';
$unfinishedContent .= '
' . $pre . $task->name . '';
}
} else {
$unfinishedContent = ' ';
}
// 生成标题
- if ( $type === Report::WEEKLY ) {
+ if ($type === Report::WEEKLY) {
$title = $user->nickname . "的周报[" . $start_time->format("m/d") . "-" . $end_time->format("m/d") . "]";
$title .= "[" . $start_time->month . "月第" . $start_time->weekOfMonth . "周]";
} else {
@@ -296,12 +334,22 @@ class ReportController extends AbstractController
}
/**
- * @return array
+ * @api {get} api/report/detail 05. 报告详情
+ *
+ * @apiVersion 1.0.0
+ * @apiGroup report
+ * @apiName detail
+ *
+ * @apiParam {Number} [id] 报告id
+ *
+ * @apiSuccess {Number} ret 返回状态码(1正确、0错误)
+ * @apiSuccess {String} msg 返回信息(错误描述)
+ * @apiSuccess {Object} data 返回数据
*/
public function detail(): array
{
- $id = intval( trim( Request::input("id") ) );
- if (empty( $id ))
+ $id = intval(trim(Request::input("id")));
+ if (empty($id))
return Base::retError("缺少ID参数");
$one = Report::getOne($id);
@@ -309,7 +357,7 @@ class ReportController extends AbstractController
$user = User::auth();
// 标记为已读
- if ( !empty( $one->receivesUser ) ) {
+ if (!empty($one->receivesUser)) {
foreach ($one->receivesUser as $item) {
if ($item->userid === $user->userid && $item->pivot->read === 0) {
$one->receivesUser()->updateExistingPivot($user->userid, [
@@ -323,22 +371,38 @@ class ReportController extends AbstractController
}
/**
- * 获取最后一次提交的接收人
- * @return array
+ * @api {get} api/report/last_submitter 06. 获取最后一次提交的接收人
+ *
+ * @apiVersion 1.0.0
+ * @apiGroup report
+ * @apiName last_submitter
+ *
+ * @apiSuccess {Number} ret 返回状态码(1正确、0错误)
+ * @apiSuccess {String} msg 返回信息(错误描述)
+ * @apiSuccess {Object} data 返回数据
*/
public function last_submitter(): array
{
$one = Report::getLastOne();
- return Base::retSuccess("success", empty( $one["receives"] ) ? [] : $one["receives"]);
+ return Base::retSuccess("success", empty($one["receives"]) ? [] : $one["receives"]);
}
/**
- * 获取未读
- * @return array
+ * @api {get} api/report/unread 07. 获取未读
+ *
+ * @apiVersion 1.0.0
+ * @apiGroup report
+ * @apiName unread
+ *
+ * @apiParam {Number} [userid] 用户id
+ *
+ * @apiSuccess {Number} ret 返回状态码(1正确、0错误)
+ * @apiSuccess {String} msg 返回信息(错误描述)
+ * @apiSuccess {Object} data 返回数据
*/
public function unread(): array
{
- $userid = intval( trim( Request::input("userid") ) );
+ $userid = intval(trim(Request::input("userid")));
$user = empty($userid) ? User::auth() : User::find($userid);
$data = Report::whereHas("Receives", function (Builder $query) use ($user) {
@@ -348,18 +412,27 @@ class ReportController extends AbstractController
}
/**
- * 标记汇报已读,可批量
- * @return array
+ * @api {get} api/report/read 08. 标记汇报已读,可批量
+ *
+ * @apiVersion 1.0.0
+ * @apiGroup report
+ * @apiName read
+ *
+ * @apiParam {String} [ids] 报告id
+ *
+ * @apiSuccess {Number} ret 返回状态码(1正确、0错误)
+ * @apiSuccess {String} msg 返回信息(错误描述)
+ * @apiSuccess {Object} data 返回数据
*/
public function read(): array
{
$user = User::auth();
$ids = Request::input("ids");
- if ( !is_array($ids) && !is_string($ids) ) {
+ if (!is_array($ids) && !is_string($ids)) {
return Base::retError("请传入正确的工作汇报Id");
}
- if ( is_string($ids) ) {
+ if (is_string($ids)) {
$ids = explode(",", $ids);
}
@@ -367,7 +440,7 @@ class ReportController extends AbstractController
$query->where("report_receives.userid", $user->userid)->where("read", 0);
}])->whereIn("id", $ids)->get();
- if ( $data->isNotEmpty() ) {
+ if ($data->isNotEmpty()) {
foreach ($data as $item) {
(!empty($item->receivesUser) && $item->receivesUser->isNotEmpty()) && $item->receivesUser()->updateExistingPivot($user->userid, [
"read" => 1,
diff --git a/app/Models/Report.php b/app/Models/Report.php
index 5b04efe8..100ba10a 100644
--- a/app/Models/Report.php
+++ b/app/Models/Report.php
@@ -21,24 +21,26 @@ use JetBrains\PhpStorm\Pure;
* @property string $title 标题
* @property string $type 汇报类型
* @property int $userid
- * @property string|null $content
+ * @property string $content
+ * @property string $sign 汇报唯一标识
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ReportReceive[] $Receives
+ * @property-read int|null $receives_count
+ * @property-read mixed $receives
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\User[] $receivesUser
+ * @property-read int|null $receives_user_count
+ * @property-read \App\Models\User|null $sendUser
* @method static Builder|Report newModelQuery()
* @method static Builder|Report newQuery()
* @method static Builder|Report query()
* @method static Builder|Report whereContent($value)
* @method static Builder|Report whereCreatedAt($value)
* @method static Builder|Report whereId($value)
+ * @method static Builder|Report whereSign($value)
* @method static Builder|Report whereTitle($value)
* @method static Builder|Report whereType($value)
* @method static Builder|Report whereUpdatedAt($value)
* @method static Builder|Report whereUserid($value)
* @mixin \Eloquent
- * @property string $sign 汇报唯一标识
- * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ReportReceive[] $Receives
- * @property-read int|null $receives_count
- * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\User[] $receivesUser
- * @property-read int|null $receives_user_count
- * @method static Builder|Report whereSign($value)
*/
class Report extends AbstractModel
{