智慧教务系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

197 lines
4.6 KiB

<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\model\personnel;
use core\base\BaseModel;
use think\model\concern\SoftDelete;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
/**
* 人力资源-人员模型
* Class Personnel
* @package app\model\personnel
*/
class Personnel extends BaseModel
{
use SoftDelete;
// 人员状态常量
const STATUS_NORMAL = 1; // 正常
const STATUS_DISABLED = 0; // 禁用
const STATUS_PENDING_APPROVAL = 2; // 待审批
/**
* 数据表主键
* @var string
*/
protected $pk = 'id';
/**
* 模型名称
* @var string
*/
protected $name = 'personnel';
/**
* 定义软删除标记字段.
* @var string
*/
protected $deleteTime = 'deleted_at';
/**
* 定义软删除字段的默认值.
* @var int
*/
protected $defaultSoftDelete = 0;
/**
* 搜索器:人力资源-人员姓名
* @param $value
* @param $data
*/
public function searchNameAttr($query, $value, $data)
{
if ($value) {
$query->where("name", "like", "%".$value."%");
}
}
/**
* 搜索器:人力资源-人员性别
* @param $value
* @param $data
*/
public function searchGenderAttr($query, $value, $data)
{
if ($value) {
$query->where("gender", $value);
}
}
/**
* 搜索器:人力资源-人员电话
* @param $value
* @param $data
*/
public function searchPhoneAttr($query, $value, $data)
{
if ($value) {
$query->where("phone", "like", "%".$value."%");
}
}
/**
* 搜索器:人力资源-人员家庭住址
* @param $value
* @param $data
*/
public function searchAddressAttr($query, $value, $data)
{
if ($value) {
$query->where("address", "like", "%".$value."%");
}
}
/**
* 搜索器:人力资源-人员学历
* @param $value
* @param $data
*/
public function searchEducationAttr($query, $value, $data)
{
if ($value) {
$query->where("education", $value);
}
}
/**
* 搜索器:人力资源-人员员工编号
* @param $value
* @param $data
*/
public function searchEmployeeNumberAttr($query, $value, $data)
{
if ($value) {
$query->where("employee_number", $value);
}
}
/**
* 搜索器:人力资源-人员员工状态
* @param $value
* @param $data
*/
public function searchStatusAttr($query, $value, $data)
{
if ($value) {
$query->where("status", $value);
}
}
/**
* 搜索器:人力资源-人员创建时间
* @param $value
* @param $data
*/
public function searchCreateTimeAttr($query, $value, $data)
{
if ($value && is_array($value) && count($value) == 2) {
// 日期范围查询
$query->where("create_time", ">=", $value[0])
->where("create_time", "<=", $value[1]);
} elseif ($value) {
// 单个日期查询(按天)
$query->whereTime("create_time", "=", $value);
}
}
/**
* 状态字段转化
* @param $value
* @param $data
* @return string
*/
public function getStatusNameAttr($value, $data)
{
if (empty($data['status']) && $data['status'] !== 0) return '';
return match ($data['status']) {
self::STATUS_NORMAL => '正常',
self::STATUS_DISABLED => '禁用',
self::STATUS_PENDING_APPROVAL => '待审批',
default => '未知状态'
};
}
public function sys_user()
{
return $this->hasOne(\app\model\sys\SysUser::class, 'uid', 'sys_user_id');
}
/**
* 关联校区表
* @return HasOne
*/
public function campus()
{
return $this->hasOne(\app\model\campus\Campus::class, 'id', 'campus_id')
->joinType('left')
->withField('id,campus_name')
->bind(['campus_name']);
}
}