This commit is contained in:
2025-07-17 10:42:43 +08:00
parent 92dc7b19a9
commit 59d81b4db4
10 changed files with 366 additions and 3 deletions
-3
View File
@@ -1,3 +0,0 @@
User ← user_roles → Role ← role_resources → Resource (type=menu/button)
↘︎
role_permissions → Permission
@@ -0,0 +1,36 @@
<?php
namespace app\common\controller;
use support\Request;
use app\common\service\CorpService;
use app\common\service\CorpFeishuAppService;
class PresetController extends BaseController
{
protected $noNeedLogin = ['corps', 'feishuApp'];
public function corps()
{
try {
$result = (new CorpService())->getList();
return $this->success($result, '获取公司列表');
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
public function feishuApp(Request $request)
{
try {
$corpId = $request->get('corp_id');
$result = (new CorpFeishuAppService())->getFeishuApp($corpId);
return $this->success($result, '获取飞书应用信息');
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
}
+86
View File
@@ -0,0 +1,86 @@
<?php
namespace app\common\logic;
use Illuminate\Database\Eloquent\Model;
use support\exception\BusinessException;
class BaseLogic
{
/**
* 获取列表
*/
public function getList(array $params, string $modelClass)
{
$query = $modelClass::query();
// 你可以在此处添加分页、排序等功能
if (isset($params['page']) && isset($params['per_page'])) {
$query->paginate($params['per_page'], ['*'], 'page', $params['page']);
}
return $query->get();
}
/**
* 获取单个记录
*/
public function getDetail(int $id, string $modelClass)
{
$record = $modelClass::find($id);
if (!$record) {
throw new BusinessException("记录不存在", 404);
}
return $record;
}
/**
* 创建记录
*/
public function create(array $data, string $modelClass)
{
$model = new $modelClass;
$model->fill($data); // 根据字段填充数据
try {
$model->save();
} catch (\Throwable $e) {
throw new BusinessException("创建记录失败: " . $e->getMessage(), 500);
}
return $model;
}
/**
* 更新记录
*/
public function update(array $data, string $modelClass)
{
$record = $modelClass::find($data['id']);
if (!$record) {
throw new BusinessException("记录不存在", 404);
}
$record->update($data);
return $record;
}
/**
* 删除记录
*/
public function delete(int $id, string $modelClass)
{
$record = $modelClass::find($id);
if (!$record) {
throw new BusinessException("记录不存在", 404);
}
try {
$record->delete();
} catch (\Throwable $e) {
throw new BusinessException("删除记录失败: " . $e->getMessage(), 500);
}
return true;
}
}
+16
View File
@@ -0,0 +1,16 @@
<?php
namespace app\common\logic;
use app\common\model\CorpFeishuApp;
class CorpFeishuAppLogic
{
public function getFeishuApp($corpId)
{
return CorpFeishuApp::where('corp_id', $corpId)->first(['id', 'corp_id', 'name', 'app_id', 'r_url', 'state']);
}
}
+14
View File
@@ -0,0 +1,14 @@
<?php
namespace app\common\logic;
use app\common\model\Corp;
class CorpLogic
{
public function getList()
{
return Corp::where('status', 1)->orderBy('sort', 'asc')->get(['id', 'name', 'abbr', 'tenant_key']);
}
}
+69
View File
@@ -0,0 +1,69 @@
<?php
namespace app\common\model;
use support\Model;
/**
* user_feishu_app 用户-飞书应用
* @property integer $id ID(主键)
* @property integer $uid 用户ID
* @property integer $corp_id 公司ID
* @property string $name 名称
* @property string $mobile 手机
* @property string $union_id ISV的唯一标识
* @property string $user_id 用户 user_id
* @property string $open_id 应用内的唯一标识
* @property string $tenant_key 当前企业标识
* @property integer $sort 排序
* @property integer $status 状态
* @property integer $created_at 创建时间
* @property integer $updated_at 更新时间
*/
class UserFeishuApp_bak extends Model
{
/**
* The connection name for the model.
*
* @var string|null
*/
protected $connection = 'mysql';
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'user_feishu_app';
/**
* The primary key associated with the table.
*
* @var string
*/
protected $primaryKey = 'id';
/**
* Indicates if the model should be timestamped.
*
* @var bool
*/
public $timestamps = true;
protected $dateFormat = 'U';
protected $fillable = [
'uid',
'corp_id',
'name',
'mobile',
'union_id',
'user_id',
'open_id',
'tenant_key',
'sort',
'status'
];
}
+47
View File
@@ -0,0 +1,47 @@
<?php
namespace app\common\model;
use support\Model;
/**
* user_roles 用户-角色关联
* @property integer $user_id 用户ID(主键)
* @property integer $role_id 角色ID(主键)
*/
class UserRoles extends Model
{
/**
* The connection name for the model.
*
* @var string|null
*/
protected $connection = 'mysql';
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'user_roles';
/**
* The primary key associated with the table.
*
* @var string
*/
protected $primaryKey = null;
/**
* Indicates if the model should be timestamped.
*
* @var bool
*/
public $timestamps = false;
protected $fillable = [
'user_id',
'role_id'
];
}
+53
View File
@@ -0,0 +1,53 @@
<?php
namespace app\common\model;
use support\Model;
/**
* user_systems 用户-系统关联表:描述用户可访问哪些系统
* @property integer $user_id 用户ID(主键)
* @property integer $system_id 系统ID(主键)
* @property integer $created_at 创建时间
*/
class UserSystems extends Model
{
/**
* The connection name for the model.
*
* @var string|null
*/
protected $connection = 'mysql';
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'user_systems';
/**
* The primary key associated with the table.
*
* @var string
*/
protected $primaryKey = null;
/**
* Indicates if the model should be timestamped.
*
* @var bool
*/
public $timestamps = false;
// protected $dateFormat = 'U';
// const UPDATED_AT = false;
protected $fillable = [
'user_id',
'system_id',
'created_at'
];
}
@@ -0,0 +1,21 @@
<?php
namespace app\common\service;
use app\common\logic\CorpFeishuAppLogic;
class CorpFeishuAppService
{
protected $logic;
public function __construct()
{
$this->logic = (new CorpFeishuAppLogic());
}
public function getFeishuApp(int $corpId)
{
return $this->logic->getFeishuApp($corpId);
}
}
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace app\common\service;
use app\common\logic\CorpLogic;
class CorpService
{
protected $logic;
public function __construct()
{
$this->logic = (new CorpLogic());
}
/**
* 获取公司list
*/
public function getList()
{
return $this->logic->getList();
}
}