批量更新租户规则
This commit is contained in:
parent
e09b4c639c
commit
e27cc8f457
@ -188,14 +188,14 @@ abstract class BaseController
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户的 tenant_id
|
||||
* 获取当前用户的 tid
|
||||
*
|
||||
* @return int 租户ID
|
||||
*/
|
||||
protected function getTenantId(): int
|
||||
{
|
||||
$userInfo = $this->getAdminUserInfo();
|
||||
return isset($userInfo['tenant_id']) ? intval($userInfo['tenant_id']) : 0;
|
||||
return isset($userInfo['tid']) ? intval($userInfo['tid']) : 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,16 +2,16 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\admin\controller;
|
||||
namespace app\admin\controller\Cms\Analytics;
|
||||
|
||||
use app\admin\BaseController;
|
||||
use think\exception\ValidateException;
|
||||
use think\facade\Db;
|
||||
use think\response\Json;
|
||||
use think\db\exception\DbException;
|
||||
use app\model\Articles;
|
||||
use app\model\ArticlesCategory;
|
||||
use app\model\AdminUser;
|
||||
use app\model\Cms\Articles;
|
||||
use app\model\Cms\ArticlesCategory;
|
||||
use app\model\System\AdminUser;
|
||||
|
||||
class AnalyticsController extends BaseController
|
||||
{
|
||||
@ -29,11 +29,13 @@ class AnalyticsController extends BaseController
|
||||
|
||||
// 总发布量
|
||||
$totalArticles = Articles::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('status', 2)
|
||||
->count();
|
||||
|
||||
// 昨日新增发布
|
||||
$yesterdayArticles = Articles::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('status', 2)
|
||||
->where('publish_date', '>=', $yesterday . ' 00:00:00')
|
||||
->where('publish_date', '<=', $yesterday . ' 23:59:59')
|
||||
@ -41,6 +43,7 @@ class AnalyticsController extends BaseController
|
||||
|
||||
// 本月新增发布
|
||||
$monthNewArticles = Articles::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('status', 2)
|
||||
->where('publish_date', '>=', $monthStart . ' 00:00:00')
|
||||
->where('publish_date', '<=', $monthEnd)
|
||||
@ -48,16 +51,19 @@ class AnalyticsController extends BaseController
|
||||
|
||||
// 总点赞量
|
||||
$totalLikes = Articles::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('status', 2)
|
||||
->sum('likes');
|
||||
|
||||
// 总访问量
|
||||
$totalViews = Articles::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('status', 2)
|
||||
->sum('views');
|
||||
|
||||
// 热门内容TOP5
|
||||
$hotArticles = Articles::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('status', 2)
|
||||
->order('views', 'desc')
|
||||
->limit(5)
|
||||
@ -100,7 +106,9 @@ class AnalyticsController extends BaseController
|
||||
{
|
||||
try {
|
||||
$stats = [
|
||||
'total_users' => AdminUser::where('delete_time', null)->count(),
|
||||
'total_users' => AdminUser::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->count(),
|
||||
];
|
||||
// 记录操作日志
|
||||
$this->logSuccess('用户统计', '获取用户统计', ['data' => $stats]);
|
||||
@ -11,6 +11,7 @@ use think\facade\Session;
|
||||
use think\response\Json;
|
||||
use think\db\exception\DbException;
|
||||
use app\model\Cms\Articles;
|
||||
use app\model\System\AdminUser;
|
||||
|
||||
class ArticleController extends BaseController
|
||||
{
|
||||
@ -22,18 +23,20 @@ class ArticleController extends BaseController
|
||||
* @param int $pageSize 每页条数(默认10)
|
||||
* @return Json
|
||||
*/
|
||||
public function getArticlesList(string $keyword = '', string $cate = '', int $page = 1, int $pageSize = 10): Json
|
||||
public function getArticlesList(string $author = '', string $keyword = '', string $cate = '', int $page = 1, int $pageSize = 10): Json
|
||||
{
|
||||
try {
|
||||
// 安全处理参数(防止非法参数)
|
||||
$page = max(1, $page); // 页码最小为1
|
||||
$pageSize = max(1, min(100, $pageSize)); // 每页条数限制1-100条
|
||||
$author = trim($author);
|
||||
$keyword = trim($keyword);
|
||||
$cate = trim($cate);
|
||||
|
||||
// 输出参数值
|
||||
trace('查询参数:', 'debug');
|
||||
trace([
|
||||
'author' => $author,
|
||||
'keyword' => $keyword,
|
||||
'cate' => $cate,
|
||||
'page' => $page,
|
||||
@ -52,6 +55,11 @@ class ArticleController extends BaseController
|
||||
$query->where('a.title', 'like', '%' . $keyword . '%');
|
||||
}
|
||||
|
||||
// 作者筛选
|
||||
if ($author) {
|
||||
$query->where('a.publisher', 'like', '%' . $author . '%');
|
||||
}
|
||||
|
||||
// 分类筛选
|
||||
if ($cate) {
|
||||
$query->where('a.cate', $cate);
|
||||
@ -208,10 +216,17 @@ class ArticleController extends BaseController
|
||||
public function getArticle(int $id): Json
|
||||
{
|
||||
try {
|
||||
$article = Articles::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->field('id,title,cate,image,desc,author,content,is_trans,transurl,views,likes,publisher,create_time,publish_date,update_time')
|
||||
->find();
|
||||
$article = Articles::alias('a')
|
||||
->where('a.id', $id)
|
||||
->where('a.tid', $this->getTenantId())
|
||||
->leftJoin('mete_admin_user u', 'a.publisher = u.id')
|
||||
->field('a.id,a.title,a.cate,a.image,a.desc,a.author,a.content,a.is_trans,a.transurl,a.views,a.likes,u.name as publisher_name,a.create_time,a.publish_date,a.update_time')
|
||||
->find()
|
||||
->toArray();
|
||||
|
||||
// 将 publisher_name 赋值给 publisher
|
||||
$article['publisher'] = $article['publisher_name'] ?? '';
|
||||
unset($article['publisher_name']);
|
||||
|
||||
if (!$article) {
|
||||
return json(['code' => 404, 'msg' => '文章不存在', 'data' => null]);
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\admin\controller;
|
||||
namespace app\admin\controller\Cms\Banner;
|
||||
|
||||
use app\admin\BaseController;
|
||||
use think\exception\ValidateException;
|
||||
@ -10,7 +10,7 @@ use think\facade\Db;
|
||||
use think\facade\Session;
|
||||
use think\response\Json;
|
||||
use think\db\exception\DbException;
|
||||
use app\model\Banner;
|
||||
use app\model\Cms\Banner;
|
||||
|
||||
class BannerController extends BaseController
|
||||
{
|
||||
@ -22,6 +22,7 @@ class BannerController extends BaseController
|
||||
{
|
||||
try {
|
||||
$banners = Banner::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->order('sort', 'asc')
|
||||
->field('id, title, desc, url, image, sort, create_time, update_time')
|
||||
->select()
|
||||
@ -66,6 +67,7 @@ class BannerController extends BaseController
|
||||
// 准备Banner数据
|
||||
$bannerData = [
|
||||
'title' => $data['title'],
|
||||
'tid' => $this->getTenantId(),
|
||||
'desc' => $data['desc'] ?? '',
|
||||
'url' => $data['url'] ?? '',
|
||||
'image' => $data['image'] ?? '',
|
||||
@ -127,8 +129,9 @@ class BannerController extends BaseController
|
||||
'sort|排序号' => 'integer',
|
||||
]);
|
||||
|
||||
// 检查Banner是否存在
|
||||
// 检查Banner是否存在(验证tid)
|
||||
$banner = Banner::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
|
||||
@ -150,10 +153,14 @@ class BannerController extends BaseController
|
||||
];
|
||||
|
||||
// 执行更新
|
||||
Banner::where('id', $id)->update($updateData);
|
||||
Banner::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->update($updateData);
|
||||
|
||||
// 获取更新后的Banner信息
|
||||
$updatedBanner = Banner::where('id', $id)->find();
|
||||
$updatedBanner = Banner::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->find();
|
||||
|
||||
// 记录操作日志
|
||||
$this->logSuccess('Banner管理', '更新Banner', ['id' => $id]);
|
||||
@ -187,8 +194,9 @@ class BannerController extends BaseController
|
||||
public function deleteBanner(int $id)
|
||||
{
|
||||
try {
|
||||
// 检查Banner是否存在
|
||||
// 检查Banner是否存在(验证tid)
|
||||
$banner = Banner::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
|
||||
@ -201,6 +209,7 @@ class BannerController extends BaseController
|
||||
|
||||
// 逻辑删除Banner
|
||||
$result = Banner::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->update([
|
||||
'delete_time' => time(),
|
||||
@ -4,7 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace app\admin\controller\Cms\Demand;
|
||||
|
||||
use app\index\BaseController;
|
||||
use app\admin\BaseController;
|
||||
use Symfony\Component\VarDumper\VarDumper;
|
||||
use think\exception\ValidateException;
|
||||
use think\facade\Request;
|
||||
@ -26,6 +26,7 @@ class DemandController extends BaseController
|
||||
{
|
||||
// 查询分类
|
||||
$demandList = Demand::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->order('id', 'desc')
|
||||
->select();
|
||||
|
||||
@ -67,6 +68,7 @@ class DemandController extends BaseController
|
||||
'desc' => $data['desc'],
|
||||
'applicant' => $data['applicant'] ?? '',
|
||||
'status' => $data['status'] ?? 'pending',
|
||||
'tid' => $this->getTenantId(),
|
||||
]);
|
||||
|
||||
return json([
|
||||
@ -107,8 +109,10 @@ class DemandController extends BaseController
|
||||
]);
|
||||
}
|
||||
|
||||
// 查找需求
|
||||
$demand = Demand::find($id);
|
||||
// 查找需求(验证tid)
|
||||
$demand = Demand::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->find();
|
||||
if (!$demand) {
|
||||
return json([
|
||||
'code' => 404,
|
||||
@ -154,8 +158,10 @@ class DemandController extends BaseController
|
||||
]);
|
||||
}
|
||||
|
||||
// 查找需求
|
||||
$demand = Demand::find($id);
|
||||
// 查找需求(验证tid)
|
||||
$demand = Demand::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->find();
|
||||
if (!$demand) {
|
||||
return json([
|
||||
'code' => 404,
|
||||
|
||||
@ -21,14 +21,14 @@ class TenantDomainController extends BaseController
|
||||
{
|
||||
$page = $request->param('page', 1, 'int');
|
||||
$pageSize = $request->param('pageSize', 10, 'int');
|
||||
$tenantId = $request->param('tenant_id', 0, 'int');
|
||||
$tenantId = $request->param('tid', 0, 'int');
|
||||
$status = $request->param('status', '');
|
||||
$subDomain = $request->param('sub_domain', '');
|
||||
|
||||
$where = [['delete_time', '=', null]];
|
||||
|
||||
if ($tenantId > 0) {
|
||||
$where[] = ['tenant_id', '=', $tenantId];
|
||||
$where[] = ['tid', '=', $tenantId];
|
||||
}
|
||||
if ($status !== '' && $status !== null) {
|
||||
$where[] = ['status', '=', $status];
|
||||
@ -49,7 +49,7 @@ class TenantDomainController extends BaseController
|
||||
->count();
|
||||
|
||||
// 获取租户名称
|
||||
$tenantIds = array_column($list, 'tenant_id');
|
||||
$tenantIds = array_column($list, 'tid');
|
||||
$tenants = [];
|
||||
if ($tenantIds) {
|
||||
$tenantList = Db::name('mete_tenant')
|
||||
@ -61,7 +61,7 @@ class TenantDomainController extends BaseController
|
||||
|
||||
// 附加租户名称
|
||||
foreach ($list as &$item) {
|
||||
$item['tenant_name'] = $tenants[$item['tenant_id']]['tenant_name'] ?? '';
|
||||
$item['tenant_name'] = $tenants[$item['tid']]['tenant_name'] ?? '';
|
||||
}
|
||||
|
||||
return json([
|
||||
@ -89,7 +89,7 @@ class TenantDomainController extends BaseController
|
||||
}
|
||||
|
||||
$list = Db::name('mete_tenant_domain')
|
||||
->where('tenant_id', $tid)
|
||||
->where('tid', $tid)
|
||||
->where('delete_time', null)
|
||||
->order('id', 'desc')
|
||||
->select()
|
||||
@ -107,7 +107,7 @@ class TenantDomainController extends BaseController
|
||||
*/
|
||||
public function apply(Request $request)
|
||||
{
|
||||
$tid = $request->param('tenant_id', 0, 'int');
|
||||
$tid = $request->param('tid', 0, 'int');
|
||||
$subDomain = $request->param('sub_domain', '');
|
||||
$mainDomain = $request->param('main_domain', '');
|
||||
|
||||
@ -172,7 +172,7 @@ class TenantDomainController extends BaseController
|
||||
$now = date('Y-m-d H:i:s');
|
||||
|
||||
$id = Db::name('mete_tenant_domain')->insertGetId([
|
||||
'tenant_id' => $tid,
|
||||
'tid' => $tid,
|
||||
'sub_domain' => $subDomain,
|
||||
'main_domain' => $mainDomain,
|
||||
'full_domain' => $fullDomain,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\admin\controller;
|
||||
namespace app\admin\controller\Cms\FrontMenu;
|
||||
|
||||
use app\admin\BaseController;
|
||||
use think\exception\ValidateException;
|
||||
@ -10,7 +10,7 @@ use think\facade\Db;
|
||||
use think\facade\Session;
|
||||
use think\response\Json;
|
||||
use think\db\exception\DbException;
|
||||
use app\model\FrontMenu;
|
||||
use app\model\Cms\FrontMenu;
|
||||
|
||||
class FrontMenuController extends BaseController
|
||||
{
|
||||
@ -23,6 +23,7 @@ class FrontMenuController extends BaseController
|
||||
try {
|
||||
// 获取所有未删除的菜单
|
||||
$frontMenus = FrontMenu::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->field('id,pid,title,type,image,path,component_path,sort,desc')
|
||||
->order('sort', 'desc')
|
||||
->select()
|
||||
@ -69,6 +70,7 @@ class FrontMenuController extends BaseController
|
||||
// 准备菜单数据
|
||||
$menuData = [
|
||||
'pid' => $data['pid'] ?? 0,
|
||||
'tid' => $this->getTenantId(),
|
||||
'title' => $data['title'],
|
||||
'type' => $data['type'],
|
||||
'sort' => $data['sort'] ?? 0,
|
||||
@ -130,6 +132,7 @@ class FrontMenuController extends BaseController
|
||||
// 准备更新数据
|
||||
$updateData = [
|
||||
'title' => $data['title'],
|
||||
'tid' => $this->getTenantId(),
|
||||
'pid' => $data['pid'] ?? null,
|
||||
'type' => $data['type'],
|
||||
'path' => $data['path'] ?? null,
|
||||
@ -177,6 +180,7 @@ class FrontMenuController extends BaseController
|
||||
try {
|
||||
// 检查是否有子前端导航
|
||||
$hasChildren = FrontMenu::where('pid', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('pid', $id)
|
||||
->where('delete_time', null)
|
||||
->count() > 0;
|
||||
@ -192,6 +196,7 @@ class FrontMenuController extends BaseController
|
||||
$result = FrontMenu::where('id', $id)
|
||||
->where('id', $id)
|
||||
->where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->update([
|
||||
'delete_time' => date('Y-m-d H:i:s'),
|
||||
'update_time' => date('Y-m-d H:i:s')
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\admin\controller;
|
||||
namespace app\admin\controller\Cms\OnePage;
|
||||
|
||||
use app\admin\BaseController;
|
||||
use think\exception\ValidateException;
|
||||
@ -10,7 +10,7 @@ use think\facade\Db;
|
||||
use think\facade\Session;
|
||||
use think\response\Json;
|
||||
use think\db\exception\DbException;
|
||||
use app\model\OnePage;
|
||||
use app\model\Cms\OnePage;
|
||||
|
||||
class OnePageController extends BaseController
|
||||
{
|
||||
@ -22,6 +22,7 @@ class OnePageController extends BaseController
|
||||
{
|
||||
try {
|
||||
$onePages = OnePage::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->order('sort', 'asc')
|
||||
->field('id, title, content, path, sort, status, create_time, update_time')
|
||||
->select()
|
||||
@ -69,6 +70,7 @@ class OnePageController extends BaseController
|
||||
|
||||
// 检查路由是否已存在
|
||||
$exists = OnePage::where('path', $data['path'])
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
if ($exists) {
|
||||
@ -85,6 +87,7 @@ class OnePageController extends BaseController
|
||||
'path' => $data['path'],
|
||||
'sort' => $data['sort'] ?? 0,
|
||||
'status' => $data['status'] ?? 1,
|
||||
'tid' => $this->getTenantId(),
|
||||
'create_time' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
|
||||
@ -150,8 +153,9 @@ class OnePageController extends BaseController
|
||||
]);
|
||||
}
|
||||
|
||||
// 检查单页是否存在
|
||||
// 检查单页是否存在(验证tid)
|
||||
$onePage = OnePage::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
|
||||
@ -165,6 +169,7 @@ class OnePageController extends BaseController
|
||||
// 检查路由是否被其他单页使用
|
||||
$exists = OnePage::where('path', $data['path'])
|
||||
->where('id', '<>', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
if ($exists) {
|
||||
@ -222,8 +227,9 @@ class OnePageController extends BaseController
|
||||
public function deleteOnePage(int $id)
|
||||
{
|
||||
try {
|
||||
// 检查单页是否存在
|
||||
// 检查单页是否存在(验证tid)
|
||||
$onePage = OnePage::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
|
||||
@ -236,6 +242,7 @@ class OnePageController extends BaseController
|
||||
|
||||
// 逻辑删除单页
|
||||
$result = OnePage::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->update([
|
||||
'delete_time' => date('Y-m-d H:i:s'),
|
||||
@ -8,6 +8,7 @@ use app\admin\BaseController;
|
||||
use app\service\ThemeService;
|
||||
use think\facade\Request;
|
||||
|
||||
|
||||
/**
|
||||
* 模板管理控制器
|
||||
*/
|
||||
|
||||
@ -11,7 +11,7 @@ use think\facade\Session;
|
||||
use think\response\Json;
|
||||
use think\db\exception\DbException;
|
||||
use app\model\Erp\Employee;
|
||||
use app\model\AdminUser;
|
||||
use app\model\System\AdminUser;
|
||||
|
||||
class EmployeeController extends BaseController
|
||||
{
|
||||
@ -20,13 +20,13 @@ class EmployeeController extends BaseController
|
||||
*/
|
||||
public function getEmployee()
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$list = Employee::where('delete_time', null)
|
||||
->where('tenant_id', $tenantId)
|
||||
->where('tid', $tid)
|
||||
->select()
|
||||
->toArray();
|
||||
return json([
|
||||
@ -41,14 +41,14 @@ class EmployeeController extends BaseController
|
||||
*/
|
||||
public function getEmployeeDetail($id)
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$detail = Employee::where('id', $id)
|
||||
->where('delete_time', null)
|
||||
->where('tenant_id', $tenantId)
|
||||
->where('tid', $tid)
|
||||
->find()
|
||||
->toArray();
|
||||
return json([
|
||||
@ -63,13 +63,13 @@ class EmployeeController extends BaseController
|
||||
*/
|
||||
public function createEmployee()
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$data = $this->request->post();
|
||||
$data['tenant_id'] = $tenantId;
|
||||
$data['tid'] = $tid;
|
||||
|
||||
$employee = Employee::create($data);
|
||||
if ($employee) {
|
||||
@ -91,16 +91,16 @@ class EmployeeController extends BaseController
|
||||
*/
|
||||
public function editEmployee($id)
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$data = $this->request->post();
|
||||
unset($data['tenant_id']); // 不允许修改租户ID
|
||||
unset($data['tid']); // 不允许修改租户ID
|
||||
|
||||
$employee = Employee::where('id', $id)
|
||||
->where('tenant_id', $tenantId)
|
||||
->where('tid', $tid)
|
||||
->update($data);
|
||||
if ($employee !== false) {
|
||||
return json([
|
||||
@ -121,13 +121,13 @@ class EmployeeController extends BaseController
|
||||
*/
|
||||
public function deleteEmployee($id)
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$employee = Employee::where('id', $id)
|
||||
->where('tenant_id', $tenantId)
|
||||
->where('tid', $tid)
|
||||
->update(['delete_time' => date('Y-m-d H:i:s')]);
|
||||
if ($employee) {
|
||||
return json([
|
||||
|
||||
@ -11,7 +11,7 @@ use think\facade\Session;
|
||||
use think\response\Json;
|
||||
use think\db\exception\DbException;
|
||||
use app\model\Erp\Organization;
|
||||
use app\model\AdminUser;
|
||||
use app\model\System\AdminUser;
|
||||
|
||||
class OrganizationController extends BaseController
|
||||
{
|
||||
@ -20,13 +20,13 @@ class OrganizationController extends BaseController
|
||||
*/
|
||||
public function getOrganization()
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$list = Organization::where('delete_time', null)
|
||||
->where('tenant_id', $tenantId)
|
||||
->where('tid', $tid)
|
||||
->select()
|
||||
->toArray();
|
||||
return json([
|
||||
@ -41,14 +41,14 @@ class OrganizationController extends BaseController
|
||||
*/
|
||||
public function getOrganizationDetail($id)
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$detail = Organization::where('id', $id)
|
||||
->where('delete_time', null)
|
||||
->where('tenant_id', $tenantId)
|
||||
->where('tid', $tid)
|
||||
->find()
|
||||
->toArray();
|
||||
$detail['leader_name'] = AdminUser::where('id', $detail['leader_id'])->value('name');
|
||||
@ -65,13 +65,13 @@ class OrganizationController extends BaseController
|
||||
*/
|
||||
public function createOrganization()
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$data = $this->request->post();
|
||||
$data['tenant_id'] = $tenantId;
|
||||
$data['tid'] = $tid;
|
||||
|
||||
$organization = Organization::create($data);
|
||||
if ($organization) {
|
||||
@ -93,16 +93,16 @@ class OrganizationController extends BaseController
|
||||
*/
|
||||
public function editOrganization($id)
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$data = $this->request->post();
|
||||
unset($data['tenant_id']); // 不允许修改租户ID
|
||||
unset($data['tid']); // 不允许修改租户ID
|
||||
|
||||
$organization = Organization::where('id', $id)
|
||||
->where('tenant_id', $tenantId)
|
||||
->where('tid', $tid)
|
||||
->update($data);
|
||||
if ($organization !== false) {
|
||||
return json([
|
||||
@ -123,13 +123,13 @@ class OrganizationController extends BaseController
|
||||
*/
|
||||
public function deleteOrganization($id)
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$organization = Organization::where('id', $id)
|
||||
->where('tenant_id', $tenantId)
|
||||
->where('tid', $tid)
|
||||
->update(['delete_time' => date('Y-m-d H:i:s')]);
|
||||
if ($organization) {
|
||||
return json([
|
||||
@ -149,12 +149,12 @@ class OrganizationController extends BaseController
|
||||
*/
|
||||
public function getCompanys()
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$where = [['delete_time', '=', null], ['is_company', '=', 1], ['tenant_id', '=', $tenantId]];
|
||||
$where = [['delete_time', '=', null], ['is_company', '=', 1], ['tid', '=', $tid]];
|
||||
|
||||
$list = Organization::where($where)->select()->toArray();
|
||||
return json([
|
||||
@ -169,14 +169,14 @@ class OrganizationController extends BaseController
|
||||
*/
|
||||
public function getDepartments()
|
||||
{
|
||||
$tenantId = $this->getTenantId();
|
||||
if (!$tenantId) {
|
||||
$tid = $this->getTenantId();
|
||||
if (!$tid) {
|
||||
return json(['code' => 403, 'msg' => '无法获取租户信息']);
|
||||
}
|
||||
|
||||
$parentId = input('parent_id/d', 0);
|
||||
|
||||
$where = [['delete_time', '=', null], ['is_company', '=', 0], ['tenant_id', '=', $tenantId]];
|
||||
$where = [['delete_time', '=', null], ['is_company', '=', 0], ['tid', '=', $tid]];
|
||||
|
||||
if ($parentId > 0) {
|
||||
$where[] = ['parent_id', '=', $parentId];
|
||||
|
||||
@ -11,10 +11,11 @@ use think\facade\Cache;
|
||||
use think\response\Json;
|
||||
use app\service\JwtService;
|
||||
|
||||
use app\model\AdminUser;
|
||||
use app\model\AdminUserGroup;
|
||||
use app\model\System\AdminUser;
|
||||
use app\model\System\AdminUserGroup;
|
||||
use app\model\System\SystemSiteSettings;
|
||||
use app\model\Tenant\Tenant;
|
||||
use app\model\System\OperationLog;
|
||||
|
||||
class LoginController extends BaseController
|
||||
{
|
||||
@ -76,12 +77,12 @@ class LoginController extends BaseController
|
||||
'msg' => '租户不存在或已禁用'
|
||||
]);
|
||||
}
|
||||
$tenant_id = $tenant->id;
|
||||
$tid = $tenant->id;
|
||||
$tenant_name = $tenant->tenant_name;
|
||||
|
||||
// 5. 查询用户(新增:关联租户ID,确保用户属于该租户)
|
||||
$user = AdminUser::where('account', $data['account'])
|
||||
->where('tenant_id', $tenant_id) // 核心:验证用户所属租户
|
||||
->where('tid', $tid) // 核心:验证用户所属租户
|
||||
->where('status', 1)
|
||||
->find();
|
||||
|
||||
@ -121,7 +122,7 @@ class LoginController extends BaseController
|
||||
'account' => $user['account'],
|
||||
'name' => $user['name'],
|
||||
'group_id' => $user['group_id'],
|
||||
'tenant_id' => $tenant_id, // 新增:租户ID
|
||||
'tid' => $tid, // 新增:租户ID
|
||||
'tenant' => $tenant // 新增:租户名称
|
||||
];
|
||||
|
||||
@ -146,7 +147,7 @@ class LoginController extends BaseController
|
||||
|
||||
// 11. 写入用户数据缓存(核心:缓存包含租户信息,示例用Redis,可根据你的缓存工具调整)
|
||||
try {
|
||||
$cacheKey = 'admin_user_' . $user['id'] . '_' . $tenant_id; // 缓存键加入租户ID,避免多租户冲突
|
||||
$cacheKey = 'admin_user_' . $user['id'] . '_' . $tid; // 缓存键加入租户ID,避免多租户冲突
|
||||
$cacheExpire = 86400 * 7; // 缓存7天,可根据需求调整
|
||||
// 写入缓存(这里假设你使用thinkphp的Cache类,若用其他工具可替换)
|
||||
\think\facade\Cache::set($cacheKey, $userInfo, $cacheExpire);
|
||||
@ -159,7 +160,7 @@ class LoginController extends BaseController
|
||||
try {
|
||||
$this->logSuccess('登录管理', '登录', [
|
||||
'id' => $user['id'],
|
||||
'tenant_id' => $tenant_id,
|
||||
'tid' => $tid,
|
||||
'tenant' => $tenant
|
||||
], $userInfo);
|
||||
} catch (\Exception $e) {
|
||||
@ -209,7 +210,7 @@ class LoginController extends BaseController
|
||||
if ($userInfo && isset($userInfo['id'])) {
|
||||
$this->logSuccess('登录管理', '退出登录', ['result' => 'success'], $userInfo);
|
||||
} else {
|
||||
\app\model\OperationLog::create([
|
||||
OperationLog::create([
|
||||
'user_id' => 0,
|
||||
'user_account' => '',
|
||||
'user_name' => '未知用户',
|
||||
|
||||
@ -11,8 +11,8 @@ use think\facade\Session;
|
||||
use think\response\Json;
|
||||
use think\db\exception\DbException;
|
||||
use app\model\SystemMenu;
|
||||
use app\model\AdminUser;
|
||||
use app\model\AdminUserGroup;
|
||||
use app\model\System\AdminUser;
|
||||
use app\model\System\AdminUserGroup;
|
||||
|
||||
class MenuController extends BaseController
|
||||
{
|
||||
|
||||
@ -12,7 +12,7 @@ use think\response\Json;
|
||||
|
||||
use app\model\SystemModuleCenter;
|
||||
use app\model\SystemModuleCategory;
|
||||
use app\model\AdminUser;
|
||||
use app\model\System\AdminUser;
|
||||
|
||||
class ModuleCenterController extends BaseController
|
||||
{
|
||||
|
||||
@ -7,7 +7,7 @@ namespace app\admin\controller;
|
||||
use app\admin\BaseController;
|
||||
use think\response\Json;
|
||||
use app\model\AdminModules;
|
||||
use app\model\AdminUserGroup;
|
||||
use app\model\System\AdminUserGroup;
|
||||
|
||||
class ModulesController extends BaseController
|
||||
{
|
||||
|
||||
@ -7,8 +7,8 @@ namespace app\admin\controller\OperationLog;
|
||||
use app\admin\BaseController;
|
||||
use think\facade\Request;
|
||||
use think\response\Json;
|
||||
use app\model\OperationLog;
|
||||
use app\model\AdminUser;
|
||||
use app\model\System\OperationLog;
|
||||
use app\model\System\AdminUser;
|
||||
|
||||
class OperationLogController extends BaseController
|
||||
{
|
||||
@ -28,7 +28,8 @@ class OperationLogController extends BaseController
|
||||
$startTime = Request::param('startTime/s', '');
|
||||
$endTime = Request::param('endTime/s', '');
|
||||
|
||||
$query = OperationLog::where('delete_time', null);
|
||||
$query = OperationLog::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId());
|
||||
|
||||
// 关键词搜索(用户姓名、URL)
|
||||
if ($keyword) {
|
||||
@ -129,6 +130,7 @@ class OperationLogController extends BaseController
|
||||
{
|
||||
try {
|
||||
$log = OperationLog::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
|
||||
@ -164,6 +166,7 @@ class OperationLogController extends BaseController
|
||||
{
|
||||
try {
|
||||
$log = OperationLog::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
|
||||
@ -206,6 +209,7 @@ class OperationLogController extends BaseController
|
||||
}
|
||||
|
||||
OperationLog::whereIn('id', $ids)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->delete();
|
||||
|
||||
@ -230,11 +234,13 @@ class OperationLogController extends BaseController
|
||||
try {
|
||||
// 获取模块列表
|
||||
$modules = OperationLog::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->group('module')
|
||||
->column('module');
|
||||
|
||||
// 获取动作列表
|
||||
$actions = OperationLog::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId())
|
||||
->group('action')
|
||||
->column('action');
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
namespace app\admin\controller\OperationLog;
|
||||
|
||||
use app\model\OperationLog;
|
||||
use app\model\System\OperationLog;
|
||||
use think\facade\Request;
|
||||
use think\facade\Session;
|
||||
|
||||
@ -37,6 +37,7 @@ class OperationLogHelper
|
||||
$userId = $userInfo['id'] ?? 0;
|
||||
$userAccount = $userInfo['account'] ?? '';
|
||||
$userName = $userInfo['name'] ?? '';
|
||||
$tid = $userInfo['tid'] ?? ($userInfo['tid'] ?? 0);
|
||||
|
||||
// 获取请求信息
|
||||
$method = Request::method();
|
||||
@ -52,6 +53,7 @@ class OperationLogHelper
|
||||
'user_id' => $userId,
|
||||
'user_account' => $userAccount,
|
||||
'user_name' => $userName,
|
||||
'tid' => $tid,
|
||||
'module' => $module,
|
||||
'action' => $action,
|
||||
'method' => $method,
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
namespace app\admin\controller\OperationLog;
|
||||
|
||||
use think\facade\Request;
|
||||
use app\model\OperationLog;
|
||||
use app\model\System\OperationLog;
|
||||
use app\service\JwtService;
|
||||
|
||||
/**
|
||||
@ -33,6 +33,7 @@ class OperationLogger
|
||||
$userId = $userInfo['id'] ?? 0;
|
||||
$userAccount = $userInfo['account'] ?? '';
|
||||
$userName = $userInfo['name'] ?? '';
|
||||
$tid = $userInfo['tid'] ?? ($userInfo['tid'] ?? 0);
|
||||
|
||||
if (empty($requestData)) {
|
||||
$requestData = Request::param();
|
||||
@ -49,6 +50,7 @@ class OperationLogger
|
||||
'user_id' => $userId,
|
||||
'user_account' => $userAccount,
|
||||
'user_name' => $userName,
|
||||
'tid' => $tid,
|
||||
'module' => $module,
|
||||
'action' => $action,
|
||||
'method' => $method,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
namespace app\admin\controller\System;
|
||||
|
||||
use app\admin\BaseController;
|
||||
use think\facade\Filesystem;
|
||||
@ -8,8 +8,8 @@ use think\facade\Request;
|
||||
use think\facade\Db;
|
||||
use think\Response;
|
||||
|
||||
use app\model\FilesCategory;
|
||||
use app\model\Files;
|
||||
use app\model\System\FilesCategory;
|
||||
use app\model\System\Files;
|
||||
|
||||
class FileController extends BaseController
|
||||
{
|
||||
@ -38,7 +38,8 @@ class FileController extends BaseController
|
||||
$cate = Request::param('cate/d', 0);
|
||||
$keyword = Request::param('keyword/s', '');
|
||||
|
||||
$query = Files::where('delete_time', null);
|
||||
$query = Files::where('delete_time', null)
|
||||
->where('tid', $this->getTenantId());
|
||||
|
||||
if ($cate) {
|
||||
$query->where('cate', $cate);
|
||||
@ -75,11 +76,20 @@ class FileController extends BaseController
|
||||
public function getUserCate()
|
||||
{
|
||||
try {
|
||||
$cate = FilesCategory::where('delete_time', null)->field('id,name')->select();
|
||||
$tid = $this->getTenantId();
|
||||
|
||||
// 只根据 tid 筛选分类
|
||||
$cate = FilesCategory::where('delete_time', null)
|
||||
->where('tid', $tid)
|
||||
->field('id,name')
|
||||
->select();
|
||||
|
||||
// 获取每个分类下的文件数量
|
||||
foreach ($cate as &$c) {
|
||||
$c['total'] = Files::where('cate', $c['id'])->where('delete_time', null)->count();
|
||||
$c['total'] = Files::where('cate', $c['id'])
|
||||
->where('tid', $tid)
|
||||
->where('delete_time', null)
|
||||
->count();
|
||||
}
|
||||
|
||||
return json([
|
||||
@ -101,6 +111,7 @@ class FileController extends BaseController
|
||||
try {
|
||||
$data = Request::param();
|
||||
$data['create_time'] = date('Y-m-d H:i:s');
|
||||
$data['tid'] = $this->getTenantId();
|
||||
$id = FilesCategory::insertGetId($data);
|
||||
|
||||
// 记录操作日志
|
||||
@ -129,7 +140,9 @@ class FileController extends BaseController
|
||||
{
|
||||
try {
|
||||
$data = Request::param();
|
||||
$result = FilesCategory::where('id', $id)->update(['name' => $data['name']]);
|
||||
$result = FilesCategory::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->update(['name' => $data['name']]);
|
||||
// 记录操作日志
|
||||
$this->logSuccess('文件管理', '重命名文件分组', ['id' => $id]);
|
||||
return json([
|
||||
@ -150,7 +163,21 @@ class FileController extends BaseController
|
||||
public function deleteFileCate($id)
|
||||
{
|
||||
try {
|
||||
$result = FilesCategory::where('id', $id)->update(['delete_time' => date('Y-m-d H:i:s')]);
|
||||
// 检查分组里是否有关联文件
|
||||
$fileCount = Files::where('cate', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->count();
|
||||
if ($fileCount > 0) {
|
||||
return json([
|
||||
'code' => 400,
|
||||
'msg' => '该分组下还有 ' . $fileCount . ' 个文件,请先删除分组内文件!'
|
||||
]);
|
||||
}
|
||||
|
||||
$result = FilesCategory::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->update(['delete_time' => date('Y-m-d H:i:s')]);
|
||||
// 记录操作日志
|
||||
$this->logSuccess('文件管理', '删除文件分组', ['id' => $id]);
|
||||
return json([
|
||||
@ -175,12 +202,16 @@ class FileController extends BaseController
|
||||
$pageSize = Request::param('pageSize/d', 10);
|
||||
$keyword = Request::param('keyword/s', '');
|
||||
|
||||
$query = Files::where('cate', $id)->where('delete_time', null);
|
||||
$query = Files::where('cate', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null);
|
||||
|
||||
if ($keyword) {
|
||||
$query->whereLike('name', "%{$keyword}%");
|
||||
}
|
||||
|
||||
// 获取总条数
|
||||
$total = $query->count();
|
||||
$list = $query->page($page, $pageSize)
|
||||
->order('create_time', 'desc')
|
||||
->select();
|
||||
@ -196,6 +227,7 @@ class FileController extends BaseController
|
||||
'msg' => 'success',
|
||||
'data' => [
|
||||
'list' => $list,
|
||||
'total' => $total,
|
||||
'page' => $page,
|
||||
'pageSize' => $pageSize,
|
||||
'categoryId' => $id
|
||||
@ -209,7 +241,7 @@ class FileController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
// 上传文件
|
||||
// 文件上传
|
||||
public function uploadFile()
|
||||
{
|
||||
try {
|
||||
@ -230,7 +262,10 @@ class FileController extends BaseController
|
||||
$fileMd5 = md5_file($file->getRealPath());
|
||||
|
||||
// 检查是否已存在相同文件
|
||||
$existFile = Files::where('md5', $fileMd5)->where('delete_time', null)->find();
|
||||
$existFile = Files::where('md5', $fileMd5)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
|
||||
if ($existFile) {
|
||||
return json([
|
||||
@ -272,6 +307,7 @@ class FileController extends BaseController
|
||||
'src' => $fileUrl,
|
||||
'md5' => $fileMd5,
|
||||
'uploader' => $userId,
|
||||
'tid' => $this->getTenantId(),
|
||||
'create_time' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
|
||||
@ -309,7 +345,10 @@ class FileController extends BaseController
|
||||
|
||||
$data['update_time'] = date('Y-m-d H:i:s');
|
||||
|
||||
$result = Files::where('id', $id)->where('delete_time', null)->update($data);
|
||||
$result = Files::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->update($data);
|
||||
|
||||
if ($result) {
|
||||
// 记录操作日志
|
||||
@ -329,7 +368,17 @@ class FileController extends BaseController
|
||||
public function deleteFile($id)
|
||||
{
|
||||
try {
|
||||
$result = Files::where('id', $id)->update(['delete_time' => date('Y-m-d H:i:s')]);
|
||||
// 先获取文件信息
|
||||
$file = Files::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->find();
|
||||
if (!$file) {
|
||||
return json(['code' => 404, 'msg' => '文件不存在']);
|
||||
}
|
||||
|
||||
$result = Files::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->update(['delete_time' => date('Y-m-d H:i:s')]);
|
||||
|
||||
if ($result) {
|
||||
// 记录操作日志
|
||||
@ -345,11 +394,49 @@ class FileController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
//永久删除文件
|
||||
public function deleteFilePermanently($id)
|
||||
{
|
||||
try {
|
||||
// 先获取文件信息
|
||||
$file = Files::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->find();
|
||||
if (!$file) {
|
||||
return json(['code' => 404, 'msg' => '文件不存在']);
|
||||
}
|
||||
|
||||
// 删除服务器上的文件
|
||||
if ($file['src']) {
|
||||
$this->deleteFileFromServer($file['src']);
|
||||
}
|
||||
|
||||
$result = Files::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->update(['delete_time' => date('Y-m-d H:i:s')]);
|
||||
|
||||
if ($result) {
|
||||
// 记录操作日志
|
||||
$this->logSuccess('文件管理', '永久删除文件', ['id' => $id]);
|
||||
return json(['code' => 200, 'msg' => '永久删除成功']);
|
||||
}
|
||||
|
||||
return json(['code' => 404, 'msg' => '文件不存在']);
|
||||
} catch (\Exception $e) {
|
||||
// 记录失败日志
|
||||
$this->logFail('文件管理', '永久删除文件', $e->getMessage());
|
||||
return json(['code' => 500, 'msg' => '永久删除失败: ' . $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
// 下载文件
|
||||
public function download($id)
|
||||
{
|
||||
try {
|
||||
$file = Files::where('id', $id)->where('delete_time', null)->find();
|
||||
$file = Files::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
|
||||
if (!$file) {
|
||||
return json(['code' => 404, 'msg' => '文件不存在']);
|
||||
@ -374,7 +461,9 @@ class FileController extends BaseController
|
||||
{
|
||||
try {
|
||||
$cate = Request::param('cate/d', 0);
|
||||
$result = Files::where('id', $id)->update(['cate' => $cate]);
|
||||
$result = Files::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->update(['cate' => $cate]);
|
||||
if ($result) {
|
||||
// 记录操作日志
|
||||
$this->logSuccess('文件管理', '移动文件', ['id' => $id]);
|
||||
@ -389,128 +478,120 @@ class FileController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
//删除服务器上文件
|
||||
private function deleteFileFromServer($fileUrl)
|
||||
{
|
||||
// 去掉开头的 /storage/,得到相对路径
|
||||
$relativePath = ltrim($fileUrl, '/');
|
||||
if (strpos($relativePath, 'storage/') === 0) {
|
||||
$relativePath = substr($relativePath, 8); // 去掉 'storage/' 部分
|
||||
}
|
||||
|
||||
// 获取实际服务器路径
|
||||
$fullPath = root_path() . 'public/storage/' . $relativePath;
|
||||
|
||||
// 上传头像
|
||||
public function uploadAvatar()
|
||||
if (file_exists($fullPath)) {
|
||||
unlink($fullPath);
|
||||
}
|
||||
}
|
||||
|
||||
// 批量删除文件
|
||||
public function batchDeleteFiles()
|
||||
{
|
||||
try {
|
||||
$file = Request::file('file');
|
||||
if (!$file) {
|
||||
return json(['code' => 400, 'msg' => '请选择要上传的文件']);
|
||||
$ids = Request::param('ids/a', []);
|
||||
|
||||
if (empty($ids)) {
|
||||
return json(['code' => 400, 'msg' => '请选择要删除的文件']);
|
||||
}
|
||||
|
||||
// 验证文件大小和类型
|
||||
$maxSize = 50 * 1024 * 1024; // 50MB
|
||||
$fileExt = strtolower($file->getOriginalExtension());
|
||||
|
||||
if ($file->getSize() > $maxSize) {
|
||||
return json(['code' => 400, 'msg' => '文件大小不能超过50MB']);
|
||||
}
|
||||
|
||||
// 计算文件MD5
|
||||
$fileMd5 = md5_file($file->getRealPath());
|
||||
|
||||
// 检查是否已存在相同文件
|
||||
$existFile = Files::where('md5', $fileMd5)->where('delete_time', null)->find();
|
||||
|
||||
if ($existFile) {
|
||||
// 检查物理文件是否存在
|
||||
$existFilePath = public_path() . $existFile['src'];
|
||||
if (!file_exists($existFilePath)) {
|
||||
// 物理文件不存在,删除数据库记录,继续上传
|
||||
Files::where('id', $existFile['id'])->delete();
|
||||
} else {
|
||||
return json([
|
||||
'code' => 201,
|
||||
'msg' => '文件已存在',
|
||||
'data' => [
|
||||
'url' => $existFile['src'],
|
||||
'id' => $existFile['id'],
|
||||
'name' => $existFile['name']
|
||||
]
|
||||
]);
|
||||
foreach ($ids as $id) {
|
||||
$file = Files::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->find();
|
||||
if ($file && $file['src']) {
|
||||
$this->deleteFileFromServer($file['src']);
|
||||
}
|
||||
}
|
||||
|
||||
// 确定文件类型
|
||||
$fileType = 1; // 默认为文件
|
||||
foreach ($this->allowedExtensions as $type => $extensions) {
|
||||
if (in_array($fileExt, $extensions)) {
|
||||
$fileType = $this->fileTypes[$type];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$cate = Request::param('cate/d', 0);
|
||||
// 生成按日期分类的目录结构
|
||||
$datePath = date('Y/m/d');
|
||||
$saveName = $datePath . '/' . uniqid() . '.' . $fileExt;
|
||||
$fullPath = Filesystem::disk('public')->putFileAs('avatar', $file, $saveName);
|
||||
$fileUrl = '/storage/' . str_replace('\\', '/', $fullPath);
|
||||
|
||||
// 获取当前登录用户ID
|
||||
$userId = Request::middleware('user_id', '');
|
||||
|
||||
// 保存文件信息到数据库
|
||||
$fileData = [
|
||||
'name' => $file->getOriginalName(),
|
||||
'type' => $fileType,
|
||||
'cate' => $cate,
|
||||
'size' => $file->getSize(),
|
||||
'src' => $fileUrl,
|
||||
'md5' => $fileMd5,
|
||||
'uploader' => $userId,
|
||||
'create_time' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
|
||||
$fileId = Files::insertGetId($fileData);
|
||||
|
||||
// 记录操作日志
|
||||
$this->logSuccess('文件管理', '上传图片', ['id' => $fileId]);
|
||||
return json([
|
||||
'code' => 200,
|
||||
'msg' => '上传成功',
|
||||
'data' => [
|
||||
'url' => $fileUrl,
|
||||
'id' => $fileId,
|
||||
'name' => $fileData['name']
|
||||
]
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
// 记录失败日志
|
||||
$this->logFail('文件管理', '上传图片', $e->getMessage());
|
||||
return json([
|
||||
'code' => 500,
|
||||
'msg' => '上传失败: ' . $e->getMessage()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新头像
|
||||
public function updateAvatar($id)
|
||||
{
|
||||
try {
|
||||
$data = Request::only(['name', 'cate']);
|
||||
if (empty($data)) {
|
||||
return json(['code' => 400, 'msg' => '无更新数据']);
|
||||
}
|
||||
|
||||
$data['update_time'] = date('Y-m-d H:i:s');
|
||||
|
||||
$result = Files::where('id', $id)->where('delete_time', null)->update($data);
|
||||
$result = Files::where('id', 'in', $ids)
|
||||
->where('tid', $this->getTenantId())
|
||||
->update(['delete_time' => date('Y-m-d H:i:s')]);
|
||||
|
||||
if ($result) {
|
||||
// 记录操作日志
|
||||
$this->logSuccess('文件管理', '更新头像', ['id' => $id]);
|
||||
return json(['code' => 200, 'msg' => '更新成功']);
|
||||
$this->logSuccess('文件管理', '批量删除文件', ['ids' => $ids]);
|
||||
return json(['code' => 200, 'msg' => '批量删除成功']);
|
||||
}
|
||||
|
||||
return json(['code' => 404, 'msg' => '头像不存在']);
|
||||
return json(['code' => 404, 'msg' => '文件不存在']);
|
||||
} catch (\Exception $e) {
|
||||
// 记录失败日志
|
||||
$this->logFail('文件管理', '更新头像', $e->getMessage());
|
||||
return json(['code' => 500, 'msg' => '更新失败: ' . $e->getMessage()]);
|
||||
$this->logFail('文件管理', '批量删除文件', $e->getMessage());
|
||||
return json(['code' => 500, 'msg' => '批量删除失败: ' . $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
// 批量彻底删除文件
|
||||
public function batchDeleteFilesPermanently()
|
||||
{
|
||||
try {
|
||||
$ids = Request::param('ids/a', []);
|
||||
|
||||
if (empty($ids)) {
|
||||
return json(['code' => 400, 'msg' => '请选择要彻底删除的文件']);
|
||||
}
|
||||
|
||||
foreach ($ids as $id) {
|
||||
$file = Files::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->find();
|
||||
if ($file && $file['src']) {
|
||||
$this->deleteFileFromServer($file['src']);
|
||||
}
|
||||
}
|
||||
|
||||
$result = Files::where('id', 'in', $ids)
|
||||
->where('tid', $this->getTenantId())
|
||||
->force(true)
|
||||
->update(['delete_time' => date('Y-m-d H:i:s')])
|
||||
->delete();
|
||||
|
||||
if ($result) {
|
||||
$this->logSuccess('文件管理', '批量彻底删除文件', ['ids' => $ids]);
|
||||
return json(['code' => 200, 'msg' => '批量彻底删除成功']);
|
||||
}
|
||||
|
||||
return json(['code' => 404, 'msg' => '文件不存在']);
|
||||
} catch (\Exception $e) {
|
||||
$this->logFail('文件管理', '批量彻底删除文件', $e->getMessage());
|
||||
return json(['code' => 500, 'msg' => '批量彻底删除失败: ' . $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
// 批量移动文件
|
||||
public function batchMoveFiles()
|
||||
{
|
||||
try {
|
||||
$ids = Request::param('ids/a', []);
|
||||
$cate = Request::param('cate/d', 0);
|
||||
|
||||
if (empty($ids)) {
|
||||
return json(['code' => 400, 'msg' => '请选择要移动的文件']);
|
||||
}
|
||||
|
||||
$result = Files::where('id', 'in', $ids)
|
||||
->where('tid', $this->getTenantId())
|
||||
->update(['cate' => $cate]);
|
||||
|
||||
if ($result) {
|
||||
$this->logSuccess('文件管理', '批量移动文件', ['ids' => $ids, 'cate' => $cate]);
|
||||
return json(['code' => 200, 'msg' => '批量移动成功']);
|
||||
}
|
||||
|
||||
return json(['code' => 404, 'msg' => '文件不存在']);
|
||||
} catch (\Exception $e) {
|
||||
$this->logFail('文件管理', '批量移动文件', $e->getMessage());
|
||||
return json(['code' => 500, 'msg' => '批量移动失败: ' . $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\admin\controller;
|
||||
namespace app\admin\controller\System;
|
||||
|
||||
use app\admin\BaseController;
|
||||
use think\exception\ValidateException;
|
||||
@ -10,8 +10,8 @@ use think\facade\Db;
|
||||
use think\facade\Session;
|
||||
use think\response\Json;
|
||||
|
||||
use app\model\AdminUser;
|
||||
use app\model\AdminUserGroup;
|
||||
use app\model\System\AdminUser;
|
||||
use app\model\System\AdminUserGroup;
|
||||
|
||||
class RoleController extends BaseController
|
||||
{
|
||||
@ -21,7 +21,11 @@ class RoleController extends BaseController
|
||||
*/
|
||||
public function getAllRoles()
|
||||
{
|
||||
$tid = $this->getTenantId();
|
||||
$roles = AdminUserGroup::where('delete_time', null)
|
||||
->where(function ($query) use ($tid) {
|
||||
$query->where('tid', $tid)->whereOr('tid', 0);
|
||||
})
|
||||
->order('id', 'asc')
|
||||
->select();
|
||||
return json([
|
||||
@ -39,6 +43,7 @@ class RoleController extends BaseController
|
||||
public function getRoleById(int $id)
|
||||
{
|
||||
$role = AdminUserGroup::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
if (!$role) {
|
||||
@ -73,6 +78,7 @@ class RoleController extends BaseController
|
||||
|
||||
// 检查角色名称是否已存在
|
||||
$exists = AdminUserGroup::where('name', $data['name'])
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
if ($exists) {
|
||||
@ -85,6 +91,7 @@ class RoleController extends BaseController
|
||||
// 准备数据
|
||||
$roleData = [
|
||||
'name' => $data['name'],
|
||||
'tid' => $this->getTenantId(),
|
||||
'status' => $data['status'] ?? 1,
|
||||
'rights' => !empty($data['rights']) ? json_encode($data['rights']) : null,
|
||||
'create_time' => date('Y-m-d H:i:s'),
|
||||
@ -136,8 +143,9 @@ class RoleController extends BaseController
|
||||
'rights|权限' => 'array'
|
||||
]);
|
||||
|
||||
// 查找角色
|
||||
// 查找角色(验证tid)
|
||||
$role = AdminUserGroup::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
if (!$role) {
|
||||
@ -150,6 +158,7 @@ class RoleController extends BaseController
|
||||
// 检查角色名称是否已被其他角色使用
|
||||
$exists = AdminUserGroup::where('name', $data['name'])
|
||||
->where('id', '<>', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
if ($exists) {
|
||||
@ -206,8 +215,9 @@ class RoleController extends BaseController
|
||||
]);
|
||||
}
|
||||
|
||||
// 查找角色
|
||||
// 查找角色(验证tid)
|
||||
$role = AdminUserGroup::where('id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->find();
|
||||
if (!$role) {
|
||||
@ -219,6 +229,7 @@ class RoleController extends BaseController
|
||||
|
||||
// 检查是否有用户正在使用该角色
|
||||
$userCount = AdminUser::where('group_id', $id)
|
||||
->where('tid', $this->getTenantId())
|
||||
->where('delete_time', null)
|
||||
->count();
|
||||
if ($userCount > 0) {
|
||||
@ -12,7 +12,7 @@ use think\response\Json;
|
||||
use think\db\exception\DbException;
|
||||
use think\Request;
|
||||
use app\model\Tenant\Tenant;
|
||||
use app\model\AdminUser;
|
||||
use app\model\System\AdminUser;
|
||||
use app\model\Template\TemplateSiteConfig;
|
||||
|
||||
class TenantController extends BaseController
|
||||
|
||||
@ -10,7 +10,7 @@ use think\facade\Db;
|
||||
use think\facade\Session;
|
||||
use think\response\Json;
|
||||
|
||||
use app\model\AdminUser;
|
||||
use app\model\System\AdminUser;
|
||||
|
||||
class UserController extends BaseController
|
||||
{
|
||||
@ -37,7 +37,7 @@ class UserController extends BaseController
|
||||
*/
|
||||
public function getTenantUsers(int $tenantId)
|
||||
{
|
||||
$users = AdminUser::where('delete_time', null)->where('tenant_id', $tenantId)->field('id, account, name, phone, birth, email, qq, sex, group_id, status, last_login_ip, login_count, create_time, update_time')->select()->toArray();
|
||||
$users = AdminUser::where('delete_time', null)->where('tid', $tenantId)->field('id, account, name, phone, birth, email, qq, sex, group_id, status, last_login_ip, login_count, create_time, update_time')->select()->toArray();
|
||||
return json([
|
||||
'code' => 200,
|
||||
'msg' => '获取成功',
|
||||
@ -107,7 +107,7 @@ class UserController extends BaseController
|
||||
$data['update_time'] = $data['create_time'];
|
||||
$data['group_id'] = 2;
|
||||
|
||||
if (!isset($data['tenant_id']) || empty($data['tenant_id'])) {
|
||||
if (!isset($data['tid']) || empty($data['tid'])) {
|
||||
return json([
|
||||
'code' => 400,
|
||||
'msg' => '租户ID不能为空'
|
||||
|
||||
@ -2,5 +2,5 @@
|
||||
use think\facade\Route;
|
||||
|
||||
// 数据统计路由
|
||||
Route::get('contentstats', 'app\\admin\\controller\\AnalyticsController@getContentStats');
|
||||
Route::get('usersstats', 'app\\admin\\controller\\AnalyticsController@getUserStats');
|
||||
Route::get('contentstats', 'app\\admin\\controller\\Cms\\Analytics\\AnalyticsController@getContentStats');
|
||||
Route::get('usersstats', 'app\\admin\\controller\\Cms\\Analytics\\AnalyticsController@getUserStats');
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
use think\facade\Route;
|
||||
|
||||
// Banner路由
|
||||
Route::get('allbanners', 'app\\admin\\controller\\BannerController@getAllBanners');
|
||||
Route::post('createbanner', 'app\\admin\\controller\\BannerController@createBanner');
|
||||
Route::post('editbanner/:id', 'app\\admin\\controller\\BannerController@editBanner');
|
||||
Route::delete('deletebanner/:id', 'app\\admin\\controller\\BannerController@deleteBanner');
|
||||
Route::get('allbanners', 'app\\admin\\controller\\Cms\\Banner\\BannerController@getAllBanners');
|
||||
Route::post('createbanner', 'app\\admin\\controller\\Cms\\Banner\\BannerController@createBanner');
|
||||
Route::post('editbanner/:id', 'app\\admin\\controller\\Cms\\Banner\\BannerController@editBanner');
|
||||
Route::delete('deletebanner/:id', 'app\\admin\\controller\\Cms\\Banner\\BannerController@deleteBanner');
|
||||
|
||||
@ -2,16 +2,20 @@
|
||||
use think\facade\Route;
|
||||
|
||||
// 文件路由
|
||||
Route::get('usercate', 'app\\admin\\controller\\FileController@getUserCate');
|
||||
Route::get('allfiles', 'app\\admin\\controller\\FileController@getAllFiles');
|
||||
Route::get('catefiles/:id', 'app\\admin\\controller\\FileController@getCateFiles');
|
||||
Route::post('uploadfile', 'app\\admin\\controller\\FileController@uploadFile');
|
||||
Route::post('updatefile/:id', 'app\\admin\\controller\\FileController@updateFile');
|
||||
Route::delete('deletefile/:id', 'app\\admin\\controller\\FileController@deleteFile');
|
||||
Route::get('movefile/:id', 'app\\admin\\controller\\FileController@moveFile');
|
||||
Route::post('createfilecate', 'app\\admin\\controller\\FileController@createFileCate');
|
||||
Route::post('renamefilecate/:id', 'app\\admin\\controller\\FileController@renameFileCate');
|
||||
Route::delete('deletefilecate/:id', 'app\\admin\\controller\\FileController@deleteFileCate');
|
||||
Route::get('usercate', 'app\\admin\\controller\\System\\FileController@getUserCate');
|
||||
Route::get('allfiles', 'app\\admin\\controller\\System\\FileController@getAllFiles');
|
||||
Route::get('catefiles/:id', 'app\\admin\\controller\\System\\FileController@getCateFiles');
|
||||
Route::post('uploadfile', 'app\\admin\\controller\\System\\FileController@uploadFile');
|
||||
Route::post('updatefile/:id', 'app\\admin\\controller\\System\\FileController@updateFile');
|
||||
Route::delete('deletefile/:id', 'app\\admin\\controller\\System\\FileController@deleteFile');
|
||||
Route::get('movefile/:id', 'app\\admin\\controller\\System\\FileController@moveFile');
|
||||
Route::post('createfilecate', 'app\\admin\\controller\\System\\FileController@createFileCate');
|
||||
Route::post('renamefilecate/:id', 'app\\admin\\controller\\System\\FileController@renameFileCate');
|
||||
Route::delete('deletefilecate/:id', 'app\\admin\\controller\\System\\FileController@deleteFileCate');
|
||||
|
||||
Route::post('uploadavatar', 'app\\admin\\controller\\FileController@uploadAvatar');
|
||||
Route::post('uploadavatar/:id', 'app\\admin\\controller\\FileController@updateAvatar');
|
||||
Route::post('uploadavatar', 'app\\admin\\controller\\System\\FileController@uploadAvatar');
|
||||
Route::post('uploadavatar/:id', 'app\\admin\\controller\\System\\FileController@updateAvatar');
|
||||
Route::post('batchdeletefiles', 'app\\admin\\controller\\System\\FileController@batchDeleteFiles');
|
||||
|
||||
Route::post('batchDeleteFilesPermanently', 'app\\admin\\controller\\System\\FileController@batchDeleteFilesPermanently');
|
||||
Route::post('batchMoveFiles', 'app\\admin\\controller\\System\\FileController@batchMoveFiles');
|
||||
@ -2,7 +2,7 @@
|
||||
use think\facade\Route;
|
||||
|
||||
// 前端导航路由
|
||||
Route::get('frontmenus', 'app\\admin\\controller\\FrontMenuController@getFrontMenus');
|
||||
Route::post('createfrontmenu', 'app\\admin\\controller\\FrontMenuController@createFrontMenu');
|
||||
Route::post('editfrontmenu/:id', 'app\\admin\\controller\\FrontMenuController@editFrontMenu');
|
||||
Route::delete('deletefrontmenu/:id', 'app\\admin\\controller\\FrontMenuController@deleteFrontMenu');
|
||||
Route::get('frontmenus', 'app\\admin\\controller\\Cms\\FrontMenu\\FrontMenuController@getFrontMenus');
|
||||
Route::post('createfrontmenu', 'app\\admin\\controller\\Cms\\FrontMenu\\FrontMenuController@createFrontMenu');
|
||||
Route::post('editfrontmenu/:id', 'app\\admin\\controller\\Cms\\FrontMenu\\FrontMenuController@editFrontMenu');
|
||||
Route::delete('deletefrontmenu/:id', 'app\\admin\\controller\\Cms\\FrontMenu\\FrontMenuController@deleteFrontMenu');
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
use think\facade\Route;
|
||||
|
||||
// 单页路由
|
||||
Route::get('allonepages', 'app\\admin\\controller\\OnePageController@getAllOnePages');
|
||||
Route::post('createonepage', 'app\\admin\\controller\\OnePageController@createOnePage');
|
||||
Route::post('editonepage/:id', 'app\\admin\\controller\\OnePageController@editOnePage');
|
||||
Route::delete('deleteonepage/:id', 'app\\admin\\controller\\OnePageController@deleteOnePage');
|
||||
Route::get('allonepages', 'app\\admin\\controller\\Cms\\OnePage\\OnePageController@getAllOnePages');
|
||||
Route::post('createonepage', 'app\\admin\\controller\\Cms\\OnePage\\OnePageController@createOnePage');
|
||||
Route::post('editonepage/:id', 'app\\admin\\controller\\Cms\\OnePage\\OnePageController@editOnePage');
|
||||
Route::delete('deleteonepage/:id', 'app\\admin\\controller\\Cms\\OnePage\\OnePageController@deleteOnePage');
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
use think\facade\Route;
|
||||
|
||||
// 角色路由
|
||||
Route::get('allRoles', 'app\\admin\\controller\\RoleController@getAllRoles');
|
||||
Route::get('roles/:id', 'app\\admin\\controller\\RoleController@getRoleById');
|
||||
Route::post('roles', 'app\\admin\\controller\\RoleController@createRole');
|
||||
Route::put('roles/:id', 'app\\admin\\controller\\RoleController@updateRole');
|
||||
Route::delete('roles/:id', 'app\\admin\\controller\\RoleController@deleteRole');
|
||||
Route::get('allRoles', 'app\\admin\\controller\\System\\RoleController@getAllRoles');
|
||||
Route::get('roles/:id', 'app\\admin\\controller\\System\\RoleController@getRoleById');
|
||||
Route::post('roles', 'app\\admin\\controller\\System\\RoleController@createRole');
|
||||
Route::put('roles/:id', 'app\\admin\\controller\\System\\RoleController@updateRole');
|
||||
Route::delete('roles/:id', 'app\\admin\\controller\\System\\RoleController@deleteRole');
|
||||
|
||||
@ -11,7 +11,7 @@ use think\facade\Cache;
|
||||
use think\response\Json;
|
||||
use app\service\JwtService;
|
||||
|
||||
use app\model\AdminUser;
|
||||
use app\model\System\AdminUser;
|
||||
use app\model\System\SystemSiteSettings;
|
||||
|
||||
class LoginController extends BaseController
|
||||
@ -80,7 +80,7 @@ class LoginController extends BaseController
|
||||
'id' => $user['id'],
|
||||
'account' => $user['account'],
|
||||
'name' => $user['name'],
|
||||
'tenant_id' => $user['tenant_id'],
|
||||
'tid' => $user['tid'],
|
||||
'group_id' => $user['group_id']
|
||||
];
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ use think\facade\Db;
|
||||
use think\facade\Session;
|
||||
use think\response\Json;
|
||||
|
||||
use app\model\AdminUser;
|
||||
use app\model\System\AdminUser;
|
||||
|
||||
class UserController extends BaseController
|
||||
{
|
||||
|
||||
@ -45,10 +45,10 @@ class DomainParse
|
||||
|
||||
if ($tenantDomain) {
|
||||
// 将租户ID写入请求对象,供后续控制器使用
|
||||
$request->tenantId = $tenantDomain['tenant_id'];
|
||||
$request->tenantId = $tenantDomain['tid'];
|
||||
|
||||
// 同时写入header,方便前端获取
|
||||
$request->header['X-Tenant-Id', $tenantDomain['tenant_id']);
|
||||
$request->header['X-Tenant-Id', $tenantDomain['tid']);
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
// | Author: Liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model;
|
||||
namespace app\model\Cms;
|
||||
|
||||
use think\Model;
|
||||
use think\model\concern\SoftDelete;
|
||||
@ -23,11 +23,12 @@ class Banner extends Model
|
||||
use SoftDelete;
|
||||
|
||||
// 数据库表名
|
||||
protected $name = 'mete_banner';
|
||||
protected $name = 'mete_apps_cms_banner';
|
||||
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'tid' => 'integer',
|
||||
'title' => 'string',
|
||||
'desc' => 'string',
|
||||
'url' => 'string',
|
||||
@ -23,7 +23,7 @@ class Demand extends Model
|
||||
use SoftDelete;
|
||||
|
||||
// 数据库表名
|
||||
protected $name = 'mete_demand';
|
||||
protected $name = 'mete_apps_cms_demand';
|
||||
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
// | Author: Liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model;
|
||||
namespace app\model\Cms;
|
||||
|
||||
use think\Model;
|
||||
use think\model\concern\SoftDelete;
|
||||
@ -23,16 +23,19 @@ class FrontMenu extends Model
|
||||
use SoftDelete;
|
||||
|
||||
// 数据库表名
|
||||
protected $name = 'mete_front_menu';
|
||||
protected $name = 'mete_apps_cms_front_menu';
|
||||
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'pid' => 'integer',
|
||||
'tid' => 'integer',
|
||||
'title' => 'string',
|
||||
'image' => 'string',
|
||||
'type' => 'integer',
|
||||
'path' => 'string',
|
||||
'component_path' => 'string',
|
||||
'sort' => 'integer',
|
||||
'desc' => 'string',
|
||||
'create_time' => 'datetime',
|
||||
'update_time' => 'datetime',
|
||||
@ -9,7 +9,7 @@
|
||||
// | Author: Liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model;
|
||||
namespace app\model\Cms;
|
||||
|
||||
use think\Model;
|
||||
use think\model\concern\SoftDelete;
|
||||
@ -23,11 +23,12 @@ class OnePage extends Model
|
||||
use SoftDelete;
|
||||
|
||||
// 数据库表名
|
||||
protected $name = 'mete_onepage';
|
||||
protected $name = 'mete_apps_cms_onepage';
|
||||
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'tid' => 'integer',
|
||||
'title' => 'string',
|
||||
'content' => 'string',
|
||||
'path' => 'string',
|
||||
@ -9,30 +9,28 @@
|
||||
// | Author: Liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model;
|
||||
namespace app\model\Cms;
|
||||
|
||||
use think\Model;
|
||||
use think\model\concern\SoftDelete;
|
||||
|
||||
/**
|
||||
* 文章分类模型
|
||||
* 网站模板模型
|
||||
*/
|
||||
class AdminUser extends Model
|
||||
class TemplateSiteConfig extends Model
|
||||
{
|
||||
// 启用软删除
|
||||
use SoftDelete;
|
||||
|
||||
// 数据库表名
|
||||
protected $name = 'mete_admin_user';
|
||||
protected $name = 'mete_apps_cms_template_site_config';
|
||||
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'sex' => 'integer',
|
||||
'group_id' => 'integer',
|
||||
'login_count' => 'integer',
|
||||
'status' => 'integer',
|
||||
'api_key_status' => 'integer',
|
||||
'tid' => 'integer',
|
||||
'key' => 'string',
|
||||
'value' => 'string',
|
||||
'create_time' => 'datetime',
|
||||
'update_time' => 'datetime',
|
||||
'delete_time' => 'datetime',
|
||||
40
app/model/Cms/TemplateThemeData.php
Normal file
40
app/model/Cms/TemplateThemeData.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006-2018 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\Cms;
|
||||
|
||||
use think\Model;
|
||||
use think\model\concern\SoftDelete;
|
||||
|
||||
/**
|
||||
* 网站模板数据模型
|
||||
*/
|
||||
class TemplateThemeData extends Model
|
||||
{
|
||||
// 启用软删除
|
||||
use SoftDelete;
|
||||
|
||||
// 数据库表名
|
||||
protected $name = 'mete_apps_cms_template_theme_data';
|
||||
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'theme_key' => 'string',
|
||||
'field_key' => 'string',
|
||||
'field_value' => 'string',
|
||||
'create_time' => 'datetime',
|
||||
'update_time' => 'datetime',
|
||||
'delete_time' => 'datetime',
|
||||
];
|
||||
|
||||
|
||||
}
|
||||
@ -28,7 +28,7 @@ class Organization extends Model
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'tenant_id' => 'integer',
|
||||
'tid' => 'integer',
|
||||
'org_name' => 'string',
|
||||
'org_code' => 'string',
|
||||
'parent_id' => 'integer',
|
||||
|
||||
54
app/model/System/AdminUser.php
Normal file
54
app/model/System/AdminUser.php
Normal file
@ -0,0 +1,54 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006-2018 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model\System;
|
||||
|
||||
use think\Model;
|
||||
use think\model\concern\SoftDelete;
|
||||
|
||||
/**
|
||||
* 文章分类模型
|
||||
*/
|
||||
class AdminUser extends Model
|
||||
{
|
||||
// 启用软删除
|
||||
use SoftDelete;
|
||||
|
||||
// 数据库表名
|
||||
protected $name = 'mete_admin_user';
|
||||
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'tid' => 'integer',
|
||||
'account' => 'string',
|
||||
'password' => 'string',
|
||||
'name' => 'string',
|
||||
'birth' => 'date',
|
||||
'phone' => 'string',
|
||||
'email' => 'string',
|
||||
'qq' => 'string',
|
||||
'sex' => 'integer',
|
||||
'avatar' => 'string',
|
||||
'group_id' => 'integer',
|
||||
'login_count' => 'integer',
|
||||
'last_login_ip' => 'string',
|
||||
'status' => 'integer',
|
||||
'api_key' => 'string',
|
||||
'api_key_expire' => 'datetime',
|
||||
'api_key_status' => 'integer',
|
||||
'create_time' => 'datetime',
|
||||
'update_time' => 'datetime',
|
||||
'delete_time' => 'datetime',
|
||||
];
|
||||
|
||||
|
||||
}
|
||||
@ -9,7 +9,7 @@
|
||||
// | Author: Liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model;
|
||||
namespace app\model\System;
|
||||
|
||||
use think\Model;
|
||||
use think\model\concern\SoftDelete;
|
||||
@ -28,6 +28,7 @@ class AdminUserGroup extends Model
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'tid' => 'integer',
|
||||
'name' => 'string',
|
||||
'status' => 'integer',
|
||||
'rights' => 'string',
|
||||
@ -9,7 +9,7 @@
|
||||
// | Author: Liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model;
|
||||
namespace app\model\System;
|
||||
|
||||
use think\Model;
|
||||
use think\model\concern\SoftDelete;
|
||||
@ -23,11 +23,13 @@ class Files extends Model
|
||||
use SoftDelete;
|
||||
|
||||
// 数据库表名
|
||||
protected $name = 'mete_files';
|
||||
protected $name = 'mete_system_files';
|
||||
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'tid' => 'integer',
|
||||
'uid' => 'integer',
|
||||
'name' => 'string',
|
||||
'type' => 'integer',
|
||||
'cate' => 'integer',
|
||||
@ -9,7 +9,7 @@
|
||||
// | Author: Liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model;
|
||||
namespace app\model\System;
|
||||
|
||||
use think\Model;
|
||||
use think\model\concern\SoftDelete;
|
||||
@ -23,11 +23,13 @@ class FilesCategory extends Model
|
||||
use SoftDelete;
|
||||
|
||||
// 数据库表名
|
||||
protected $name = 'mete_files_category';
|
||||
protected $name = 'mete_system_files_category';
|
||||
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'tid' => 'integer',
|
||||
'uid' => 'integer',
|
||||
'name' => 'string',
|
||||
'create_time' => 'datetime',
|
||||
'update_time' => 'datetime',
|
||||
@ -9,7 +9,7 @@
|
||||
// | Author: Liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
namespace app\model;
|
||||
namespace app\model\System;
|
||||
|
||||
use think\Model;
|
||||
use think\model\concern\SoftDelete;
|
||||
@ -23,18 +23,26 @@ class OperationLog extends Model
|
||||
use SoftDelete;
|
||||
|
||||
// 数据库表名
|
||||
protected $name = 'mete_operation_log';
|
||||
protected $name = 'mete_system_operation_log';
|
||||
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'tid' => 'integer',
|
||||
'user_id' => 'integer',
|
||||
'module' => 'string',
|
||||
'action' => 'string',
|
||||
'method' => 'string',
|
||||
'url' => 'string',
|
||||
'ip' => 'string',
|
||||
'user_agent' => 'string',
|
||||
'request_data' => 'string',
|
||||
'response_data' => 'string',
|
||||
'status' => 'integer',
|
||||
'error_message' => 'string',
|
||||
'execution_time' => 'float',
|
||||
'create_time' => 'datetime',
|
||||
'update_time' => 'datetime',
|
||||
'delete_time' => 'datetime',
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
@ -24,7 +24,7 @@ class TenantDomain extends Model
|
||||
// 字段类型转换
|
||||
protected $type = [
|
||||
'id' => 'integer',
|
||||
'tenant_id' => 'integer',
|
||||
'tid' => 'integer',
|
||||
'sub_domain' => 'string',
|
||||
'main_domain' => 'string',
|
||||
'full_domain' => 'string',
|
||||
|
||||
@ -6,6 +6,8 @@ namespace app\service;
|
||||
|
||||
use think\facade\Db;
|
||||
use think\facade\Config;
|
||||
use app\model\Cms\TemplateSiteConfig;
|
||||
use app\model\Cms\TemplateThemeData;
|
||||
|
||||
/**
|
||||
* 模板服务类
|
||||
@ -125,8 +127,7 @@ class ThemeService
|
||||
if ($tid > 0) {
|
||||
$where[] = ['tid', '=', $tid];
|
||||
}
|
||||
$config = Db::name('mete_template_site_config')
|
||||
->where($where)
|
||||
$config = TemplateSiteConfig::where($where)
|
||||
->find();
|
||||
return $config['value'] ?? 'default';
|
||||
} catch (\Exception $e) {
|
||||
@ -162,19 +163,18 @@ class ThemeService
|
||||
if ($tid > 0) {
|
||||
$where[] = ['tid', '=', $tid];
|
||||
}
|
||||
$config = Db::name('mete_template_site_config')
|
||||
->where($where)
|
||||
$config = TemplateSiteConfig::where($where)
|
||||
->find();
|
||||
|
||||
$now = date('Y-m-d H:i:s');
|
||||
|
||||
if ($config) {
|
||||
Db::name('mete_template_site_config')->where('id', $config['id'])->update([
|
||||
TemplateSiteConfig::where('id', $config['id'])->update([
|
||||
'value' => $themeKey,
|
||||
'update_time' => $now
|
||||
]);
|
||||
} else {
|
||||
Db::name('mete_template_site_config')->insert([
|
||||
TemplateSiteConfig::insert([
|
||||
'key' => 'current_theme',
|
||||
'value' => $themeKey,
|
||||
'create_time' => $now,
|
||||
@ -203,8 +203,7 @@ class ThemeService
|
||||
if ($tid > 0) {
|
||||
$where[] = ['tid', '=', $tid];
|
||||
}
|
||||
$themeData = Db::name('mete_template_theme_data')
|
||||
->where($where)
|
||||
$themeData = TemplateThemeData::where($where)
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
@ -246,22 +245,20 @@ class ThemeService
|
||||
if ($tid > 0) {
|
||||
$where[] = ['tid', '=', $tid];
|
||||
}
|
||||
$existing = Db::name('mete_template_theme_data')
|
||||
->where($where)
|
||||
$existing = TemplateThemeData::where($where)
|
||||
->find();
|
||||
|
||||
$value = is_array($fieldValue) ? json_encode($fieldValue, JSON_UNESCAPED_UNICODE) : $fieldValue;
|
||||
$now = date('Y-m-d H:i:s');
|
||||
|
||||
if ($existing) {
|
||||
Db::name('mete_template_theme_data')
|
||||
->where('id', $existing['id'])
|
||||
TemplateThemeData::where('id', $existing['id'])
|
||||
->update([
|
||||
'field_value' => $value,
|
||||
'update_time' => $now
|
||||
]);
|
||||
} else {
|
||||
Db::name('mete_template_theme_data')->insert([
|
||||
TemplateThemeData::insert([
|
||||
'tid' => $tid,
|
||||
'theme_key' => $themeKey,
|
||||
'field_key' => $fieldKey,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user