合并优化
This commit is contained in:
@@ -497,7 +497,6 @@ class DialogController extends AbstractController
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @api {get} api/dialog/msg/mark 13. 消息标记操作
|
||||
*
|
||||
@@ -530,23 +529,7 @@ class DialogController extends AbstractController
|
||||
->whereReadAt(null)
|
||||
->whereDialogId($dialogId)
|
||||
->chunkById(100, function ($list) {
|
||||
/** @var WebSocketDialogMsgRead $item */
|
||||
$dialogMsg = [];
|
||||
foreach ($list as $item) {
|
||||
$item->read_at = Carbon::now();
|
||||
$item->save();
|
||||
if (isset($dialogMsg[$item->msg_id])) {
|
||||
$dialogMsg[$item->msg_id]['re']++;
|
||||
} else {
|
||||
$dialogMsg[$item->msg_id] = [
|
||||
'ob' => $item->webSocketDialogMsg,
|
||||
're' => 1
|
||||
];
|
||||
}
|
||||
}
|
||||
foreach ($dialogMsg as $item) {
|
||||
$item['ob']?->generatePercentage($item['re']);
|
||||
}
|
||||
WebSocketDialogMsgRead::onlyMarkRead($list);
|
||||
});
|
||||
$dialogUser->is_mark_unread = 0;
|
||||
$dialogUser->save();
|
||||
@@ -560,6 +543,9 @@ class DialogController extends AbstractController
|
||||
default:
|
||||
return Base::retError("参数错误");
|
||||
}
|
||||
return Base::retSuccess("success");
|
||||
return Base::retSuccess("success", [
|
||||
'id' => $dialogId,
|
||||
'is_mark_unread' => $dialogUser->is_mark_unread,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -894,6 +894,9 @@ class ProjectController extends AbstractController
|
||||
* - all:所有
|
||||
* - yes:已归档
|
||||
* - no:未归档(默认)
|
||||
* @apiParam {String} [deleted] 是否读取已删除
|
||||
* - yes:是
|
||||
* - no:否(默认)
|
||||
* @apiParam {Object} sorts 排序方式
|
||||
* - sorts.complete_at 完成时间:asc|desc
|
||||
* - sorts.archived_at 归档时间:asc|desc
|
||||
@@ -916,7 +919,7 @@ class ProjectController extends AbstractController
|
||||
$time_before = Request::input('time_before');
|
||||
$complete = Request::input('complete', 'all');
|
||||
$archived = Request::input('archived', 'no');
|
||||
$deleted = Request::input('deleted');
|
||||
$deleted = Request::input('deleted', 'no');
|
||||
$keys = Request::input('keys');
|
||||
$sorts = Request::input('sorts');
|
||||
$keys = is_array($keys) ? $keys : [];
|
||||
@@ -955,7 +958,7 @@ class ProjectController extends AbstractController
|
||||
$builder->whereNotNull('project_tasks.end_at')->where('project_tasks.end_at', '<', Carbon::parse($time_before));
|
||||
} elseif (is_array($time)) {
|
||||
if (Base::isDateOrTime($time[0]) && Base::isDateOrTime($time[1])) {
|
||||
$builder->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay(),'taskTime');
|
||||
$builder->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay());
|
||||
}
|
||||
}
|
||||
//
|
||||
@@ -996,6 +999,9 @@ class ProjectController extends AbstractController
|
||||
*
|
||||
* @apiParam {Array} [userid] 指定会员,如:[1, 2]
|
||||
* @apiParam {Array} [time] 指定时间范围,如:['2020-12-12', '2020-12-30']
|
||||
* @apiParam {String} [type]
|
||||
* - createdTime 任务创建时间
|
||||
* - taskTime 任务计划时间(默认)
|
||||
*
|
||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
||||
@@ -1007,6 +1013,7 @@ class ProjectController extends AbstractController
|
||||
//
|
||||
$userid = Base::arrayRetainInt(Request::input('userid'), true);
|
||||
$time = Request::input('time');
|
||||
$type = Request::input('type','taskTime');
|
||||
if (empty($userid) || empty($time)) {
|
||||
return Base::retError('参数错误');
|
||||
}
|
||||
@@ -1019,7 +1026,6 @@ class ProjectController extends AbstractController
|
||||
if (Carbon::parse($time[1])->timestamp - Carbon::parse($time[0])->timestamp > 90 * 86400) {
|
||||
return Base::retError('时间范围限制最大90天');
|
||||
}
|
||||
$type = Request::input('type','taskTime');
|
||||
$headings = [];
|
||||
$headings[] = '任务ID';
|
||||
$headings[] = '父级任务ID';
|
||||
@@ -1042,7 +1048,7 @@ class ProjectController extends AbstractController
|
||||
->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_id')
|
||||
->where('project_task_users.owner', 1)
|
||||
->whereIn('project_task_users.userid', $userid)
|
||||
->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay(),$type);
|
||||
->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay(), $type);
|
||||
$builder->orderByDesc('project_tasks.id')->chunk(100, function($tasks) use (&$datas) {
|
||||
/** @var ProjectTask $task */
|
||||
foreach ($tasks as $task) {
|
||||
@@ -1050,16 +1056,16 @@ class ProjectController extends AbstractController
|
||||
$developTime = 0;//开发时间
|
||||
$testTime = 0;//验收/测试时间
|
||||
foreach ($flowChanges as $change) {
|
||||
if (strpos($change->before_flow_item_name, 'end') === false) {
|
||||
if (!str_contains($change->before_flow_item_name, 'end')) {
|
||||
$upOne = ProjectTaskFlowChange::where('id', '<', $change->id)->whereTaskId($task->id)->orderByDesc('id')->first();
|
||||
if ($upOne) {
|
||||
if (strpos($change->before_flow_item_name, 'progress') !== false && strpos($change->before_flow_item_name, '进行') !== false) {
|
||||
if (str_contains($change->before_flow_item_name, 'progress') && str_contains($change->before_flow_item_name, '进行')) {
|
||||
$devCtime = Carbon::parse($change->created_at)->timestamp;
|
||||
$oCtime = Carbon::parse($upOne->created_at)->timestamp;
|
||||
$minusNum = $devCtime - $oCtime;
|
||||
$developTime += $minusNum;
|
||||
}
|
||||
if (strpos($change->before_flow_item_name, 'test') !== false || strpos($change->before_flow_item_name, '测试') !== false || strpos($change->before_flow_item_name, '验收') !== false) {
|
||||
if (str_contains($change->before_flow_item_name, 'test') || str_contains($change->before_flow_item_name, '测试') || strpos($change->before_flow_item_name, '验收') !== false) {
|
||||
$testCtime = Carbon::parse($change->created_at)->timestamp;
|
||||
$tTime = Carbon::parse($upOne->created_at)->timestamp;
|
||||
$tMinusNum = $testCtime - $tTime;
|
||||
@@ -1072,14 +1078,14 @@ class ProjectController extends AbstractController
|
||||
$lastChange = ProjectTaskFlowChange::whereTaskId($task->id)->orderByDesc('id')->first();
|
||||
$nowTime = time();
|
||||
$unFinishTime = $nowTime - Carbon::parse($lastChange->created_at)->timestamp;
|
||||
if (strpos($lastChange->after_flow_item_name, 'progress') !== false || strpos($lastChange->after_flow_item_name, '进行') !== false) {
|
||||
if (str_contains($lastChange->after_flow_item_name, 'progress') || str_contains($lastChange->after_flow_item_name, '进行')) {
|
||||
$developTime += $unFinishTime;
|
||||
} elseif (strpos($lastChange->after_flow_item_name, 'test') !== false || strpos($lastChange->after_flow_item_name, '测试') !== false || strpos($lastChange->after_flow_item_name, '验收') !== false) {
|
||||
} elseif (str_contains($lastChange->after_flow_item_name, 'test') || str_contains($lastChange->after_flow_item_name, '测试') || strpos($lastChange->after_flow_item_name, '验收') !== false) {
|
||||
$testTime += $unFinishTime;
|
||||
}
|
||||
}
|
||||
$firstChange = ProjectTaskFlowChange::whereTaskId($task->id)->orderBy('id')->first();
|
||||
if (strpos($firstChange->after_flow_item_name, 'end') !== false) {
|
||||
if (str_contains($firstChange->after_flow_item_name, 'end')) {
|
||||
$firstDevTime = Carbon::parse($firstChange->created_at)->timestamp - Carbon::parse($task->created_at)->timestamp;
|
||||
$developTime += $firstDevTime;
|
||||
}
|
||||
@@ -1532,9 +1538,6 @@ class ProjectController extends AbstractController
|
||||
$task_id = intval($data['task_id']);
|
||||
//
|
||||
$task = ProjectTask::userTask($task_id, true, 2);
|
||||
if ($task->deleted_at) {
|
||||
throw new ApiException('任务已删除');
|
||||
}
|
||||
// 更新任务
|
||||
$updateMarking = [];
|
||||
$task->updateTask($data, $updateMarking);
|
||||
@@ -1644,6 +1647,9 @@ class ProjectController extends AbstractController
|
||||
* @apiName task__remove
|
||||
*
|
||||
* @apiParam {Number} task_id 任务ID
|
||||
* @apiParam {String} type
|
||||
* - recovery: 还原
|
||||
* - delete: 删除(默认)
|
||||
*
|
||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
||||
@@ -1654,24 +1660,16 @@ class ProjectController extends AbstractController
|
||||
User::auth();
|
||||
//
|
||||
$task_id = intval(Request::input('task_id'));
|
||||
$type = Request::input('type');
|
||||
$type = Request::input('type', 'delete');
|
||||
//
|
||||
$task = ProjectTask::userTask($task_id, null, true);
|
||||
if($type == 'recovery'){
|
||||
$task->deleted_at = null;
|
||||
$task->deleted_userid = 0;
|
||||
$task->save();
|
||||
$task = ProjectTask::userTask($task_id, null, true, [], $type === 'recovery');
|
||||
if ($type == 'recovery') {
|
||||
$task->recoveryTask();
|
||||
return Base::retSuccess('操作成功', ['id' => $task->id]);
|
||||
} else {
|
||||
$task->deleteTask();
|
||||
return Base::retSuccess('删除成功', ['id' => $task->id]);
|
||||
}
|
||||
if($type == 'completely_delete'){
|
||||
$task->forceDelete();
|
||||
return Base::retSuccess('彻底删除成功', ['id' => $task->id]);
|
||||
}
|
||||
$task->deleted_userid = User::userid();
|
||||
$task->save();
|
||||
//
|
||||
$task->deleteTask();
|
||||
return Base::retSuccess('删除成功', ['id' => $task->id]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,7 +25,7 @@ class SystemController extends AbstractController
|
||||
* @apiParam {String} type
|
||||
* - get: 获取(默认)
|
||||
* - all: 获取所有(需要管理员权限)
|
||||
* - save: 保存设置(参数:reg、reg_invite、login_code、password_policy、project_invite、chat_nickname、auto_archived、archived_day)
|
||||
* - save: 保存设置(参数:reg、reg_invite、login_code、password_policy、project_invite、chat_nickname、auto_archived、archived_day、start_home、home_footer)
|
||||
|
||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
||||
@@ -77,6 +77,59 @@ class SystemController extends AbstractController
|
||||
return Base::retSuccess('success', $setting ?: json_decode('{}'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {get} api/system/setting/email 14. 获取邮箱设置、保存邮箱设置
|
||||
*
|
||||
* @apiVersion 1.0.0
|
||||
* @apiGroup system
|
||||
* @apiName setting__email
|
||||
*
|
||||
* @apiParam {String} type
|
||||
* - get: 获取(默认)
|
||||
* - all: 获取所有(需要管理员权限)
|
||||
* - save: 保存设置(参数:smtp_server port account password reg_verify notice task_remind_hours task_remind_hours2)
|
||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
||||
* @apiSuccess {Object} data 返回数据
|
||||
*/
|
||||
public function setting__email()
|
||||
{
|
||||
$type = trim(Request::input('type'));
|
||||
if ($type == 'save') {
|
||||
if (env("SYSTEM_SETTING") == 'disabled') {
|
||||
return Base::retError('当前环境禁止修改');
|
||||
}
|
||||
User::auth('admin');
|
||||
$all = Request::input();
|
||||
foreach ($all as $key => $value) {
|
||||
if (!in_array($key, ['smtp_server', 'port', 'account', 'password', 'reg_verify', 'notice', 'task_remind_hours', 'task_remind_hours2'])) {
|
||||
unset($all[$key]);
|
||||
}
|
||||
}
|
||||
$setting = Base::setting('emailSetting', Base::newTrim($all));
|
||||
} else {
|
||||
$setting = Base::setting('emailSetting');
|
||||
}
|
||||
//
|
||||
if ($type == 'all' || $type == 'save') {
|
||||
User::auth('admin');
|
||||
$setting['reg_invite'] = $setting['reg_invite'] ?: Base::generatePassword(8);
|
||||
} else {
|
||||
if (isset($setting['reg_invite'])) unset($setting['reg_invite']);
|
||||
}
|
||||
//
|
||||
$setting['smtp_server'] = $setting['smtp_server'] ?: '';
|
||||
$setting['port'] = $setting['port'] ?: '';
|
||||
$setting['account'] = $setting['account'] ?: '';
|
||||
$setting['password'] = $setting['password'] ?: '';
|
||||
$setting['reg_verify'] = $setting['reg_verify'] ?: 'close';
|
||||
$setting['notice'] = $setting['notice'] ?: 'open';
|
||||
$setting['task_remind_hours'] = floatval($setting['task_remind_hours']) ?: 0;
|
||||
$setting['task_remind_hours2'] = floatval($setting['task_remind_hours2']) ?: 0;
|
||||
//
|
||||
return Base::retSuccess('success', $setting ?: json_decode('{}'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {get} api/system/demo 02. 获取演示账号
|
||||
*
|
||||
@@ -501,57 +554,4 @@ class SystemController extends AbstractController
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @api {get} api/system/emailSetting 14. 获取邮箱设置、保存邮箱设置
|
||||
*
|
||||
* @apiVersion 1.0.0
|
||||
* @apiGroup system
|
||||
* @apiName emailSetting
|
||||
*
|
||||
* @apiParam {String} type
|
||||
* - get: 获取(默认)
|
||||
* - all: 获取所有(需要管理员权限)
|
||||
* - save: 保存设置(参数:smtp_server port account password reg_verify notice task_remind_hours task_remind_hours2)
|
||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
||||
* @apiSuccess {Object} data 返回数据
|
||||
*/
|
||||
public function emailSetting()
|
||||
{
|
||||
$type = trim(Request::input('type'));
|
||||
if ($type == 'save') {
|
||||
if (env("SYSTEM_SETTING") == 'disabled') {
|
||||
return Base::retError('当前环境禁止修改');
|
||||
}
|
||||
User::auth('admin');
|
||||
$all = Request::input();
|
||||
foreach ($all as $key => $value) {
|
||||
if (!in_array($key, ['smtp_server', 'port', 'account', 'password', 'reg_verify', 'notice', 'task_remind_hours', 'task_remind_hours2'])) {
|
||||
unset($all[$key]);
|
||||
}
|
||||
}
|
||||
$setting = Base::setting('emailSetting', Base::newTrim($all));
|
||||
} else {
|
||||
$setting = Base::setting('emailSetting');
|
||||
}
|
||||
//
|
||||
if ($type == 'all' || $type == 'save') {
|
||||
User::auth('admin');
|
||||
$setting['reg_invite'] = $setting['reg_invite'] ?: Base::generatePassword(8);
|
||||
} else {
|
||||
if (isset($setting['reg_invite'])) unset($setting['reg_invite']);
|
||||
}
|
||||
//
|
||||
$setting['smtp_server'] = $setting['smtp_server'] ?: '';
|
||||
$setting['port'] = $setting['port'] ?: '';
|
||||
$setting['account'] = $setting['account'] ?: '';
|
||||
$setting['password'] = $setting['password'] ?: '';
|
||||
$setting['reg_verify'] = $setting['reg_verify'] ?: 'close';
|
||||
$setting['notice'] = $setting['notice'] ?: 'open';
|
||||
$setting['task_remind_hours'] = floatval($setting['task_remind_hours']) ?: 0;
|
||||
$setting['task_remind_hours2'] = floatval($setting['task_remind_hours2']) ?: 0;
|
||||
//
|
||||
return Base::retSuccess('success', $setting ?: json_decode('{}'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ class UsersController extends AbstractController
|
||||
$type = trim(Request::input('type'));
|
||||
$email = trim(Request::input('email'));
|
||||
$password = trim(Request::input('password'));
|
||||
$isRegVerify = Base::settingFind('emailSetting', 'reg_verify') === 'open' ? true : false;
|
||||
$isRegVerify = Base::settingFind('emailSetting', 'reg_verify') === 'open';
|
||||
if ($type == 'reg') {
|
||||
$setting = Base::setting('system');
|
||||
if ($setting['reg'] == 'close') {
|
||||
@@ -58,7 +58,7 @@ class UsersController extends AbstractController
|
||||
$user = User::reg($email, $password);
|
||||
if ($isRegVerify) {
|
||||
UserEmailVerification::userEmailSend($user);
|
||||
return Base::retError('注册成功,请验证邮箱后登录', ['code' => 1000]);
|
||||
return Base::retError('注册成功,请验证邮箱后登录', ['code' => 'email']);
|
||||
}
|
||||
} else {
|
||||
$needCode = !Base::isError(User::needCode($email));
|
||||
@@ -80,10 +80,10 @@ class UsersController extends AbstractController
|
||||
};
|
||||
$user = User::whereEmail($email)->first();
|
||||
if (empty($user)) {
|
||||
return $retError('账号不存在,请确认账号是否输入正确');
|
||||
return $retError('账号或密码错误');
|
||||
}
|
||||
if ($user->password != Base::md52($password, $user->encrypt)) {
|
||||
return $retError('密码错误,请输入正确密码');
|
||||
return $retError('账号或密码错误');
|
||||
}
|
||||
//
|
||||
if (in_array('disable', $user->identity)) {
|
||||
@@ -589,14 +589,11 @@ class UsersController extends AbstractController
|
||||
{
|
||||
$data = Request::input();
|
||||
// 表单验证
|
||||
$validator = Validator::make($data, [
|
||||
"code" => ["required"],
|
||||
], [
|
||||
"code.required" => "required字段非法",
|
||||
Base::validator($data, [
|
||||
'code.required' => '验证码不能为空',
|
||||
]);
|
||||
if ($validator->fails())
|
||||
return Base::retError($validator->errors()->first());
|
||||
$res = UserEmailVerification::where('code', $data['code'])->first();
|
||||
//
|
||||
$res = UserEmailVerification::whereCode($data['code'])->first();
|
||||
if (empty($res)) {
|
||||
return Base::retError('无效连接,请重新注册');
|
||||
}
|
||||
@@ -604,17 +601,17 @@ class UsersController extends AbstractController
|
||||
if (intval($res->status) === 1)
|
||||
return Base::retError('链接已经使用过',['code' => 2]);
|
||||
|
||||
$oldTime = strtotime($res->created_at);
|
||||
$time = time();
|
||||
$oldTime = Carbon::parse($res->created_at)->timestamp;
|
||||
$time = Base::Time();
|
||||
//24个小时失效
|
||||
if (abs($time - $oldTime) > 86400) {
|
||||
return Base::retError("链接已失效,请重新登录/注册");
|
||||
}
|
||||
UserEmailVerification::where('code', $data['code'])
|
||||
UserEmailVerification::whereCode($data['code'])
|
||||
->update([
|
||||
'status' => 1
|
||||
]);
|
||||
User::where('userid', $res->userid)->update([
|
||||
User::whereUserid($res->userid)->update([
|
||||
'is_email_verity' => 1
|
||||
]);
|
||||
return Base::retSuccess('绑定邮箱成功');
|
||||
|
||||
Reference in New Issue
Block a user