facotr 管理员接口 修改 表添加 unique字段用来标识 总管理员 有此标识的不能做删除 和 更新给处理

This commit is contained in:
oldHome 2025-06-27 19:17:03 +08:00
parent ac4fe6c172
commit 5bf54093f9

View File

@ -193,53 +193,83 @@ class AdminController extends PublicController
*/
public function saveAdmin()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
// 总管理员 可接收任何shop_id非总管理员只能调用自身shop_id否则会中断
$this->isPower();
if ($_REQUEST['id'] && $_REQUEST['uname'] && $_REQUEST['shop_id']) {
//data数据
$adminDb = D('adminuser');
// 查询当前管理员数据(用以比对 role 和判断 unique
$currentAdmin = $adminDb->where([
'id' => $_REQUEST['id'],
'shop_id' => $_REQUEST['shop_id']
])->find();
if (!$currentAdmin) {
echo json_encode(['status' => 0, 'msg' => '用户不存在']);
exit;
}
$data['uname'] = $_REQUEST['uname'];
if ($_REQUEST['pwd']) {
$data['pwd'] = MD5(MD5($_REQUEST['pwd']));
}
//如果有上传图片得操作 执行如下
if ($_REQUEST['upFile']) { //有新图上传 则把图片从temp目录 复制到目标目录
if (!(copy("Data/UploadFiles/temp/" . $_REQUEST['upFile'], "Data/UploadFiles/photo/" . $_REQUEST['upFile']))) {
echo json_encode(array('status' => 0, 'msg' => '图片复制失败'));
// 上传头像处理
if ($_REQUEST['upFile']) {
$tempPath = "Data/UploadFiles/temp/" . $_REQUEST['upFile'];
$targetPath = "Data/UploadFiles/photo/" . $_REQUEST['upFile'];
if (!copy($tempPath, $targetPath)) {
echo json_encode(['status' => 0, 'msg' => '图片复制失败']);
exit;
}
if ($_REQUEST['oldFile']) { //存在老图 既删掉老图 没有成功的话 将刚才复制到此目录得新图也一并删除
if (!(unlink("Data/UploadFiles/photo/" . basename($_REQUEST['oldFile'])))) {
unlink("Data/UploadFiles/photo/" . $_REQUEST['upFile']);
echo json_encode(array('status' => 0, 'msg' => '原图删除失败'));
if ($_REQUEST['oldFile']) {
$oldFilePath = "Data/UploadFiles/photo/" . basename($_REQUEST['oldFile']);
if (!unlink($oldFilePath)) {
unlink($targetPath); // 删除新图
echo json_encode(['status' => 0, 'msg' => '原图删除失败']);
exit;
}
}
$data['photo'] = json_encode(array($_REQUEST['upFile'])); //序列化储存
$data['photo'] = json_encode([$_REQUEST['upFile']]);
}
//如果有角色变更
if (isset($_REQUEST['role'])) {
$validRoles = [5, 6]; //5:商家管理员 6:商家编辑
if (!in_array($_REQUEST['role'], $validRoles)) {
echo json_encode(array('status' => 0, 'msg' => '无效的角色'));
// 如果提交的 role 与数据库中的 role 不一致,视为试图变更角色
if (isset($_REQUEST['role']) && $_REQUEST['role'] != $currentAdmin['role']) {
if ($currentAdmin['unique'] == 1) {
echo json_encode(['status' => 0, 'msg' => '总管理员权限不允许更改角色']);
exit;
}
$validRoles = [5, 6]; // 商家管理员、商家编辑
if (!in_array($_REQUEST['role'], $validRoles)) {
echo json_encode(['status' => 0, 'msg' => '无效的角色']);
exit;
}
$data['role'] = $_REQUEST['role'];
}
//where条件
$where['id'] = $_REQUEST['id'];
$where['shop_id'] = $_REQUEST['shop_id'];
//录入数据库
$adminDb = D('adminuser');
// where 条件
$where = [
'id' => $_REQUEST['id'],
'shop_id' => $_REQUEST['shop_id']
];
if ($adminDb->where($where)->data($data)->save()) {
echo json_encode(array('status' => 1, 'msg' => '更新成功'));
echo json_encode(['status' => 1, 'msg' => '更新成功']);
} else {
echo json_encode(array('status' => 0, 'msg' => '更新失败'));
echo json_encode(['status' => 0, 'msg' => '更新失败']);
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
echo json_encode(['status' => 0, 'msg' => '参数有误']);
}
}
/**
* @description: 管理员账号删除 ps:只改 del字段标识 并非真正删除
*/
@ -250,30 +280,46 @@ class AdminController extends PublicController
}
if ($_REQUEST['idArr']) {
// 解构id组
// 解构 id
$idArr = is_array($_REQUEST['idArr'])
? $_REQUEST['idArr']
: explode(',', strval($_REQUEST['idArr']));
// 判断是否包含自身 ID
if (in_array($this->admin_id, $idArr)) {
echo json_encode(array('status' => 0, 'msg' => '不能删除自身'));
echo json_encode(['status' => 0, 'msg' => '不能删除自身']);
exit;
}
/**删除业务逻辑 */
$where['id'] = array("in", $idArr);
//data数据
$data['del'] = '1';
//录入数据库
// 查询是否包含 unique = 1 的管理员(总管理员)
$adminDb = D('adminuser');
$checkMap['id'] = ['in', $idArr];
if ($this->tokenShop_id != C('powerId')) {
$checkMap['shop_id'] = $this->tokenShop_id;
}
$admins = $adminDb->where($checkMap)->select();
foreach ($admins as $admin) {
if ($admin['unique'] == 1) {
echo json_encode(['status' => 0, 'msg' => '不能删除总管理员']);
exit;
}
}
// 执行逻辑删除
$where['id'] = ['in', $idArr];
$data['del'] = '1';
if ($adminDb->where($where)->save($data)) {
echo json_encode(array('status' => 1, 'msg' => '删除成功'));
echo json_encode(['status' => 1, 'msg' => '删除成功']);
} else {
echo json_encode(array('status' => 0, 'msg' => '删除失败'));
echo json_encode(['status' => 0, 'msg' => '删除失败']);
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
echo json_encode(['status' => 0, 'msg' => '参数有误']);
}
}
/**
* @description: 向管理员用户发布公告
*/