增加业务强制绑定提醒
This commit is contained in:
@@ -65,10 +65,10 @@ class PresetController extends BaseController
|
||||
}
|
||||
|
||||
|
||||
public function users()
|
||||
public function users(Request $request)
|
||||
{
|
||||
try {
|
||||
$result = (new UserService())->getList();
|
||||
$result = (new UserService())->getList($request);
|
||||
return $this->success($result, '获取用户列表');
|
||||
} catch (\Throwable $e) {
|
||||
return $this->error($e->getMessage());
|
||||
|
||||
@@ -3,8 +3,11 @@
|
||||
namespace app\common\logic;
|
||||
|
||||
use app\common\model\User;
|
||||
use app\common\model\UserGroupMembers;
|
||||
use app\common\traits\crud\CrudLogicTrait;
|
||||
use support\exception\BusinessException;
|
||||
use support\Request;
|
||||
use app\common\model\UserRoles;
|
||||
|
||||
class UserLogic
|
||||
{
|
||||
@@ -20,7 +23,7 @@ class UserLogic
|
||||
*/
|
||||
public function userInfo(int $uid)
|
||||
{
|
||||
$user = User::find($uid);
|
||||
$user = User::with('reportToInfo')->find($uid);
|
||||
|
||||
if (!$user) {
|
||||
throw new BusinessException('账户不存在', 404);
|
||||
@@ -38,6 +41,7 @@ class UserLogic
|
||||
*/
|
||||
public function edit(int $uid, array $data)
|
||||
{
|
||||
//
|
||||
$user = User::find($uid);
|
||||
|
||||
if (!$user) {
|
||||
@@ -47,6 +51,26 @@ class UserLogic
|
||||
$user->fill($data);
|
||||
$user->save();
|
||||
|
||||
// 绑定内勤 10.13 add
|
||||
if (isset($data['office_clerk_id']) && $data['office_clerk_id'] > 0) {
|
||||
$ug = UserGroupMembers::where('user_id', $uid)->where('status', 1)->first();
|
||||
if ($ug) {
|
||||
$ug->delete();
|
||||
}
|
||||
|
||||
$group = UserGroupMembers::where('user_id', $data['office_clerk_id'])->where('is_leader', 1)->where('status', 1)->first();
|
||||
if (!$group) {
|
||||
throw new BusinessException('该内勤还未创建分组', 404);
|
||||
}
|
||||
|
||||
UserGroupMembers::create([
|
||||
'user_id' => $uid,
|
||||
'group_id' => $group->group_id,
|
||||
'is_leader' => 0,
|
||||
'status' => 1
|
||||
]);
|
||||
}
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
@@ -64,9 +88,16 @@ class UserLogic
|
||||
/**
|
||||
* 获取用户列表
|
||||
*/
|
||||
public function getList()
|
||||
public function getList(Request $request)
|
||||
{
|
||||
$list = User::where('status', 1)->orderBy('id', 'desc')->get();
|
||||
$p = $request->all();
|
||||
|
||||
$user = User::where('status', 1);
|
||||
if (isset($p['role_id']) && $p['role_id'] > 0) {
|
||||
$userIds = UserRoles::where('role_id', $p['role_id'])->pluck('user_id');
|
||||
$user->whereIn('id', $userIds);
|
||||
}
|
||||
$list = $user->orderBy('id', 'desc')->get();
|
||||
$arr = [];
|
||||
foreach ($list->toArray() as $item) {
|
||||
$arr[] = [
|
||||
|
||||
@@ -98,4 +98,10 @@ class User extends Model
|
||||
->orWhere('phone', $account)
|
||||
->orWhere('email', $account);
|
||||
}
|
||||
|
||||
|
||||
public function reportToInfo()
|
||||
{
|
||||
return $this->hasOne(User::class, 'id', 'report_to');
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,8 @@ namespace app\common\service;
|
||||
use app\common\logic\UserLogic;
|
||||
use app\common\model\Corp;
|
||||
use app\common\model\User;
|
||||
use app\common\model\UserGroup;
|
||||
use app\common\model\UserGroupMembers;
|
||||
use app\common\traits\crud\CrudLogicTrait;
|
||||
use app\common\traits\crud\CrudServiceTrait;
|
||||
use app\common\utils\CrudUtil;
|
||||
@@ -68,6 +70,27 @@ class UserService
|
||||
public function getUser(int $uid, $corp_abbr)
|
||||
{
|
||||
$user = $this->logic->userInfo($uid);
|
||||
|
||||
// 查找直属上级 10.13 add
|
||||
$reportToInfo = [];
|
||||
if ($user->reportToInfo) {
|
||||
$reportToInfo = [
|
||||
'id' => $user->reportToInfo->id,
|
||||
'name' => $user->reportToInfo->name
|
||||
];
|
||||
}
|
||||
|
||||
// 查找绑定内勤 10.13 add
|
||||
$officeClerkInfo = [];
|
||||
$ugm = UserGroupMembers::where('user_id', $uid)->where('status', 1)->first();
|
||||
if ($ugm) {
|
||||
$lugm = UserGroupMembers::where('group_id', $ugm->group_id)->where('is_leader', 1)->first();
|
||||
if ($lugm) {
|
||||
$officeClerkInfo['id'] = $lugm->user_id;
|
||||
$officeClerkInfo['name'] = User::where('id', $lugm->user_id)->value('name');
|
||||
}
|
||||
}
|
||||
|
||||
$corp_name = Corp::where('abbr', $corp_abbr)->value('name');
|
||||
$ossservice = new OssService();
|
||||
return [
|
||||
@@ -90,6 +113,8 @@ class UserService
|
||||
'roles' => $user->roles->pluck('name'),
|
||||
'sign_img' => $user->sign_img,
|
||||
'sign_img_url' => (!empty($user->sign_img))?$ossservice->generatePrivateUrl($user->sign_img):'',
|
||||
'report_to_info' => $reportToInfo,
|
||||
'office_clerk_info' => $officeClerkInfo
|
||||
];
|
||||
}
|
||||
|
||||
@@ -126,9 +151,9 @@ class UserService
|
||||
/**
|
||||
* 获取用户列表
|
||||
*/
|
||||
public function getList()
|
||||
public function getList(Request $request)
|
||||
{
|
||||
return $this->logic->getList();
|
||||
return $this->logic->getList($request);
|
||||
}
|
||||
|
||||
/** 分页列表 */
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace app\common\utils;
|
||||
use GatewayWorker\Lib\Gateway;
|
||||
use app\common\utils\WsResponse;
|
||||
use app\common\service\MessageNotificationsService;
|
||||
use support\Redis;
|
||||
|
||||
class WsEvents
|
||||
{
|
||||
@@ -158,14 +159,24 @@ class WsEvents
|
||||
|
||||
public function systemConnect(?string $traceId)
|
||||
{
|
||||
$num = (new \app\common\utils\approval\service\ApprovalFlowService())->getInitTodoCount($_SESSION['uid']);
|
||||
$this->todoCounts($_SESSION['uid'], $num);
|
||||
|
||||
// 响应
|
||||
Gateway::sendToClient($this->clientId, WsResponse::success(
|
||||
'system.connect.receive',
|
||||
['time' => time()],
|
||||
$traceId
|
||||
));
|
||||
|
||||
// 获取审批待办数量
|
||||
$num = (new \app\common\utils\approval\service\ApprovalFlowService())->getInitTodoCount($_SESSION['uid']);
|
||||
$this->todoCounts($_SESSION['uid'], $num);
|
||||
|
||||
// 绑定检查
|
||||
$initData = $this->initCheck($_SESSION['uid']);
|
||||
Gateway::sendToClient($this->clientId, WsResponse::success(
|
||||
'system.init.check',
|
||||
$initData,
|
||||
$traceId
|
||||
));
|
||||
}
|
||||
|
||||
// ================= 消息通知事件 =================
|
||||
@@ -259,7 +270,6 @@ class WsEvents
|
||||
|
||||
|
||||
/*
|
||||
init.pull
|
||||
approval.todo.counts 审批待办数量
|
||||
|
||||
*/
|
||||
@@ -285,8 +295,44 @@ class WsEvents
|
||||
|
||||
|
||||
|
||||
// ================= 临时业务处理 =================
|
||||
// ================= 业务处理 =================
|
||||
|
||||
/**
|
||||
* 初始化检查
|
||||
*/
|
||||
public function initCheck(int $userId)
|
||||
{
|
||||
$data = [
|
||||
'is_report_to' => false,
|
||||
'is_office_clerk' => false,
|
||||
'is_sign' => false
|
||||
];
|
||||
|
||||
$user = \app\common\model\User::find($userId);
|
||||
|
||||
if ($user->report_to > 0) {
|
||||
$data['is_report_to'] = true;
|
||||
}
|
||||
|
||||
if ($user->sign_img !== null || $user->is_sign !== '') {
|
||||
$data['is_sign'] = true;
|
||||
}
|
||||
|
||||
$ug = \app\common\model\UserGroupMembers::with(['group' => function($query) {
|
||||
$query->where('scenario_code', 'stock_orders');
|
||||
}])->where('user_id', $userId)->first();
|
||||
if ($ug !== null) {
|
||||
$data['is_office_clerk'] = true;
|
||||
}
|
||||
|
||||
if ($data['is_report_to'] && $data['is_office_clerk'] && $data['is_sign']) {
|
||||
Redis::hSet('user:init:check:'.$userId, 'status', 1);
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
// 审批待办数量
|
||||
public function todoCounts(int $userId, int $num = 0)
|
||||
{
|
||||
$ly = [
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
|
||||
namespace app\process;
|
||||
|
||||
use app\common\model\User;
|
||||
use app\common\model\UserRoles;
|
||||
use app\common\utils\WsEvents;
|
||||
use support\Redis;
|
||||
use Workerman\Crontab\Crontab;
|
||||
|
||||
class CheckWeb
|
||||
@@ -18,6 +22,18 @@ class CheckWeb
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
new Crontab('*/3 * * * * *', function(){
|
||||
$userIds = UserRoles::where('role_id', 1)->pluck('user_id')->toArray();
|
||||
foreach ($userIds as $userId) {
|
||||
$status = Redis::hGet('user:init:check:'.$userId, 'status');
|
||||
if ($status) {
|
||||
continue;
|
||||
}
|
||||
$ws = new WsEvents();
|
||||
$ws->pushWebsocket('system.init.check', $userId, $ws->initCheck($userId));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user