Files
think-plugs-staff/src/controller/User.php
Jerry Yan 2aacc5420b fix(user): 修复用户更新时的逻辑错误
- 修复了当系统用户存在时的保存逻辑
- 添加了当系统用户不存在时的创建逻辑
- 确保用户数据能够正确保存到数据库中
2025-12-26 12:51:30 +08:00

160 lines
4.6 KiB
PHP

<?php
namespace jerryyan\staff\controller;
use jerryyan\staff\model\StaffDept;
use jerryyan\staff\model\StaffUser;
use think\admin\Controller;
use think\admin\helper\QueryHelper;
use think\admin\model\SystemAuth;
use think\admin\model\SystemUser;
/**
* 部门员工管理
*/
class User extends Controller
{
/**
* 部门员工管理
* @menu true
* @auth true
* @return null
*/
public function index()
{
return StaffUser::mQuery()->layTable(function () {
$this->title = '部门员工';
$this->dept = StaffDept::tree();
}, static function (QueryHelper $query) {
$query->equal('dept_id,status')->like('name');
$query->with('dept')->append(['dept_name']);
});
}
/**
* 添加员工
* @auth true
* @menu true
* @return void
*/
public function add()
{
StaffUser::mForm('form');
}
/**
* 编辑员工
* @auth true
* @return void
*/
public function edit()
{
StaffUser::mForm('form');
}
protected function _form_filter(array &$data)
{
if ($this->request->isPost()) {
// 检查资料是否完整
$this->_vali([
'name.require' => '用户名称不能为空!',
'phone.require' => '手机号码不能为空!',
'phone.mobile' => '手机号码格式错误!',
'email.email' => '邮箱地址格式错误!',
'dept_id.require' => '部门名称不能为空!',
'authorize.require' => '未配置权限!'
]);
if (!empty($data['password'])) {
if (strlen($data['password']) < 6) {
$this->error('密码长度不能少于6位!');
};
}
} else {
if (!empty($data['id'])) {
$user = SystemUser::mk()->find($data['id']);
$data['authorize'] = str2arr($user['authorize'] ?? '');;
} else {
$data['authorize'] = [];
}
$data['dept_id'] = $data['dept_id'] ?? '';
$this->auths = SystemAuth::items();
$this->depts = StaffDept::items();
}
}
protected function _form_result(bool $state, $data)
{
if ($state) {
$user = [];
// 检查账号是否重复
$map = ['username' => $data['phone'], 'is_deleted' => 0];
$systemUser = SystemUser::mk()->where($map)->findOrEmpty();
if ($systemUser->isExists() && $systemUser->id != $data['id']) {
$this->error("账号已经存在,请使用其它账号!");
}
$user['id'] = $data['id'];
$user['username'] = $data['phone'];
if (!empty($data['password'])) {
$user['password'] = md5($data['password']);
}
$user['nickname'] = $data['name'];
$user['contact_mail'] = $data['email'];
// 处理上传的权限格式
$user['authorize'] = arr2str($data['authorize'] ?? []);
if (!empty($data['id'])) {
$systemUser = SystemUser::mk()->findOrEmpty($data['id']);
if ($systemUser->isExists()) {
$systemUser->save($user);
} else {
SystemUser::mk()->save($user);
}
} else {
SystemUser::mk()->save($user);
}
}
}
/**
* 启用禁用员工
* @return void
*/
public function state()
{
StaffUser::mSave($this->_vali([
'status.in:0,1' => '状态值范围异常!',
'status.require' => '状态值不能为空!',
]));
}
protected function _state_save_result(bool $state, $data)
{
if ($state) {
$systemUser = SystemUser::mk()->findOrEmpty($this->request->post('id'));
if ($systemUser->isExists()) {
$systemUser->status = $this->request->post('status');
$systemUser->save();
}
}
}
/**
* 删除员工
* @auth true
* @return void
*/
public function del()
{
StaffUser::mDelete();
}
protected function _del_delete_result(bool $state)
{
if ($state) {
$systemUser = SystemUser::mk()->findOrEmpty($this->request->post('id'));
if ($systemUser->isExists()) {
$systemUser->is_deleted = 1;
$systemUser->save();
}
}
}
}