作者 赵彬吉

Merge branch 'dev' of http://47.244.231.31:8099/zhl/globalso-v6 into dev

<?php
namespace App\Http\Controllers\Bside\User;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\User\DeptUserLogic;
use App\Models\User\DeptUser;
use App\Models\User\ViewDeptUser;
class DeptUserController extends BaseController
{
/**
* @param ViewDeptUser $viewDeptUser
* @name :(列表)lists
* @author :lyh
* @method :post
* @time :2023/5/17 17:27
*/
public function lists(ViewDeptUser $viewDeptUser){
$this->param['project_id'] = $this->user['project_id'];
$lists = $viewDeptUser->lists($this->map,$this->page,$this->row,$this->order);
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @name :(获取成员列表)get_user_list
* @author :lyh
* @method :post
* @time :2023/5/17 17:38
*/
public function get_user_list(DeptUserLogic $deptUserLogic){
//获取当前用户已添加的成员
$list = $deptUserLogic->get_user_list();
$this->response('success',Code::SUCCESS,$list);
}
/**
* @name :(添加或编辑成员)save
* @author :lyh
* @method :post
* @time :2023/5/17 17:36
*/
public function add(DeptUserLogic $deptUserLogic){
$this->param['project_id'] = $this->user['project_id'];
$deptUserLogic->dept_user_add();
$this->response('success');
}
}
... ...
<?php
namespace App\Http\Controllers\Bside\User;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Controllers\Bside\Ids;
use App\Http\Controllers\Bside\json;
use App\Http\Logic\Bside\ProjectGroupLogic;
use App\Http\Logic\Bside\User\GroupLogic;
use App\Http\Requests\Bside\User\ProjectGroupRequest;
use App\Models\User\ProjectGroup;
/**
* @name:用户组相关
*/
class ProjectGroupController extends BaseController
{
/**
* @name :用户组列表
* @return json
* @author :liyuhang
* @method
*/
public function lists(ProjectGroup $projectGroup)
{
$lists = $projectGroup->list($this->map,'id',['name','user_list','pid','id']);
$menu = [];
foreach ($lists as $k => $v){
$v = (array)$v;
if ($v['pid'] == 0) {
$v['sub'] = _get_child($v['id'], $lists);
$menu[] = $v;
}
}
$this->response('success',Code::SUCCESS,$menu);
}
/**
* @name :详情
* @return json
* @author :liyuhang
* @method
*/
public function info(GroupLogic $groupLogic){
$this->request->validate([
'id'=>['required', new Ids()],
],[
'id.required' => 'ID不能为空',
]);
$groupLogic->group_info();
$this->response('success');
}
/**
* @name:添加用户组获取用户列表
* @return void
* @author :liyuhang
* @method
*/
public function get_user_lists(GroupLogic $groupLogic){
$lists = $groupLogic->user_list();
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @param ProjectGroupRequest $request
* @param ProjectGroupLogic $logic
* @name : 添加用户组
* @return void
* @author :liyuhang
* @method
*/
public function add(ProjectGroupRequest $request,GroupLogic $groupLogic){
$request->validated();
$groupLogic->group_add();
$this->response('success');
}
/**
* @param ProjectGroupRequest $request
* @param ProjectGroupLogic $logic
* @name :编辑用户组
* @return void
* @author :liyuhang
* @method
*/
public function edit(ProjectGroupRequest $request,GroupLogic $groupLogic){
$request->validate([
'id'=>['required'],
],[
'id.required' => 'ID不能为空',
]);
$groupLogic->group_edit();
$this->response('success');
}
/**
* @name :删除用户组
* @return void
* @author :liyuhang
* @method
*/
public function del(GroupLogic $groupLogic){
$this->request->validate([
'id'=>['required','array'],
],[
'id.required' => 'ID不能为空',
'id.array' => 'ID为数组',
]);
$groupLogic->group_del();
$this->response('success');
}
}
<?php
namespace App\Http\Logic\Aside\User;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\User\ProjectMenu;
class ProjectGroupLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new ProjectMenu();
$this->param = $this->requestAll;
}
/**
* @name :详情
* @return void
* @author :liyuhang
* @method
*/
public function group_info(){
$info = $this->info($this->param);
return $this->success($info);
}
/**
* @name :添加
* @return void
* @author :liyuhang
* @method
*/
public function group_add(){
//查看当前用户组是否存在
$this->model->read(['name'=>$this->param['name'],'create_id'=>$this->user['id']]);
$rs = $this->model->add($this->param);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
/**
* @name :编辑
* @return void
* @author :liyuhang
* @method
*/
public function group_edit(){
//查看当前用户组是否存在
$rs = $this->model->read(['name'=>$this->param['name'],'create_id'=>$this->user['id']]);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
/**
* @name :删除
* @return void
* @author :liyuhang
* @method
*/
public function group_del(){
$this->param['id'] = ['in',$this->param['id']];
$rs = $this->model->del($this->param);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
}
... ... @@ -64,7 +64,7 @@ class AyrReleaseLogic extends BaseLogic
$arr[] = $v1['ayr_url'];
}
}else{
$arr[] = url('/b/file_hash/' . $v.rand(10000,99999).'mp4');;
$arr[] = url('/b/file_hash/' . $v.rand(10000,99999).'mp4');
}
}
return $this->success($arr);
... ...
... ... @@ -4,7 +4,7 @@ namespace App\Http\Logic\Bside\User;
use App\Helper\Arr;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\ProjectDept;
use App\Models\User\ProjectDept;
/**
* Class DeptLogic
... ...
<?php
namespace App\Http\Logic\Bside\User;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\User\DeptUser;
use App\Models\User\User;
class DeptUserLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new DeptUser();
$this->param = $this->requestAll;
}
/**
* @name :(添加用户时获取成员列表)user_list
* @author :lyh
* @method :post
* @time :2023/5/17 17:40
*/
public function get_user_list(){
$param = [
'project_id'=>$this->user['project_id'],
'dept_id'=>$this->param['dept_id'],
];
$dept_list = $this->model->list($param,'id');
if(!empty($dept_list)){
$arr = [];
foreach ($dept_list as $k => $v){
$arr[] = $v['user_id'];
}
}
$userModel = new User();
$param = [
'project_id'=>$this->user['project_id'],
'id'=>['not in',$arr],
];
$list = $userModel->list($param,'id',['id','name','email','mobile','created_at']);
return $this->success($list);
}
/**
* @name :dept_user_add
* @author :lyh
* @method :post
* @time :2023/5/17 17:54
*/
public function dept_user_add(){
}
}
... ...
... ... @@ -4,6 +4,8 @@ namespace App\Http\Logic\Bside\User;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\User\ProjectGroup;
use App\Models\User\User as UserModel;
use Illuminate\Support\Facades\DB;
class GroupLogic extends BaseLogic
{
... ... @@ -15,52 +17,86 @@ class GroupLogic extends BaseLogic
$this->param = $this->requestAll;
}
/**
* @name :添加
* @name :添加用户组
* @return void
* @author :liyuhang
* @method
*/
public function group_add(){
$this->param['project_id'] = $this->user['project_id'];
$this->param['admin_id'] = $this->user['admin_id'];
$this->param['create_id'] = $this->user['create_id'];
$this->param['operator_id'] = $this->user['operator_id'];
$this->param['user_list'] = ','.trim($this->param['user_list'],',').',';
$this->param['admin_id'] = $this->user['id'];
$this->param['create_id'] = $this->user['id'];
$this->param['operator_id'] = $this->user['id'];
$rs = $this->model->add($this->param);
if($rs === false){
$this->fail('error');
}
if(isset($this->param['pid']) && !empty($this->param['pid'])){
$this->add_update_parent($this->param);
}
return $this->success();
}
/**
* @name :(添加成员)group_add_user
* @author :lyh
* @method :post
* @time :2023/5/17 15:58
*/
public function group_add_user(){
$info = $this->model->read(['id'=>$this->param['id']]);
//组装数据
$str = ltrim($info['user_list'],',').$this->param['user_list'];
$arr = array_unique(explode(',',$str));
sort($arr);
$str = ','.implode(',',$arr).',';
DB::beginTransaction();
try {
$this->model->edit(['user_list'=>$str],['id'=>$this->param['id']]);
//更新父类
$this->update_parent($this->param,$info);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('添加成员失败');
}
return $this->success();
}
/**
* @name :编辑
* @return void
* @author :liyuhang
* @method
*/
public function group_edit(){
$this->param['user_list'] = ','.trim($this->param['user_list'],',').',';
$rs = $this->edit($this->param,['id'=>$this->param['id']]);
if($rs === false){
$this->fail('error');
}
//更新父类
$this->update_parent($this->param,$this->param['id']);
return $this->success();
}
/**
* @name :(获取成员列表)user_list
* @author :lyh
* @method :post
* @time :2023/5/17 14:51
*/
public function user_list($data = [],$order = 'id'){
unset($this->param['id']);
$userModel = new UserModel();
$data = array_merge($data,$this->param);
$lists = $userModel->list($data,$order,['id','name','mobile','created_at']);
return $this->success($lists);
}
/**
* @name :详情
* @return void
* @author :liyuhang
* @method
*/
public function group_info(){
$info = $this->info($this->param);
public function group_info($param = []){
if(empty($param)){
$param = $this->param;
}
$info = $this->model->read($this->param);
return $this->success($info);
}
... ... @@ -76,7 +112,7 @@ class GroupLogic extends BaseLogic
if($info !== false){
$this->fail('当前删除组织拥有下级组织,不允许删除');
}
$rs = $this->model->del($this->param);
$rs = $this->del($this->param);
if($rs === false){
$this->fail('error');
}
... ... @@ -89,26 +125,51 @@ class GroupLogic extends BaseLogic
* @method :post
* @time :2023/5/17 9:22
*/
public function update_parent($param,$id = ''){
if(!empty($id)){
$param = $this->model->read(['id'=>$id]);
}
public function update_parent($param,$info){
//查询当前组是否拥有父类
if($param['pid'] != 0){
$parent_info = $this->model->read(['id'=>$param['pid']]);
if($info['pid'] != 0){
$parent_info = $this->model->read(['id'=>$info['pid']]);
//把添加成员合并到上级
$str = trim($param['user_list'].$parent_info['user_list'],',');
$mergedString = ','.implode(',', array_unique(explode(',', $str))).',';
$str = trim(trim($param['user_list'],',').$parent_info['user_list'],',');
$arr = array_unique(explode(',', $str));
sort($arr);
$mergedString = ','.implode(',', $arr).',';
$rs = $this->model->edit(['user_list'=>$mergedString],['id'=>$parent_info['id']]);
if($rs === false){
$this->fail('更新父级失败');
}
//查看当前父级是否还拥有父级
if($parent_info['pid'] != 0){
$rs = $this->update_parent($parent_info);
return $this->update_parent($param,$parent_info);
}
}
return $this->success($rs);
return $this->success();
}
/**
* @name :(更新子类,同时清空子集成员)edit_son
* @author :lyh
* @method :post
* @time :2023/5/17 13:52
*/
public function update_son($param,$id){
//当前数据详情
$info = $this->model->read(['id'=>$id]);
//子集详情
$son_list = $this->model->list(['pid'=>$info['id']],'id');
if(!empty($son_list)){
//循环查询
foreach ($son_list as $k => $v){
$son_data = explode(',',trim($v['user_list'],','));
$son_str = '';
foreach ($son_data as $v1){
if(strpos($param['user_list'],','.$v1.',') > -1){
$son_str .= $v1.',';
}
}
$this->model->edit(['user_list'=>','.$son_str],['id'=>$v['id']]);
}
}
return true;
}
}
... ...
... ... @@ -187,7 +187,7 @@ class Base extends Model
// in查询 ['id'=>['in',[1,2,3]]]
$query->orWhere($k, $v[1]);
break;
case 'no in':
case 'not in':
// in查询 ['id'=>['not in',[1,2,3]]]
$query->whereNotIn($k, $v[1]);
break;
... ...
... ... @@ -4,10 +4,7 @@ namespace App\Models\User;
use App\Models\Base;
class ProjectGroup extends Base
class DeptUser extends Base
{
//设置关联表名
protected $table = 'gl_project_group';
//自动维护create_at创建时间 updated_at修改时间
public $timestamps = true;
protected $table = 'gl_project_dept_user';
}
... ...
<?php
namespace App\Models;
namespace App\Models\User;
use App\Models\Base;
use Illuminate\Database\Eloquent\SoftDeletes;
class ProjectDept extends Base
... ...
<?php
namespace App\Models\User;
use App\Models\Base;
class ViewDeptUser extends Base
{
protected $table = 'gl_view_dept_user';
}
... ...
... ... @@ -42,16 +42,6 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/get_user_list', [\App\Http\Controllers\Bside\User\ProjectRoleController::class, 'get_user_list'])->name('project_role_get_user_list');
});
//group相关路
Route::prefix('group')->group(function () {
Route::any('/', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'lists'])->name('project_group_lists');
Route::any('/add', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'add'])->name('project_group_add');
Route::any('/edit', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'edit'])->name('project_group_edit');
Route::any('/info', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'info'])->name('project_group_info');
Route::any('/del', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'del'])->name('project_group_del');
Route::any('/get_user_lists', [\App\Http\Controllers\Bside\User\ProjectGroupController::class, 'get_user_lists'])->name('project_group_get_user_lists');
});
//新闻相关路由
Route::prefix('news')->group(function () {
//分类
... ... @@ -182,6 +172,16 @@ Route::middleware(['bloginauth'])->group(function () {
Route::get('/info', [\App\Http\Controllers\Bside\User\DeptController::class, 'info'])->name('dept_info');
Route::post('/save', [\App\Http\Controllers\Bside\User\DeptController::class, 'save'])->name('dept_save');
Route::any('/delete', [\App\Http\Controllers\Bside\User\DeptController::class, 'delete'])->name('dept_delete');
//成员管理
//组织架构
Route::prefix('user')->group(function () {
Route::any('/', [\App\Http\Controllers\Bside\User\DeptUserController::class, 'lists'])->name('dept_user');
Route::any('/get_user_list', [\App\Http\Controllers\Bside\User\DeptUserController::class, 'get_user_list'])->name('dept_user_get_user_list');
Route::any('/info', [\App\Http\Controllers\Bside\User\DeptUserController::class, 'info'])->name('dept_user_info');
Route::post('/save', [\App\Http\Controllers\Bside\User\DeptUserController::class, 'save'])->name('dept_user_save');
Route::any('/delete', [\App\Http\Controllers\Bside\User\DeptUserController::class, 'delete'])->name('dept_user_delete');
});
});
//文件操作
... ...