Department.php 4.42 KB
<?php
/**
 * Department.php
 * 部门接口
 * @author Deepseath
 * @version $Id$
 */
namespace deepseath\hris\Api;

class Department
{
    /**
     * 基类服务对象
     * @var \deepseath\hris\Hris
     */
    protected $service = null;

    /**
     * 部门删除状态:正常(未删除)
     * @var integer
     */
    const DELETE_NO = 1;
    /**
     * 部门删除状态:已删除
     * @var integer
     */
    const DELETE_YES = 2;

    /**
     * 畅移本地顶级部门(智慧零售部)的 id
     * md5('2022-04-27 17:00:01') —— 该值没具体意义主要就是一个在hris识别“智慧零售事业部”的标识<br>
     * 该值的来源是,首次导给 hris 全量部门数据时,以当时时间md5做顶级部门标识,方便 hris 导入处理
     * @var string
     */
    const CY_TOP_ID = '6e691aaf7d16f7b5199cce086e781368';

    public function __construct(\deepseath\hris\Hris $service)
    {
        $this->service = $service;
    }

    /**
     * 获取部门信息
     * @desc 查询HRIS中的部门基础信息
     * @param array $params
     * <pre>
     *  orgUnitZH       String  一级部门(中文)
     *  buFunctionZH    String  二级部门(中文)
     *  departmentZH    String  三级部门(中文)
     *  teamZH          String  四级部门(中文)
     * </pre>
     * @return array
     * <strong>map</strong>
     * <pre>
     *  orgUnitId     string  一级部门id
     *  orgUnitZH     string  一级部门名称中文
     *  orgUnitEN     string  一级部门名称英文
     *  buFunctionId  string  二级部门id
     *  buFunctionZH  string  二级部门名称中文
     *  buFunctionEN  string  二级部门名称英文
     *  departmentId  string  三级部门id
     *  departmentZH  string  三级部门名称中文
     *  departmentEN  string  三级部门名称英文
     *  teamId        string  四级部门id
     *  teamZH        string  四级部门名称中文
     *  teamEN        string  四级部门名称英文
     * </pre>
     */
    public function branchList(array $params) : array
    {
        $params = array_merge([
            'orgUnitZH' => '',
            'buFunctionZH' => '',
            'departmentZH' => '',
            'teamZH' => ''
        ], $params);

        $result = $this->service->apiRequest('get', 'branchList', $params);
        return isset($result['branchList']) ? $result['branchList'] : (isset($result['data']) ? $result['data'] : []);
    }

    /**
     * 新增OR更新部门
     * @desc 新增OR更新HRIS中的部门
     * @param array $params
     * <pre>
     *  branchNo        String  畅移部门ID
     *  parentBranchNo  String  畅移上级部门ID
     *  nameZH          String  部门名称(中文)
     *  nameEN          String  部门名称(英文)
     * </pre>
     * @return array
     * <pre>
     *  affectRow  string  受影响的行数
     *  branchId   string  hris中的部门ID
     * </pre>
     */
    public function branchAddOrUpdate(array $params) : array
    {
        $params = array_merge([
            'branchNo' => '',
            'parentBranchNo' => '',
            'nameZH' => '',
            'nameEN' => '',
            'deleted' => self::DELETE_NO
        ], $params);
        if ($params['parentBranchNo'] === '') {
            // 如果父级部门 id 不存在,则认为更新的是畅移的一级部门(在 hris 是属于“智慧零售事业部”下的二级部门)
            // 使用虚拟的“智慧零售部” id 做为父级 id
            $params['parentBranchNo'] = self::CY_TOP_ID;
        }

        $result = $this->service->apiRequest('post', 'branchAddOrUpdate', $params);

        return $result;
    }

    /**
     * 删除部门
     * @desc 删除HRIS中的部门
     * @param array $params
     * <pre>
     *  branchNo        String  畅移部门ID
     *  parentBranchNo  String  畅移上级部门ID
     *  nameZH          String  部门名称(中文)
     *  nameEN          String  部门名称(英文)
     * </pre>
     * @return array
     * <pre>
     *  affectRow  string  受影响的行数
     *  branchId   string  hris中的部门ID
     * </pre>
     */
    public function branchDelete(array $params) : array
    {
        $params = array_merge([
            'branchNo' => '',
            'parentBranchNo' => '',
            'nameZH' => '',
            'nameEN' => '',
            'deleted' => self::DELETE_YES
        ], $params);
        return $this->branchAddOrUpdate($params);
    }
}